我正在使用ffmpeg以“连续流”模式将webm格式的媒体块转换为wav文件。
使用python包装器,我向ffmpeg提供了一个webm块(假设每秒1个块),并且ffmpeg不断写入输出wav(然后,在一个单独的线程中,我正在读取该wav文件并传递新数据向前)。
这在大多数情况下都能正常工作,但是有时候,我会得到这种奇怪的行为:
查看CPU和内存使用情况,这似乎不是问题。
关于什么会导致ffmpeg停止流播放几分钟然后恢复播放的想法? 这种情况可能会在30秒之后,3分钟之后或一个小时的流媒体块之后发生,并且ffmpeg恢复的时间也有所不同。
在我的python代码中,我基本上是打开一个subprocess.Popen()
进程并写入该进程的stdin
,以馈送ffmpeg媒体块。
所以我的代码如下:
ffmpeg_proc = subprocess.Popen('ffmpeg -y -f webm -i - -ac 1 -ar 16000 -f wav /tmp/out.wav', shell=True, stdin=subprocess.PIPE)
for chunk in chunks:
ffmpeg_proc.stdin.write(chunk)
我正在使用python 3.6
和ffmpeg version 2.8.14-0ubuntu0.16.04.1
谢谢!