我目前正在使用一个批处理文件,它(除其他外)运行以下 handbrakecli 命令行来转换视频:
HandBrakeCLI.exe -v0 --input "D:\input.mkv" --preset="Universal" --ipod-atom -t 1 --angle 1 --gain 0 --output="D:\output.mp4"
多年来,这款软件为我提供了很好的服务,制作的视频文件比原始文件更小(当你只有 16Gb 的设备时这很好),看起来足够好,并且可以在我放置它的任何 iPod、iPad 和 iPhone 上播放。
然而,随着时间的推移,handbrakecli 转换的视频越来越多,以至于我需要寻找替代方案。日志根本没有提供任何有关崩溃原因的信息,这无济于事。例如,这个视频在转换过程中崩溃了 71%,这是最后 4 行:
AC3 Passthru requested and input codec is not compatible for track 2, using AC3 encoder
x264 [info]: using SAR=9593/9600
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile Constrained Baseline, level 3.0
没什么帮助。
我考虑使用 ffmpeg 作为替代方案,但我在互联网上看到的所有示例都执行以下一项或多项操作:
- 不起作用(命令行选项无法识别)——常见!
- 导致文件比原始文件更大——非常常见!
- 图像扭曲,尤其是在转换意外的视频尺寸时(例如非宽屏 PAL)
- 删除音频
- 导致 iPhone、iPod 或 iPad 无法播放视频
是否存在一个不错的通用 ffmepg 命令行,可以使任何视频在所有 Apple 设备上顺利运行,同时还能减小文件大小?
如果它也能缩小(但不扭曲)任何超过 720p 的视频,则可以获得加分。
答案1
这是我的看法。我将以 iPhone 4 或更新版本(包括所有 iPad)作为目标:H.264 主配置文件,级别 3.1
ffmpeg -i input.mp4 -vcodec libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -acodec copy -movflags +faststart output.mp4
您可以自由更改的值:
-crf 23
:恒定质量设置。值越高 = 质量越差,文件越小。值越低 = 质量越好,文件越大。合理的值为 [18 - 24]-preset medium
:如果这对你来说太慢,请使用更快的预设。如果你有耐心,请使用较慢的预设。请参阅这里了解更多信息。-acodec copy
:尝试将音轨复制到 MP4 容器中。如果无法复制,则必须将其重新编码为 AAC/MP3/AC3... 例如-acodec libmp3lame
如果你的视频大于720p,请在输入后添加以下内容:
-vf "scale=-2:720:flags=lanczos"
这会将视频缩小至 720p 并保持宽高比。使用的缩放算法将是 lanczos,因为它比默认算法好得多。
答案2
这是最基本的,但它在 iPad 3 上立即就起作用了
ffmpeg -i inputfile outputfile.m4v