问题
我正在从第三方服务器获取音频和视频块,我希望将这些块通过管道传输到ffmpeg,以根据以下说明创建WebM实时流:
这里他们使用的是来自网络摄像头和麦克风的输入,但我需要使用数据块,所以ffmpeg命令看起来像这样:cmd = [
"ffmpeg",
"-f", "flv", "-i", "video.fifo",
"-f", "s16le", "-ar", "16000", "-ac", "1", "-i", "audio.fifo",
"-map", "0:0",
"-pix_fmt", "yuv420p",
"-c:v", "libvpx-vp9",
"-s", "640x480", "-keyint_min", "40", "-g", "40", "-speed", "6",
"-tile-columns", "4", "-frame-parallel", "1", "-threads", "8",
"-static-thresh", "0", "-max-intra-rate", "300",
"-deadline", "realtime", "-lag-in-frames", "0",
"-error-resilient", "1",
"-b:v", "3000k",
"-f", "webm_chunk",
"-header", self.video_header,
"-chunk_start_index", "1",
"video_360_%d.chk",
"-map", "1:0",
"-c:a", "libvorbis",
"-b:a", "16k", "-ar", "16000",
"-f", "webm_chunk",
"-audio_chunk_duration", "2000",
"-header", self.audio_header,
"-chunk_start_index", "1",
"audio_171_%d.chk"
]
如你所见,我正在使用一个“视频.fifo“和”音频.fifo“文件,因为我认为通过一个命名管道将块导入是一个好主意,但我无法使其工作。我要做的是:
^{pr2}$
所以我先启动子进程,这样它就可以打开fifo文件进行读取。在那之后,我应该可以打开它们进行写作,但我没有。更具体地说,我可以打开第一个,但不能打开第二个。所以也许这和ffmpeg如何处理输入有关,如果输入不止一个,但我不知道。在
问题
如何解决不可打开的命名管道的问题,或者如何在没有命名管道的情况下实现我想要实现的目标。在