python-vlc 在启动之间切换播放媒体

     2023-02-19     82

关键词:

【中文标题】python-vlc 在启动之间切换播放媒体【英文标题】:python-vlc switching playback media between launches 【发布时间】:2022-01-20 16:39:23 【问题描述】:

我正在尝试设置一个系统,让我的开始屏幕视频循环播放,直到按下 2 个按钮中的 1 个(GPIO 按钮)。

然后,播放变为有字幕或无字幕的视频。 播放完成后,它会恢复为初始屏幕视频。

我在这里有额外的代码,只是为了计算每天的播放次数以进行分析。我的测试设备也只连接了 1 个按钮,这就是从未使用 GPIO 18 的原因。实现将与 GPIO 17 相同,因此一旦其中一个工作,另一个将不难匹配。

问题

当我启动脚本时,播放的媒体并不总是 splash。该脚本还会在播放结束时关闭窗口,并打开一个新窗口来播放媒体。我相信这可能是由于没有建立 xwindow(用于树莓派)。

有什么建议吗?

#Vars

GPIO.setmode(GPIO.BCM)

GPIO.setup(17,GPIO.IN)
GPIO.setup(18,GPIO.IN)


update = True #Update to false to exit

def Main():
    # Setup logs
    print(date.today())
    # Media Paths
    path = "/home/pi/Videos/"
    nosubs = path+"Content-NoSubs.mp4"
    subs = path+"Content-Subtitles.mp4"
    splash = path+"StartScreen.mp4"
    Instance = vlc.Instance("-f")
    playlist = set([splash,subs,nosubs])
    url = [str(splash),str(subs),str(nosubs)] #Yes, this looks pretty redundant. Hopefully it's not.



    #Setup the player
    player = Instance.media_list_player_new()
    Media = Instance.media_new(url[1])
    Media_list = Instance.media_list_new(playlist)
    Media.get_mrl()
    player.set_media_list(Media_list)

    playerState = 'State.NothingSpecial',
 'State.Opening',
 'State.Buffering',
 'State.Playing',
 'State.Paused',
 'State.Stopped',
 'State.Ended',
 'State.Error'

    subsPlayed = 0
    nosubsPlayed = 0
    active = 0
    playingMedia = 0

    while update:
        input = GPIO.input(17)
        state = str(player.get_state())

        if(state == playerState[0]):
            player.play_item_at_index(0)
            player.set_playback_mode(2)
    
        if(state == playerState[7]):
            player.play_item_at_index(0)
            playingMedia = 0
        
        if input == 1 and playingMedia == 0:
            playingMedia = 1
            player.play_item_at_index(1)
            active +=1
            nosubsPlayed +=1
        
        print(playingMedia)

    with open(str(date.today()))+'.txt','w' as file:
        file.write("Active Views: " + active)
        file.write("SubsPlayed: " + subsPlayed)
        file.write("No Subs Played: " + nosubsPlayed)
    
Main()

【问题讨论】:

【参考方案1】:

所以我找到了解决方案,但没有找到问题的根源。


    # Make my media paths into vlc.Media Objects
    nosubs = vlc.Media(path+"Content-NoSubs.mp4")
    subs = vlc.Media(path+"Content-Subtitles.mp4")
    splash = vlc.Media(path+"SplashScreen.mp4")

    #Setup the player
    player = Instance.media_list_player_new()
    Media_list = Instance.media_list_new()
    Media_list.add_media(splash)
    Media_list.add_media(subs)
    Media_list.add_media(nosubs)
    player.set_media_list(Media_list)
    Media_list.lock()

通过将播放功能从play_item_at_index(int) 切换到play_item(media),在我的列表中按名称设置每个媒体会有所帮助

仍然不确定为什么这是一种随机化。我的猜测是它根据播放改变了媒体在列表中的位置。

我的下一步是调整它以关闭 media_player 并将播放嵌入到 tkinter 窗口中。

【讨论】:

使用 Windows Phone 7 媒体播放器在页面之间共享媒体播放

...想要达到的目标:我想在WP7应用程序中从mp3和/或aacHTTP流启动音频播放我想从特定的“PhoneApplicationPage”实例开始播放,但仍然允许导航到其他页面, 查看详情

媒体播放控制 windows phone 8

...我希望用户能够在不退出MediaPlayerLauncher的情况下在视频之间切换。因此,我正在考虑在windowsphone为视频显示的3个控件(倒带、暂停、快进)之上添加第四个控 查看详情

如何从 python-VLC 获取音频样本

】如何从python-VLC获取音频样本【英文标题】:Howtogetaudiosamplesfrompython-VLC【发布时间】:2021-01-1022:53:49【问题描述】:我需要什么我正在开发带有样本分析器的音乐播放器。我的问题是我目前正在使用pydub从歌曲中获取样本,但... 查看详情

在同时播放两个音频文件时启动其中一个静音

】在同时播放两个音频文件时启动其中一个静音【英文标题】:Startoneoftheaudiofilesmutedwhenplayingtwoatthesametime【发布时间】:2017-11-0900:36:14【问题描述】:我有两个音频文件同时开始,还有一个切换按钮,通过静音另一个来在两者... 查看详情

在Android上从流媒体网页启动音频播放器的方法

】在Android上从流媒体网页启动音频播放器的方法【英文标题】:MethodforlaunchingaudioplayeronAndroidfromwebpageforstreamingmedia【发布时间】:2011-06-2615:12:33【问题描述】:要链接到SHOUTcast/HTTP互联网广播流,通常您会链接到播放列表文件,... 查看详情

-Roblox- 在播放器和部件之间切换时出现某种相机故障

】-Roblox-在播放器和部件之间切换时出现某种相机故障【英文标题】:-Roblox-Somesortofcameraglitchwhenswitchingbetweenplayerandpart【发布时间】:2017-04-2121:36:08【问题描述】:目前我正在制作一个游戏,你在键盘上点击“L”,它会变成你可... 查看详情

使用 python-vlc 和 pafy 的 python 脚本出错

】使用python-vlc和pafy的python脚本出错【英文标题】:Errorinpythonscriptusingpython-vlcandpafy【发布时间】:2022-01-0114:53:56【问题描述】:最近我创建了一个python脚本来使用pafy和python-vlc播放youtube视频。下面的代码是脚本:#importingvlcmodulei... 查看详情

jQuery - 带有视频的标签...当我在标签之间切换时如何让视频停止播放?

】jQuery-带有视频的标签...当我在标签之间切换时如何让视频停止播放?【英文标题】:jQuery-Tabwithvideos...howdoIgetvideostostopplayingwhenIswitchbetweentabs?【发布时间】:2012-02-0215:42:18【问题描述】:我是jQuery新手,我设法创建了一个选项... 查看详情

在电影之间切换时 AirPlay 闪烁

】在电影之间切换时AirPlay闪烁【英文标题】:AirPlayflickeringwhenswitchingbetweenmovies【发布时间】:2013-01-0712:34:52【问题描述】:我有一个在表格视图中显示电影列表的应用。当我在设备上一个接一个地播放它们时,效果非常好。但... 查看详情

在视频流之间切换

】在视频流之间切换【英文标题】:switchbetweenvideostreaming【发布时间】:2012-11-2315:32:41【问题描述】:我正在努力在多个直播流之间切换。例如,我有五个实时流媒体服务器流式传输(HTTP或RTSP),我想在这(五个)流式传输源... 查看详情

如何在耳机的两个芽之间切换音频输出

】如何在耳机的两个芽之间切换音频输出【英文标题】:Howtoswitchaudiooutputbetweenthetwobudsofheadphones【发布时间】:2013-12-2006:22:21【问题描述】:我的应用程序需要一个功能,根据用户的选择,声音只能通过耳机的一侧。即声音可以... 查看详情

Windows:通过单个批处理文件启动/停止(切换)便携式 XAMPP。在多个 XAMPP 之间切换

】Windows:通过单个批处理文件启动/停止(切换)便携式XAMPP。在多个XAMPP之间切换【英文标题】:Windows:start/stop(toggle)portableXAMPPviasinglebatchfile.SwitchbetweenmultipleXAMPPs【发布时间】:2016-01-2105:08:18【问题描述】:我的本​​地windows... 查看详情

如何从启动页面在不同的 tkinter 画布之间切换并返回子画布中的启动页面

】如何从启动页面在不同的tkinter画布之间切换并返回子画布中的启动页面【英文标题】:Howtoswitchbetweendifferenttkintercanvasesfromastart-uppageandreturnbacktostart-uppageinsub-canvas【发布时间】:2020-11-1023:52:02【问题描述】:我创建了一个start-... 查看详情

当 iTunes 从网络链接启动时,Phonegap 媒体对象停止播放

】当iTunes从网络链接启动时,Phonegap媒体对象停止播放【英文标题】:PhonegapMediaObjectstopsplayingwheniTuneslaunchedfromweb-link【发布时间】:2013-03-1314:25:03【问题描述】:我们有一个Phonegap应用程序(目前仅适用于iPhone),它同时使用HTML... 查看详情

AVAudioSession 在混合和非混合模式之间切换

】AVAudioSession在混合和非混合模式之间切换【英文标题】:AVAudioSessionswitchingbetweenmixedandnon-mixedmodes【发布时间】:2015-10-2808:44:49【问题描述】:我有一个可以显示视频的应用,我想要以下行为。当视频首次出现在屏幕上并开始播... 查看详情

如何从 .NET 应用程序启动默认媒体播放器?

】如何从.NET应用程序启动默认媒体播放器?【英文标题】:HowcanIlaunchthedefaultmediaplayerfroma.NETapplication?【发布时间】:2008-11-2509:30:14【问题描述】:我需要从我的c#.NET应用程序中的URL启动媒体文件。有什么方法可以在.NET中本地执... 查看详情

chromecast 自定义接收器 - 播放列表在没有“onLoad”动画的情况下推进媒体

...:使用git上的示例,我从在“发送者”端实现的播放列表切换到示例playlist的副本。(接收端播放列表)工作正常,但 查看详情

android车载应用开发与分析-车载多媒体-多媒体应用架构与mediasession框架(代码片段)

...我们就需要把Player放置在Service中,那么界面与播放器之间通信就非常值得研究了。很长一段时间里,都是由Service提供一个Binder来实现与播放器之间的通信。但是往往下拉的状态栏和桌面的Widget都需要与Service之间进行通... 查看详情