HTTP实时流式传输(FFmpeg)上的libx264失败

时间:2016-07-11 04:09:25

标签: iphone ffmpeg hls libx264

我希望与HTTP Live Streaming一起投放直播,但我对libx264或其他内容有疑问。

我的硬件和软件环境:

  • Macbook Pro
  • 使用Ubuntu 16.04的VirtualBox
  • NginxFFmpeg(在Ubuntu中)

我能够流式传输静态视频文件(在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 Live Streaming的相应FFmpeg命令(我尝试过FFserver,但有类似cannot rename hls的错误)

谁能解释我的问题?

1 个答案:

答案 0 :(得分:1)

我已经弄明白了!

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