我有几个 m4v 文件,需要将其转换为 webm。
我正在ffmpeg
这样做,并使用了如下命令:
ffmpeg -i myfiletoconvert.m4v output.webm
转换工作正常,分辨率仍然相同,但质量却不一样。
我真正想要的是转换是无损的。我希望输入文件的属性与输出文件的属性相同,这样就不会出现明显的质量变化。
我该如何实现这个目标呢?
答案1
我希望输入文件的属性与输出文件的属性相同,这样就不会看到明显的质量变化。
您正在从有损编解码器转换到另一个有损编解码器。这意味着无论如何您都会损失质量,除非您将目标比特率设置得很高,以至于质量损失不会引人注意(即使它仍然存在)。
当然,缺点是文件大小会增加。你可能会问,文件大小会增加多少?没人知道。这取决于输入视频的质量以及视频编码的难易程度。
要在转换期间强制比特率,请执行以下操作,例如恒定的 1 MBit/s:
ffmpeg -i in.m4v -c:v libvpx -b:v 1M -c:a libvorbis out.webm
编码libvpx
器还可以使用可变质量,使用选项-qmin
:-qmax
ffmpeg -i in.m4v -c:v libvpx -qmin 10 -qmax 42 -c:a libvorbis out.webm
使用较低的两个参数值可实现更好的质量。通常 FFmpeg 会将它们设置为 2/31,但据我所知,WebM 需要不同的比例。
答案2
作为版本 1.3.0,2013 年 12 月,libvpx 通过 VP9 支持无损编码。
使用示例:
ffmpeg -i in.m4v -vcodec libvpx-vp9 -lossless 1 out.webm
一个问题是,webm 仅支持 opus 和 vorbis 音频,这并非无损音频。但是,即使在适度的比特率下,opus 质量也非常出色,因此如果您确实需要 webm,这就是您的选择。只需将音频比特率调至-b:a 512k
或您喜欢的任何级别即可。