libx264 在 HTTP Live Streaming (FFmpeg) 上失败

libx264 fails on HTTP Live Streaming (FFmpeg)

我想用 HTTP Live Streaming 直播,但 libx264 或其他问题。

我的软硬件环境:

我能够流式传输静态视频文件(在 Ubuntu 中使用 Nginx 和 FFmpeg)。 FFmpeg命令如下:

$ffmpeg -i /my/sample/video.mp4 -codec:v libx264 -f hls /output/file.m3u8

但是当涉及到网络摄像头(直播)时,Mac OS Safari 无法打开流。我使用了以下命令:

$ffmpeg -i /dev/video0 -codec:v libx264 -f hls /output/file.m3u8

我猜是libx264的问题,因为当我使用mpeg2video编码器时,Mac OS Safari确实可以播放流:

$ffmpeg -i /dev/video0 -codec:v mpeg2video -f hls /output/file.m3u8

我知道有一个名为 video4linux2 的库,我应该使用 video4linux2 来捕获我的网络摄像头吗?但是我不知道用于 HTTP 实时流式传输的适当 FFmpeg 命令(我尝试了 FFserver 但出现类似 cannot rename hls)

的错误

谁能解释一下我的问题?

我想通了!

Mac OS Safari无法打开libx264编码的HTTP直播是因为Mac OS中的默认编解码器没有支持libx264的默认输出!

只需将 -pix_fmt yuv420p 添加到 FFmpeg 命令,一切正常:

$ffmpeg -f video4linux2 -i /your/webcam/path -codec:v libx264 -pix_fmt yuv420p /output/file.m3u8