如何使用高质量的ffmpeg将FLV转换为AVI

35

需要将FLV文件转换为AVI或MOV格式,尝试使用FFmpeg进行转换,但输出的质量很差。如何让视频输出的质量与源文件相当?

我原以为使用命令"ffmpeg -i name.flv -s 320x... name.avi" 就可以了,但效果并不好。

4个回答

30

这是我用于ffmpeg项目的命令,质量应该已经足够好了。如果不行的话,请尝试增加比特率(-b 参数):

ffmpeg -i input.flv -ar 22050 -b 2048k output.avi

1
它告诉我“-b”是不明确的。请使用“-b:v”或“-b:a”。这是什么? - Optimus Prime
3
@OptimusPrime说的是视频/音频比特率,分别指视频和音频数据传输速率(如果其他人也有疑惑的话)。 - Qantas 94 Heavy
但是文件大小太大了。有没有办法在不影响质量的情况下减小文件大小。我的视频文件主要包含文本。 - samnaction

16

这是一个好的解决方案

ffmpeg -async 1 -i inputVideo.flv -f avi -b 700k -qscale 0 -ab 160k -ar 44100 outputVideo.avi

或使用以下方式

ffmpeg -loglevel 0 -async 1 -i inputVideo.flv -f avi -b 700k -sameq -ab 160k -ar 44100 outputVideo.avi

2
+1,上面的第一条命令是唯一一个对我有效的,其他的要么有“无效参数”,要么就会出现段错误。 - Ash
1
这就是解决方案!,) - Luca Davanzo
1
多谢你的第二种解决方案 "+1",我在 ffmpeg -i input.flv -async 1 -f avi -b 700k -qscale 0 -ab 160k -ar 44100 outputVideo.avi 中进行了更新。我将一个时长为100分钟、大小为270MB的flv视频转换为相同质量的1.5GB avi文件。 :) - Tenaciousd93
1
对于我来说也适用于avconv -async 1 -i in.mp4 -vf“transpose = 1”-f avi -b 700k -qscale 0 -ab 160k -ar 44100 out2.avi。 - SYK

9

互联网上还有另一种解决方案,而且非常有效!

只需使用相同的质量参数-sameq

ffmpeg.exe -i video.flv -sameq outputVideo.avi

实际上,sameq命令并非完全相同的质量。为了成功完成此操作,必须应用以下命令: 如果您有多个文件需要处理,请使用完整命令:

for %i in (*.flv) do ffmpeg -i "%i" -q:a 0 -q:v 0 "%i".avi

15
这并不意味着“同样的质量”:http://ffmpeg.org/trac/ffmpeg/wiki/Option%20%27-sameq%27%20does%20NOT%20mean%20%27same%20quality%27(注意:此翻译已经尽可能地保持了原文的句式和用词,并尽力使其通俗易懂,但如果需要更精确或更自然的表达,请提供更多上下文或背景信息。) - CaptainProg
3
“sameq”选项已被移除。如果您想要保留质量的选项(这不是“-sameq”所用于的目的),请使用“-qscale 0”或等效的质量因素选项。” - Iulian Onofrei
2
“-q:a 0 -q:v 0”是2020年的答案。 - Alec Istomin

5
为了保持质量,请使用-qscale 0
例如:ffmpeg.exe -i InputVid.avi -qscale 0 OutputVid.mp4 我将1.64 GB的AVI视频转换为4.35 MB的MP4文件。

1
“-qscale”在可用的默认编码器libx264中被忽略,该编码器是MP4输出的默认编码器。如果使用此编码器,请改用“-crf”。由于它被忽略了,我会假设在您的情况下应用了默认值“-crf 23”。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接