视频 - 如何分割MP4文件

分享于 

5分钟阅读

ubuntu

  繁體

问题

分割MP4文件最快和最不消耗资源的方法是什么?

我尝试了ffmpeg,但是得到一个错误:


$ ffmpeg -vcodec copy -ss 0 -t 00:10:00 -i /home/asafche/Videos/myVideos/MAH00124.MP4 /home/asafche/Videos/myVideos/eh.mp4


FFmpeg version SVN-r0.5.1-4:0.5.1-1ubuntu1.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.


configuration: --extra-version=4:0.5.1-1ubuntu1.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static


 libavutil 49.15. 0 / 49.15. 0


 libavcodec 52.20. 1 / 52.20. 1


 libavformat 52.31. 0 / 52.31. 0


 libavdevice 52. 1. 0 / 52. 1. 0


 libavfilter 0. 4. 0 / 0. 4. 0


 libswscale 0. 7. 1 / 0. 7. 1


 libpostproc 51. 2. 0 / 51. 2. 0


 built on Mar 31 2011 18:53:20, gcc: 4.4.3



Seems stream 0 codec frame rate differs from container frame rate: 119.88 (120000/1001) -> 59.94 (60000/1001)


Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/asafche/Videos/myVideos/MAH00124.MP4':


 Duration: 00:15:35.96, start: 0.000000, bitrate: 5664 kb/s


 Stream #0.0(und): Video: h264, yuv420p, 1280x720, 59.94 tbr, 59.94 tbn, 119.88 tbc


 Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16


Output #0, mp4, to '/home/asafche/Videos/myVideos/eh.mp4':


 Stream #0.0(und): Video: libx264, yuv420p, 1280x720, q=2-31, 90k tbn, 59.94 tbc


 Stream #0.1(und): Audio: 0x0000, 48000 Hz, stereo, s16, 64 kb/s


Stream mapping:


 Stream #0.0 -> #0.0


 Stream #0.1 -> #0.1


Unsupported codec for output stream #0.1




答案1

使用ffmpeg,你可以使用以下命令拆分文件:


ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss START -t LENGTH OUTFILE.mp4



如果假设你的视频是31分钟长,你想要分成15分钟的块,下面是如何运行它:


ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss 0 -t 00:15:00 OUTFILE-1.mp4


ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss 00:15:00 -t 00:15:00 OUTFILE-2.mp4


ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss 00:30:00 -t 00:15:00 OUTFILE-3.mp4



有一个python脚本,你可以使用它自动执行此操作(例如,获取视频文件,块大小以秒为单位,并生成单独的可播放视频文件)http://icephoenix.us/notes-for-myself/auto-splitting-video-file-in-equal-chunks-with-ffmpeg-and-python/


答案2

如果你喜欢使用gui,可以使用avidemux。


答案3

要打开终端,请按Ctrl+Alt+T

split -b 4M file.mp4 part_file

这将把文件分成4兆字节的块。要重新创建文件,请键入

cat part_file[a-c] > file.mp4

注意,我已经在括号中键入了a-c,因为拆分创建了3个文件,我用一个例子解释。


$ ls -lh


-rwxr-xr-x 1 root root 9.3M 2011-04-17 20:09 file.mp4



这表明我有一个9.3 MB的文件,要拆分,请键入:


$ split -b 2M file.mp4 part_file



拆分后,我将文件作为:


$ ls -lh


-rwxr-xr-x 1 root root 9.3M 2011-04-17 20:09 file.mp4


-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_fileaa


-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_fileab


-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_fileac


-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_filead


-rw-r--r-- 1 thetuxracer thetuxracer 1.3M 2011-04-17 20:12 part_fileae



注意文件名后面追加的两个字符。

要恢复文件:


$ cat part_filename[start-end][start-end] > file.mp4




答案4

使用来自mkvtoolnix的mkvmerge包。使用类似的东西


mkvmerge -o outputprefix --split 1G origfile.mp4



这会把文件分成1GB块。



文件  视频  SPL  切分  splitting  MP4