【发布时间】:2014-05-21 08:30:31
【问题描述】:
OMXPlayer 是目前唯一支持 GPU 加速的树莓派播放器。不幸的是,它不支持播放列表,大约需要 2 秒才能启动,而且我需要能够播放两个或更多视频,并且它们之间没有任何明显的间隙。
我围绕它编写了一个简单的 python 包装器,以便在每次当前视频结束时启动一个新的 OMXPlayer 实例。这适用于大型视频,但是当您的视频时长约为 10 秒时,它会变得非常烦人。
我一直在摆弄命名管道并得到了一些结果:差距下降到 1.4 秒,但这仍然比我想要的要多。
这是我当前的代码:
(...)
video1 = "/home/user/video1.mp4"
video2 = "/home/user/video2.mp4"
pipe1 = "/tmp/fifo1"
pipe2 = "/tmp/fifo2"
payload = 'exec omxplayer --vol %s -o "%s" "%s" < %s' % (0, "hdmi", video1, pipe1)
start = time.time()
p1 = subprocess.Popen(payload, stdout=open('/dev/null', 'w'), shell=True)
payload = 'exec omxplayer --vol %s -o "%s" "%s" < %s &' % (0, "hdmi", video2, pipe2)
p2 = subprocess.Popen(payload, stdout=open('/dev/null', 'w'), shell=True)
# Let the games begin
os.system("echo -n . > %s" % pipe1)
p1.wait()
os.system("echo -n . > %s" % pipe2)
p2.wait()
end = time.time
print("ELAPSED: %g" % (end-start))
我还尝试在打开第一个管道后立即打开第二个管道,然后暂停它(通过管道发送“p”),只是在 p1.wait() 之后立即恢复播放,但第二个视频不会不要停顿。
关于如何减少这种情况的任何建议? 如果有人可以使用 Bash 脚本完成此任务,我也完全赞成。
【问题讨论】:
-
在启动时打开两个进程并保持它们打开听起来不错。这有什么问题?
-
第二个视频不会暂停;两者都将同时开始播放。如果我得了癫痫症,我现在已经死了。
-
真的很想测试一下,但不幸的是我在工作,我的树莓在家里。晚上可以看看,如果之前没有答案...
-
@hek2mgl 管道有问题!在重新创建它们后,我再次尝试了暂停技术,它奏效了。唯一的问题是 a) 第一个视频加载似乎需要更长的时间(有意义)和 b) OMXPlayer 给出第二个视频已暂停的视觉反馈。谢谢!如果你回答我会接受的问题:)
-
呵呵 :) 好的,我已经回答了
标签: python bash video raspberry-pi