使用命名管道作为 ffmpeg/avconv 的输入进行流式传输

使用命名管道作为 ffmpeg/avconv 的输入进行流式传输

因此,我想要将 .wav(或其他类型的声音)文件提供给命名管道/FIFO,并使用该管道作为 ffmpeg 的输入源(使用 ffserver feed 作为输出)。

据我所知(ffserver 已经在运行,我认为与我的问题无关):

$ mkfifo 音频.wav

$ mplayer -ao pcm:file=audio.wav soundfile.wav &
[2]30864
符号“ff_codec_bmp_tags”在共享对象中具有不同的大小,请考虑重新链接
MPlayer 1.0rc4-4.5.2 (C) 2000-2010 MPlayer 团队

[2]+ 停止 mplayer -ao pcm:file=audio.wav soundfile.wav

$ avconv -f wav -i audio.wav http://127.0.0.1:8090/feed1.ffm
avconv 版本 0.8,版权所有 (c) 2000-2011 Libav 开发人员
  建于 2012 年 3 月 16 日 15:30:40,使用 gcc 4.5.2

(挂在这里,不会输出任何其他内容)

然而,ffmpeg 最终卡在那里,进程似乎挂起,并且 ffmpeg 似乎没有做任何事情,并且最终提要似乎不活动。与 ff_codec_bmp_tags 相关的警告似乎也无关。

我读过一些论坛帖子,其中人们似乎在与此非常接近的事情上取得了成功,但我想我做错了一些事情。如果有人能帮助我解释为什么会发生这种情况,我将非常感激。我应该使用一些标志来指示我正在使用的源是 FIFO 吗?

提前致谢。

答案1

[2]+ Stoppedmplayer 想要使用您的终端,这就是它在后台停止 ( ) 且所有内容都阻塞的原因。我建议为程序使用单独的终端。要么只是普通的终端窗口,要么通过screentmux。另一种选择是使用nohup mplayer.

答案2

mplayer -noconsolecontrols -ao pcm:file=audio.wav soundfile.wav &

相关内容