如何使用 ffmpeg 通过 http 进行流式传输

我正在使用以下命令流式传输到我的本地主机

ffmpeg -i b.mp4 -r 60 -bufsize 1024k -vcode libtheora -qscale:v 1 -f ogg "udp://@127.0.0.1/video.ogg"

ffmpeg -i b.mp4 -r 60 -bufsize 1024k -vcode libtheora -qscale:v 1 -f ogg "http://127.0.0.1/video.ogg"

两者都工作得很好,至少没有显示任何错误,但是当我尝试播放这样的 http 流时没有,它给了我错误“未找到”

有人可以帮我吗?我完全迷失在这个问题上......当我尝试包含一些端口时,例如 ffmpeg -i b.mp4 -r 60 -bufsize 1024k -vcode libtheora -qscale:v 1 -f ogg "http://127.0.0.1:8980/video.ogg" 为我提供输入/输出错误......我已经在 vlc 上测试了等效命令并且也可以正常工作。

提前致谢

stack overflow How can I use ffmpeg to stream over http
原文答案

答案:

作者头像

将视频放到网络上的最佳方式是:

1 - 使用 ffmpeg 对视频进行转码。 推荐使用 h264,为什么?只有 PC 浏览器(Opera 除外)支持它,效率更高的是 h264 或 VP8 (livpx)。对 ffmpeg 的调用应该是:

h264

ffmpeg -i input -vcodec libx264 -acodec libfaac out.mp4 

vp8

ffmpeg -i input -vcodec libvpx -acodec vorbis out.webm 

Theora

ffmpeg -i input -acodec vorbis -vcodec libtheroa out.ogg 

2 - 安装 Web 服务器,例如 Apache 或 Nginx Lighttpd

sudo apt-get install lighttpd 

3 - 使用 ffmpeg ln -ls 链接 www 文件夹 与文件夹

sudo ln -ls / var / www /   / home / your_user / path_to_out_ffmpeg 

您的方法是错误的,因为当您停止 ffmpeg 时,您的内容不可用。该方法仅适用于实时视频。