我使用以下代码使用 FFMPEG 库将
.webm
视频转换为 .mp4
:
ffmpeg -i video.webm -vcodec h264 -acodec aac -strict experimental video.mp4
在 Windows (Chrome/Firefox)、Mac (Safari/Chrome)、Android (Chrome) 中播放转换后的视频时,此功能可以完美运行,但在通过 iOS (Safari/Chrome) 观看时则无法运行。
一开始我以为这可能是
mp4
的问题?但后来我在 iOS Safari 中毫无问题地播放了该视频 https://www.w3schools.com/html/mov_bbb.mp4,这也是一个 mp4
。
所以这告诉我转换有些不太正确。
我在转换过程中遗漏了什么?
从 PuTTy 登录:https://pastebin.com/VLSPL0nC
ffmpeg
很古老。 下载或编译新版本。-strict experimental
(只有非常旧的版本才需要)。-movflags +faststart
,以便可以更快地开始播放。-vf format=yuv420p
以获取兼容的像素格式。-c:a aac
) 而不是 MP3 (-c:a libmp3lame
)。-profile:v main
。如果您的设备支持 High profile,则无需添加此项。示例:
ffmpeg -i input -c:v libx264 -profile:v main -vf format=yuv420p -c:a aac -movflags +faststart output.mp4
请参阅目标设备的规格以确定合适的
-profile:v
(可能还有 -level
)。请参阅 FFmpeg Wiki:H.264 了解更多信息。
除了@llogan提供的论点之外,我发现降低视频的帧速率是在iOS上的浏览器中播放的关键。添加
fps=30
作为视频过滤器后,我取得了成功。
注意:如果有多个视频滤镜,例如
format=yuv420p
,则滤镜需要用引号括起来并用逗号分隔,如下所示:
-vf "format=yuv420p, fps=30"
Safari 要求您的 Web 服务器支持 HTTP 范围请求。所以请确保它确实如此!