web-dev-qa-db-ja.com

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ファイルを適切に分割するにはどうすればよいですか?

33
Asaf Chertkoff

Ffmpegでは、次のコマンドを使用してファイルを分割できます。

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

ここで、STARTは秒またはhh:mm:ss形式でポジショニングを開始します。LENGTHは秒またはhh:mm:ss形式のチャンク長です。

そのため、ビデオの長さに応じて、このコマンドを数回実行する必要があります。動画の長さが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 /

61
Alex

GUIを使用する場合は、リポジトリでavidemuxを使用できます。この方法でカットポイントを定義するのははるかに簡単です!

選択マーカーは、エクスポートされるビデオの部分を定義し、オーディオの「コピー」を使用して、ビデオは再エンコードを回避します。コンテナを選択または変更することもできます(avi、mp4、mkvなど)。

私はカメラからのいくつかのビデオでたくさんのカットをしました、そしてそれは瞬時でした!

9
user24362

必要なものがわからないが、ターミナルでこれを入力できます:ターミナルを開くには、を押します Ctrl + Alt + T

split -b 4M file.mp4 part_file

これにより、ファイルが4メガバイトのチャンクに分割されます。ファイルを再作成するには、次を入力します

cat part_file[a-c] > file.mp4

分割によって3つのファイルが作成されたため、ブラケットにa-cと入力したことに注意してください。あなたの場合、もっと見る必要があるかもしれません。 例で説明します。

$ 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

ファイル名に2文字が追加されていることに注意してください。

ファイルを取り戻すには:

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

Mkvtoolnixパッケージのmkvmergeを使用します。のようなものを使用してください

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

これにより、ファイルが1 GBブロックに分割されます。時間表示も使用できます。

4
rtega

これがMP4パート2である場合、非常に綿密なアプローチにより、エンコーダー/デコーダーなしでファイルを進めることができます。この回答は、プログラミングのバックグラウンドを持ち、ファイル「 "intact"」を保持したい16進エディタを持っている人を対象としています。

ファイルの最初の部分はmdat、2番目の部分はmoovで、サンプル(エンコードされた画像と音声、知る必要はない)を含むチャンクを見つけるためにデコーダーが使用するメタデータを含みます。次に、STCO、STTS、STSCなどがあります。これは「原子」と呼ばれます。これらは、各チャンクのオフセット、長さなどを示します。クリーンジョブを実行すると、ビデオの複数のインスタンスを作成でき、異なるチャンクを持つ異なるバージョンを作成できます。ファイルはプレーヤーで再生可能になり、ビデオWebサイトでダイジェストされます。コーダーの場合は、MP4パーサーを構築するか、既存のパーサーを使用してパーツとそのオフセットを追跡します。これにより、フォーマットについてさらに理解し、ファイルを自動的に再構築できます。

0
Léon Pelletier

最も簡単で確実な方法は、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

連結も同様に簡単です。

0
Csaba Toth