使用 FFMPEG 对 h264 进行编码,适用于所有浏览器和设备(windows/mac/iOs/Android)

使用 FFMPEG 对 h264 进行编码,适用于所有浏览器和设备(windows/mac/iOs/Android)

我想用 FFMPEG 将图像编码为 h264 视频文件,该文件可在 Windows 浏览器和 Mac 浏览器以及 iOS/Android 设备上使用,以 HTML5 显示。有没有办法使用一个编码文件来实现这一点?目前我的 ffmpeg 字符串仅适用于 Windows/Android

这是我当前的 ffmpeg 代码:

下面是我的 HTML5 显示代码:

ffmpeg -y -r 25 -i ./images/video%04d.png -i  music.wav -shortest -vcodec libx264 -s  720x480 -strict experimental -acodec aac video_file.mp4

<video width="640" height="480"  controls="" preload="" poster="../poster.jpg">
    <source src="video.mp4" type="video/mp4">
    Your browser does not support the video tag.
</video>

如果我将 -vcodec 改为 mpeg4 而不是 libx264,它可以在 iOs/MAC 上运行,但不能在 Windows 上运行!这真是令人困惑!

使用 ffmpeg 版本 3.0.1-statichttp://johnvansickle.com/ffmpeg/ 版权所有 (c) 2000 -2016 FFmpeg 开发者

答案1

由于您使用的是最新版本的 ffmpeg,请使用以下命令

ffmpeg -y -i ./images/video%04d.png -i music.wav -profile:v baseline -shortest -vcodec libx264 -s  720x480 -acodec aac -movflags +faststart video_file.mp4

profile设置为最低通用标准,baseline以实现广泛兼容性。MOOV 框移至文件头部,因此无需下载整个 MP4 即可开始播放。

默认情况下,ffmpeg 为图像序列分配 25 的帧速率,除非另有规定。自 2015 年 12 月起,原生 AAC 编码器不再标记为实验性。

720x480 的尺寸值和 HTML5 视频尺寸(640x480)都让我认为您正在处理 NTSC 源材料。如果是这样,请使用

ffmpeg -y -framerate 30000/1001 -i ./images/video%04d.png -i music.wav -vf "scale=640x480,setsar=1' -profile:v baseline -shortest -vcodec libx264 -acodec aac -movflags +faststart video_file.mp4

相关内容