OMXPlayer是目前唯一支持GPU加速的Raspberry Pi播放器。不幸的是,它不支持播放列表,大约需要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脚本来解决这个问题,那么我也都是这样做的。
答案 0 :(得分:1)
在启动时打开两个进程并保持打开状态听起来不错。有什么问题?也许管道包含以前测试中的一些垃圾?你应该重新(或冲洗)它们。
您也可以查看匿名管道。对我来说,看起来他们会更适合这里。