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脚本实现这一目标,那么我也全力以赴。

最佳答案

在启动时打开两个进程并保持打开状态听起来不错。这是什么问题?管道中是否包含先前测试中的一些垃圾?您应该重新整理(或冲洗)它们。

您也可以看看匿名管道。对我来说,他们似乎更适合这里。

10-01 11:28