libx264 在 HTTP Live Streaming (FFmpeg) 上失败
libx264 fails on HTTP Live Streaming (FFmpeg)
我想用 HTTP Live Streaming
直播,但 libx264
或其他问题。
我的软硬件环境:
- Mac书临
- VirtualBox 与 Ubuntu 16.04
Nginx
和 FFmpeg
(在 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 实时流式传输的适当 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
我想用 HTTP Live Streaming
直播,但 libx264
或其他问题。
我的软硬件环境:
- Mac书临
- VirtualBox 与 Ubuntu 16.04
Nginx
和FFmpeg
(在 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 实时流式传输的适当 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