我想用 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