如何使用 ffmpeg 将 MP4 转换为 WMV 以获得更好的质量?
Posted
技术标签:
【中文标题】如何使用 ffmpeg 将 MP4 转换为 WMV 以获得更好的质量?【英文标题】:How to get better quality converting MP4 to WMV with ffmpeg? 【发布时间】:2012-06-20 05:30:51 【问题描述】:我正在使用以下两个缩放命令将 MP4 文件转换为 WMV:
ffmpeg -i test.mp4 -y -vf scale=-1:360 test1.wmv
ffmpeg -i test.mp4 -y -vf scale=-1:720 test2.wmv
我也试过了:
ffmpeg -g 1 -b 16000k -i test1.mp4 test1.wmv
但是,生成的 .wmv 文件是“块状和颗粒状”,您可以在此处的一小部分视频截图中看到:
这些是尺寸:
test.mp4 - 106 MB
test1.wmv - 6 MB
test2.wmv - 16 MB
如何提高生成的 .wmv 文件的质量/大小(无需考虑 .wmv 文件的大小)?
【问题讨论】:
【参考方案1】:请考虑以下命令(最终答案部分中的一些过时命令):
ffmpeg -i test.mp4 -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k test1.wmv
参考文献
https://askubuntu.com/questions/352920/fastest-way-to-convert-videos-batch-or-single【讨论】:
【参考方案2】:您可以简单地使用-sameq
参数(“使用与源相同的量化器”),它可以生成更大的视频文件(227 MB),但质量非常好。
ffmpeg -sameq -i test.mp4 -y -vf scale=-1:360 test1.wmv
在较新版本的 ffmpeg 标志“-sameq”已被删除。要获得类似的结果,应该使用 0 值的 'qscale' 标志:
ffmpeg -sameq -i test.mp4 -qscale 0 -vf scale=-1:360 test1.wmv
【讨论】:
更好的解决方案是使用-qscale
(或-qscale:v
或-q:v
,具体取决于您的语法偏好);一般取值2-5。值越低质量越高,2 可以认为是“视觉无损”。 -sameq
不适合在不共享相同量化器比例的格式之间使用,您可能就是这种情况。
另外,您正在应用-sameq
作为输入选项(-i
之前的任何内容)。可能会按预期工作,但请记住,并非所有应用于输入的选项都会应用于输出。
-sameq 已被删除。当您尝试使用它时,ffmpeg 提供“使用 -qscale 0 或等效的质量因子选项”,它会因参数无效而出错。【参考方案3】:
经过多次令人沮丧的提高最终质量的尝试后,我发现的一件事是,如果您不指定比特率,它将使用相当低的平均值。尝试 -b 1000k 作为起点,并尝试增加或减少它,直到达到所需的结果。相应地,您的文件会更大或更小。
【讨论】:
【参考方案4】:2020 年的工作答案,制作没有块状的输出视频:
ffmpeg -i input.mp4 -q:v 1 -q:a 1 output.wmv
【讨论】:
【参考方案5】:我用了这个,结果很好
ffmpeg -i "file1.mp4" -q:v 0 -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k test2.wmv
【讨论】:
-q:v
和 -b:v
是互斥的,意味着只使用一个而忽略另一个。因此,您应该选择其中之一,但不能同时选择两者。以上是关于如何使用 ffmpeg 将 MP4 转换为 WMV 以获得更好的质量?的主要内容,如果未能解决你的问题,请参考以下文章