首页 > 解决方案 > 如何在不使用 FFMPEG 重新编码的情况下在精确位置修剪视频文件

问题描述

我无法在不导致视频/音频不同步的情况下修剪视频文件。据我了解,-ss在输入文件之前或之后使用 seek 参数会导致两种不同的行为。例如:

ffmpeg  -ss 00:00:00.600 -i in.mp4 -c copy out.mp4 

这会产生具有准确 A/V 同步的修剪,但会产生粗略的音频修剪(修剪发生在视频关键帧而不是精确的搜索值)

ffmpeg  -i in.mp4 -ss 00:00:00.600 -c copy out.mp4

这会产生更准确的音频修剪,但会导致 A/V 不同步。修剪位置之后的帧取决于修剪位置之前的帧。这些帧被分配负时间戳并复制到输出文件,这导致视频在播放期间与音频不同步。

另一方面,

ffmpeg  -i "in.mp4" -ss 00:00:00.600 -strict -2 out.mp4

这会产生更精确的修整和 A/V 同步。修剪任务需要很长时间才能运行并导致质量损失。

我的问题是:有没有办法在不重新编码视频的情况下获得准确的修剪?可能是在开始时丢弃导致 A/V 不同步的额外帧。就我而言,只要在精确位置修剪音频并保留 A/V 同步,我就可以在开始时忍受一些黑帧。是否可以使用 FFMPEG 来实现这一点?如果没有,Android 上的 MediaCodec 可以在修剪时处理这样的精度吗?

谢谢你的时间。

标签: androidffmpegandroid-mediacodec

解决方案


推荐阅读