如何使用 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 以获得更好的质量?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaCV 和 FFmpeg 播放视频

ffmpeg mp4 to wmv

FFmpeg 常用转换命令

如何用中等质量的ffmpeg将vob转换为wmv?

如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)

FFMPEG wmv 转换为 flv