2

我在 ffmpeg 命令中寻找放置-ssim, 或 private 选项的正确位置。我没有找到它,但我有一个可行的选择,并会与您分享。它工作,但我不知道为什么。

首先尝试不使用 ssim 和工作:

ffmpeg -s cif -r 30 -i video.yuv -vcodec mpeg4 -g 12 -bf 2 -sameq video.m4v

我试图像下面这样放置 ssim 并且没有工作:

ffmpeg -s cif -r 30 -i video.yuv -vcodec mpeg4 -g 12 -bf 2 -sameq -ssim video.m4v
ffmpeg -s cif -r 30 -i video.yuv -ssim -vcodec mpeg4 -g 12 -bf 2 -sameq video.m4v

在这里它有效:

ffmpeg -s cif -r 30 -i video.yuv -vcodec mpeg4 -g 12 -bf 2 -ssim -sameq video.m4v

有人知道为什么它在最后一种情况下有效,而不是在命令 2 和 3 中有效吗?

4

1 回答 1

1

-ssim 选项与您使用的编解码器 (x264) 相关。

至少它可以解释为什么您的情况(3)不起作用,因为您将选项放在 -vcodec 之前

请记住,ffmpeg 选项并不是真正的位置独立。据我所知,ssim 是 AVCodecContext 选项的一部分,应该放在 fflag2 之后,如下所示,但根据您使用的 ffmpeg 版本,它可能是错误的。

 ffmpeg -i input ... codec .... -ssim output
于 2013-07-17T19:04:15.043 回答