FFMPEG 视频到 MP4 的转换适用于除 iOS Safari/Chrome 之外的任何地方

问题描述 投票:0回答:3

我使用以下代码使用 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

video ffmpeg mp4
3个回答
9
投票
  1. 你的
    ffmpeg
    很古老。 下载编译新版本。
  2. 删除
    -strict experimental
    (只有非常旧的版本才需要)。
  3. 添加
    -movflags +faststart
    ,以便可以更快地开始播放。
  4. 添加
    -vf format=yuv420p
    以获取兼容的像素格式。
  5. 输出 AAC 音频 (
    -c:a aac
    ) 而不是 MP3 (
    -c:a libmp3lame
    )。
  6. 如果仍然失败,可能是由于设备不支持 High profile。添加
    -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 了解更多信息。


0
投票

除了@llogan提供的论点之外,我发现降低视频的帧速率是在iOS上的浏览器中播放的关键。添加

fps=30
作为视频过滤器后,我取得了成功。

注意:如果有多个视频滤镜,例如

format=yuv420p
,则滤镜需要用引号括起来并用逗号分隔,如下所示:

-vf "format=yuv420p, fps=30"


0
投票

Safari 要求您的 Web 服务器支持 HTTP 范围请求。所以请确保它确实如此!

© www.soinside.com 2019 - 2024. All rights reserved.