当前位置: 首页>>技术教程>>正文


如何裁剪(时间而不是图片)MP4 视频文件

,

问题描述

我正在寻找一个应用程序来帮助我有效且无损地截断 mp4 文件的开始和结束部分。

例如,有什么方法可以让我找到一个关键帧并在该关键帧和另一个关键帧之间复制所有内容,而无需对所有内容进行 re-encode(缓慢且有损),并且不会丢失 AV 同步?

我说的 mp4 指的是 MP4 容器中的 H264 视频 + AAC 音频

在 h264 之前,Avidemux 是一个出色的工具,因为您可以重用原始编码流,这意味着不会有任何损失,只需几秒钟即可创建修剪版本,但对于 h264 来说,这是不可能的 – 打开一个会给您两个选项:使用安全模式(会大量丢失 AV 同步)或使用危险模式,这会立即使其崩溃。

据我所知,Openshot、Kdenlive、Pitivi 等都会通过解码和重新编码(缓慢且有损)来实现这一点。

看起来很简单(可能表明我在这里缺乏知识!),所以想知道我是否遗漏了什么。

最佳办法

ffmpeg

ffmpeg -i source.mp4 -ss 00:00:00 -t 00:00:00 -vcodec copy -acodec copy splice.mp4

这将获取 source.mp4,并使用相同的音频和视频编解码器,并且不会降低质量,在 -ss 开始时间视频后获取 -t 时间并输出 splice.mp4

请注意,时间对格式非常敏感(以上是一个示例格式)。此外,在某些发行版中, ffmpeg 已被替换为 avconv 。只需运行上述命令并将单词 ffmpeg 替换为 avconv 即可解决此问题。

Another excellent source of information on this topic.(感谢@pbhj)

次佳办法

在 Ubuntu 16.04 中,ffmpeg 的等效命令是 avconv

要安装它,请运行:

sudo apt-get install libav-tools

按时间裁剪视频的示例命令行:

avconv -i originalFile.ogv -ss 00:00:00 -t 00:00:10 -vcodec copy -acodec copy croppedFile.ogv

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14621.html,未经允许,请勿转载。