在ffmpeg中将视频裁剪为具有相同比特率的不同部分

在ffmpeg中将视频裁剪为具有相同比特率的不同部分

我正在尝试将视频剪辑(最初为 960 x 540)裁剪成两个 4 个部分(左上角、右上角等),然后使用下面的命令(当然带有正确的 x/y 位置):

ffmpeg -i mov_a.m4v -vf "crop=480:270:480:270" mov_a_4.m4v

问题是,每个剪辑的比特率都不同。我想做的是将这 4 个电影部分放在 4 个 Android 平板电脑中并同时启动它们(形成多屏)。

我很确定 PLAY 命令会同时到达 Android 平板电脑(时间差很小)。但是我发现这 4 个剪辑不同步,我猜是因为比特率不同,播放器必须做更多工作才能加载比特率较高的部分。

即使您认为这不是问题,是否可以强制 FFMPEG 的输出对电影的所有 4 个部分具有完全相同的比特率?如果是这样,我应该在上面的命令行中更改什么?

感谢您的帮助!

答案1

使用 -b:v 选项强制比特率。该速率取决于输入速率。假设 ffprobe 报告未剪辑视频的比特率为 1024 kbps。假设帧大小为 1/4,我会传递 256 kbps 左右的比特率。

ffmpeg -i mov_a.m4v -vf "crop=480:270:480:270" -b:v 256k mov_a_4.m4v

如果您强制使用比特率,理想情况下也应该明确使用编解码器:

ffmpeg -i mov_a.m4v -vf "crop=480:270:480:270" -vcodec libx264 -b:v 256k mov_a_4.m4v

但随后请检查输入文件中的编解码器。请注意,播放不同步可能与比特率无关 - 您可以使用 ffprobe 或 ffmpeg 检查您已经拥有的每个裁剪视频:

ffmpeg -i filename

相关内容