加速视频 x1.5 但保留所有帧

Thi*_*man 2 ffmpeg matroska

所以我试图加快我所有的电视剧集(因为其中一些真的节奏很慢)。源是 30fps。如果已经尝试使用以下命令执行此操作:(我正在执行 x1.6,因为这样更容易设置 setpts 值(否则它将是 0.66666666666...)

ffmpeg -i VideoOriginal.mkv -r 48 -filter:v "setpts=0.625*PTS" VideoSpeedup.mkv
Run Code Online (Sandbox Code Playgroud)

但是这里的文件大小要低得多(也许我也应该使用预设来提高质量?)无论哪种方式。该文件有 40 分钟长,并且在 10 分钟后几乎损坏(VLC 开始误解时间戳并且播放器几乎被F*cked)。

此外,这种方法不会加速音频。

关于如何使这更好的任何提示?

(我想“保留所有帧”的原因。是因为因为我要使用 x1.6,所以我只能执行 48fps,这意味着我实际上不会丢失或必须生成新帧。)

编辑:刚刚意识到我的原始文件的 fps 是 23.97612 ......我想这确实让事情变得更复杂......?

slh*_*hck 6

更改视频速度时,您通常不必设置-r,而只需让 ffmpeg 更改帧的时间戳即可。这可能会导致丢帧,这当然可以通过在尝试时设置正确的帧率来避免,但您必须在输入规范之后进行设置。

要同时加速视频和音频:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.625*PTS[v];[0:a]atempo=1.6[a]" -map "[v]" -map "[a]" output.mkv
Run Code Online (Sandbox Code Playgroud)

音频速度是修改帧时间戳的因素的倒数。随着帧率的变化:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.625*PTS[v];[0:a]atempo=1.6[a]" -r 48 -map "[v]" -map "[a]" output.mkv
Run Code Online (Sandbox Code Playgroud)

但是这里的文件大小要低得多

那是因为一切都被重新编码。通常,libx264用于视频编码。默认质量应该很好,但您可以使用该-crf选项进行更改,例如。有关更多信息,请参阅H.264 编码指南

您也可以告诉 VLC 加快播放菜单中的播放速度。这避免了速度变化的不必要的转换和硬编码。