FFMPEG 将 flv 转换为 mp4 且不损失质量

FFMPEG 将 flv 转换为 mp4 且不损失质量

目前,我正在将 .flv flash 文件转换为 .webm 和 .mp4 文件,以便与 HTML5 视频播放器一起使用。

_

我对 WEBM 使用这个 ffmpeg 命令:ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis filename.webm 效果很好,文件大小保持相对不变(重要)。

_

对于 MP4 我使用以下内容: ffmpeg -i filename.flv -sameq -ar 22050 filename.mp4

它可以完美地转换为 .mp4 并避免任何质量损失,但文件大小几乎增加了三倍。

什么 ffmpeg 公式可用于转换为 MP4,而不会损失太多质量并防止文件大小变大?

答案1

ffmpeg -i filename.flv -c:v libx264 -crf 19 -strict experimental filename.mp4

您必须指定使用的视频编解码器。在您的命令中,您没有指定-vcodec-c:v因此 ffmpeg 使用 MP4 的默认编解码器 ( mpeg4),其压缩效率不是很好。尝试改用 libx264 并设置 CRF,即质量级别(越低越好,默认值为 23,合理的值介于 18 和 28 之间)。

使用 libx264 编码有点复杂,所以你应该查阅H.264 编码指南

您还需要指定-strict experimental,否则您可能会得到:“编码器‘aac’是实验性的,但实验性的编解码器未启用,如果您想使用它,请添加‘-strict -2’。”

答案2

此命令仅更改容器,而不重新编码

ffmpeg -i input.flv -codec copy output.mp4

答案3

根据本指南,将 FLV 转换为 MP4 而无需任何 AV 重新编码的正确命令是:

ffmpeg -i input.flv -c copy -copyts output.mp4

对我来说,在所有情况下,它都能完美地处理 AVC 视频和 AAC 或 MP3 音频。

答案4

使用 ffmpeg 时,我收到使用 avconv 的弃用警告。使用 avconv 我得到了不错的结果:

avconv -i 输入文件.flv -map 0 -c:v libx264 -c:a 复制输出文件.mp4

阅读man avconv更多信息。

相关内容