我有一个很大的 MP4 文件。我试图将其分割成几个较小的文件。
ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4
我以为使用 -sameq 会保持相同的质量设置。但是,我一定不明白它的作用是什么。
我希望分割后的文件保持相同的质量(音频/视频)和压缩率。但是,此设置会使分割后的文件变大很多。
我需要设置什么标志才能保持分割文件中相同的质量和属性,同时维持相同的质量与尺寸比?
例如,如果我的原始文件约为 12 GB,分辨率为 1920x1080,比特率为 10617kbps,帧率为 23 帧/秒,6 通道音频为 317kbps,那么我希望分割后的文件大小只有这个大小的三分之一(如果我将其分成三部分)。
答案1
如果您只想分割视频而不重新编码,请使用copy
音频和视频编解码器。 试试这个:
ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4
请注意,这只会创建第一个分割。下一个分割可以使用以 开头的命令来完成ffmpeg -ss 00:50:00
。
这可以通过一个命令完成:
ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 \
-ss 00:50:00 -c copy smallfile2.mp4
这将创建smallfile1.mp4
,结束于 视频的第 50 分钟largefile.mp4
,以及smallfile2.mp4
,从 第 50 分钟 开始并结束于 的末尾largefile.mp4
。
答案2
一个备用做法是:
创建一个 2 分钟的剪辑,从 10 分钟后开始:
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4
-i
输入文件-ss
开始时间(以秒为单位,或以 hh:mm:ss 为单位)-to
结束时间(以秒为单位或以 hh:mm:ss 为单位)-c
要使用的编解码器
-c copy
由于我们将原始音频+视频流复制到输出,因此文件质量保持不变。
参考,常用FFmpeg命令列表:数字堡垒
答案3
这还不错,但不是 100% 正确,它会创建一个 2 分钟的剪辑,在 10 分钟后开始,但它只会复制最好的流,所以它只会复制最好的视频、音频和字幕流:
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4
如果要复制所有流,则添加“-map 0”,它基本上会选择整个第一个输入文件:
ffmpeg -ss 00:10:00 -to 00:12:00 -i input.mp4 -map 0 -c copy output.mp4
您还应该在输入文件前面放置 -ss 和 -to。