我一直在尝试使用 ffserver 和 ffmpeg 为我的网络摄像头设置实时流。我曾经(实际上是 4-5 次)成功过,但现在每次我尝试启动服务器时都会出现此错误:缺少此 ffm 所需的音频流。
以下是我启动它的方法:
ffserver -f ffserver.conf & ffmpeg -i /dev/video0 http://localhost:8090/feed1.ffm
我尝试修改ffserver.conf
文件中的许多内容,例如使用不同的视频格式/编解码器,添加 NoAudio 行,将其删除等...我甚至尝试使用包含音频而不是摄像头的视频文件,但它并没有改变任何东西...我无法再让它工作了。
我非常绝望,因为我在网上搜索答案,但没有找到任何东西......我希望这里的一些人可以提供帮助,或者至少提交想法或想法,此时我会采取一切措施!
答案1
所以我自己找到了解决方案!所以你必须在块中添加 NoAudio 以确保它是否强制执行,这取决于你使用的格式。问题是,如果你尝试启动 ffserver 并且它没有工作,由于 ffserver.conf 文件中的一些错误,仅仅纠正它们是不够的,你需要关闭你尝试启动它的 shell,重新打开一个新的 shell 并重试,否则错误会因为一些非常奇怪的原因再次发生。
对于所有错误都一样,您必须更正 ffserver.conf,关闭您尝试启动它的 shell,然后打开一个新的 shell 以尝试再次启动服务器。
希望这可以为大家提供一些帮助。
答案2
就我而言,问题在于我使用的是默认设置ffserver.conf
(在doc
源发行版的目录中以及/etc/ffserver.conf
Ubuntu FFmpeg 包中)。默认设置ffserver.conf
有两个<Stream>
使用 的不同块feed1.ffm
,而我之前没有意识到这一点,因此即使我将第一个流块标记为NoAudio
,第二个流块仍然需要它。
切换到ffserver.conf
仅包含我需要的块和指令的最小版本解决了这个问题。
答案3
您不需要终止 shell 本身(很可能是 bash),只需终止进程ffserver
,然后重新启动它。这通常相当于(在该 shell 窗口中)使用Control- C,Up-Arrow(或Control- P),然后返回。
我使用 Launch(在 Feed 部分)ffmpeg
从文件内部运行,因此重新启动即可。基本的 Launch 行可能如下所示:/etc/ffserver.conf
ffserver
Launch ffmpeg -r 5 -i /dev/video0
要查看是否有任何流浪者在奔跑,请在第二个窗口中使用此命令(相当随意的命令): ps -ef | grep ff