如何从 linux 命令行修剪或删除 mpeg 视频的部分内容?

dgg*_*dst 5 linux command-line video-editing

我有一部很长的 mpeg 电影,我想从头到尾剪掉很多素材,中间还有一些补丁。有没有办法可以轻松地从 linux 命令行执行此操作?

dgg*_*dst 7

该作业的工具是mpgtx(如果未安装,请尝试,例如 sudo apt-get install mpgtx)。

假设您的文件名为 input.mpg 并且您想创建 output.mpg 以下是一些常见任务

从 mpeg 电影中选择片段,从中创建新的 mpeg 电影

//抓取10-20秒,42到52秒,然后1:23到1:33,制作一个新的mpeg电影

mpgtx -j input.mpg [0:10-0:20] [0:42-0:52] [1:23-1:33] -o output.mpg
Run Code Online (Sandbox Code Playgroud)

注意:mpgtx -j 等效于 mpgjoin。注意:您需要通过 sudo apt-get install mpgtx 安装它

从 mpeg 电影的开头或结尾选择

//获取前 20 秒,第 42 到 52 秒,然后是 1:23 到最后***

mpgtx -j input.mpg [-0:20] [0:42-0:52] [1:23-] -o output.mpg
Run Code Online (Sandbox Code Playgroud)

将 mpeg 电影拆分为多个自定义长度的文件

//将分钟 1-2 和 3-4 拆分为两个文件(out-1.mpg 和 out-2.mpg)

mpgtx -s input.mpg [1:00-2:00] [3:00-4:00] -b out  
Run Code Online (Sandbox Code Playgroud)

将 mpeg 电影分成等长的片段

//将一部电影分成 5 个等长的部分,分别称为 out-1.mpg、out-2.mpg、...、out-5.mpg

mpgtx -5 input.mpg -b out  
Run Code Online (Sandbox Code Playgroud)

从命令行连接或加入多个 mpeg 视频文件

mpgtx -j file1.mpg file2.mpg file3.mpg -o output.mpg
Run Code Online (Sandbox Code Playgroud)

如果时间关闭,则重新编码文件

由于 mpgtx 的工作方式(基于一组图片),您可能会发现计时不是很准确。我发现以恒定比特率重新编码 mpeg 会产生文件,然后可以使用上述方法非常精确地分割这些文件。一个简单的重新编码调用如下。

//以2250k的恒定比特率重新编码

ffmpeg -i input.mpg -b 2250k -minrate 2250k -maxrate 2250k -bufsize 1000k output.mpg
Run Code Online (Sandbox Code Playgroud)

笔记。ffmpeg 可以做很多 mpgtx 可以做的事情,但后者可以更容易地指定多个剪切(并且您可以在开始和结束时间提供输入,而不是开始和持续时间)。然而,ffmpeg 是一个很好的伴侣。我发现使用 ffmeg 将 AVI 转换为 mpeg,然后使用 mpgtx 进行拆分是完成工作的最快方法。

有关更多信息,请参阅 mpgtx 和 ffmpeg 的手册页(以及其在线帮助页面http://ffmpeg.org/ffmpeg-doc.html)。