如何用ffmpeg精确剪切视频和音频

如何用ffmpeg精确剪切视频和音频

所以当我尝试剪掉视频的某个部分时,我会这样做

ffmpeg -i originalClip.mp4 -ss 00:00:14 -t 00:00:21 -codec copy outputClip.mp4

视频质量惊人,声音也十分精准。

但是,将剪辑放入这个使用它的工具后,blur音频ffmpeg会不同步,所以音频会稍微落后一些,有趣的是,修剪后的剪辑并没有发生这种情况,只有将其放入工具后才会发生这种情况。

现在让它变得更有趣的是,如果我把原始剪辑放进去blur就好了。

这让我相信,在剪切剪辑时它会改变一些音频关键帧或一些我看不到的东西,但是由于某种原因,当工具blur解释修剪后的剪辑时,它会看到这些关键帧并根据这些关键帧执行操作?

这只是猜测,我可能完全错了。

有人知道是什么原因导致这个问题吗?我觉得这与我剪辑视频的方式有关。

这是我使用的模糊工具
https://github.com/f0e/blur

blur 配置只是默认配置

- blur
blur: true
blur amount: 1
blur output fps: 60
blur weighting: equal

- interpolation
interpolate: true
interpolated fps: 480

- rendering
quality: 18
preview: true
detailed filenames: false

- timescale
input timescale: 1
output timescale: 1
adjust timescaled audio pitch: false

- filters
brightness: 1
saturation: 1
contrast: 1

- advanced rendering
gpu: false
gpu type (nvidia/amd/intel): nvidia
deduplicate: false
custom ffmpeg filters: 

- advanced blur
blur weighting gaussian std dev: 2
blur weighting triangle reverse: false
blur weighting bound: [0,2]

- advanced interpolation
interpolation program (svp/rife/rife-ncnn): svp
interpolation speed: default
interpolation tuning: default
interpolation algorithm: default

我剪辑的片段是否正确,或者它是否弄乱了关键帧?

答案1

您必须包含:-flags values-s-r-aspect以及&-sar之间。codec:vcodec:a

例子:

ffmpeg -i originalClip.mp4 -ss 00:00:14 -t 00:00:21 -c:v copy -flags +cgop -s 640x360 -r 25 -aspect 16/9 -sar 1/1 -c:a copy outputClip.mp4

使用输入文件的原始值。

为什么?因为并非所有媒体播放器都以相同的方式读取媒体文件。这些基本属性/值对于某些媒体播放器是必需的。某些编码器添加这些值的方式不同。通过执行我向您展示的操作,输出文件更有可能被更多视频播放器识别。

编辑:-flags是可选的。但是视频音频容器中的其他属性值是必须的。

如果 blurtool 无法获取这些强制值,那么它很可能会使用默认值(与原始值不同!)。这很可能是导致问题的原因。

相关内容