拆分MP4文件

分割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 

我做错了什么,如何正确拆分mp4文件?

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

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

其中START开始以秒为单位或以格式开始定位hh:mm:ss LENGTH是以秒为单位的块长度或格式为hh:mm:ss

因此,您需要运行此命令几次,具体取决于您的video时长。 如果让我们说你的video长达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脚本可以自动执行(即获取video文件,块大小在几秒钟内生成单独的可播放video文件): http : //icephoenix.us/notes-for-myself/auto-splitting-video -file合相等的块与- FFMPEG和-蟒/

如果您更喜欢使用gui,则可以在存储库中使用avidemux。 通过这种方式定义切割点要容易得多!

选择标记定义将导出的video部分,使用音频和video中的“复制”避免重新编码。 您也可以选择容器或更改容器(avi,mp4,mkv等)。

我已经对相机中的一些video进行了一些切割,它是瞬间完成的!

不确定您的需求,但您可以在终端中键入:要打开终端,请按Ctrl + Alt + T.

split -b 4M file.mp4 part_file

这会将文件拆分为4兆字节的块。 要再次重新创建该文件,请键入

cat part_file[ac] > file.mp4

请注意,我在括号中键入了ac ,因为拆分创建了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 

使用mkvtoolnix包中的mkvmerge。 使用类似的东西

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

这会将您的文件拆分为1 GB块。 您也可以使用时间指示。

如果这是MP4第2部分,那么使用非常细致的方法,您可以在没有编码器/解码器的情况下继续执行文件。 此答案适用于具有编程背景和hex编辑器的人,他们希望保持文件“完整”“”。

该文件的第一部分是mdat,第二部分是moov,包含解码器用于定位块的元数据,其中包含样本(编码图像和声音,知道并不重要)。 然后是STCO,STTS,STSC等。这就是所谓的“primefaces”。 它们表示每个块的偏移量,长度等。 如果您干净的工作,您可以制作video的多个实例,以及具有不同块的不同版本。 然后该文件将在播放器中播放,并在video网站上消化。 如果您是编码器,则构建MP4解析器或使用现有解析器来跟踪零件及其偏移。 这将有助于您了解有关格式的更多信息,并自动重建文件。

最简单,最简单的方法是使用MP4Box:

  1. # apt install gpac
  2. $ MP4Box -split 15 /home/asafche/Videos/myVideos/MAH00124.MP4 (参数是以秒为单位的时间)。 对于其他分割可能性,例如按大小参见https://gpac.wp.imt.fr/mp4box/mp4box-documentation/或MP4Box -h general

连接同样简单。