MP4ファイルを分割する


34

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ファイルを適切に分割できますか?


ファイルを分割する必要がある理由を教えてください。ファイルの一部を共有するのですか、それとも再生するのですか?または他の理由は?
-theTuxRacer

ファイルの再生部品... -それはあなたの第二の提案ので、ユーチューブにアップロードのためである
アサフChertkoff

回答:


62

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 /


感謝しますが、私はこれに関してさらに助けが必要です。私の答えで行った編集を探してください。
アサフチャートコフ

1
これは私のために働いた:ffmpeg -ss 00:05:00 -t 00:16:00 -i largfile.MP4 -acodec copy -vcodec copy smallfile.MP4誰かが理由を説明できますか?
アサフチャートコフ

ここで少し推測しますが、ソースファイルはlibx264がサポートしていないフレームレートでエンコードされているように見えるため、フレームをスキップします。これでうまくいくと思いますが、これが原因でオーディオに何らかの事故が起こる可能性があります。
アレックス

多分。表示されます...
アサフチャートコフ

1
Asafのコマンドは私にも役立ちました。コーデックオプションは入力ファイルの後に来るように思われます。
-daithib8

10

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

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

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


2
AvidemuxはUbuntu 16.04のリポジトリから削除されました。
naXa

5

必要なものがわからないが、ターミナルでこれを入力することができます:ターミナルを開くには、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

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

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

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

3
この方法は非常に高速ですが、個々のチャンクを再生することはできません。ffmpegを使用してビデオファイルの一部を抽出できますが、全体を再構成せずにすべて個別に再生可能な多くの小さなチャンクに自動的に分割するには、おそらくmp4ファイルでスクリプトを作成する必要があります。必要に応じて例を挙げることができますが、ファイルを移動するだけであれば、この答えは良いです。
スリップストリーム

@Slipstream-あなたはそれを正しかった-私はYouTubeのためにそれを分割する必要があります。私のカメラはMP4を生成していますが、許容される15分よりも長いため、それらを分割する必要があります。
アサフチャートコフ


5

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

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

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


私はそれを使用したことがないが、試した:素晴らしい!瞬時の速度とすべてが読みやすくなります。ありがとう!
tuk0z

これは、サイズを指定する場合に特に便利です。ありがとう!
BBQ特異

0

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

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


0

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

ビデオを分割し、さらに多くのことができるもう1つのオープンソースGUIツールはハンドブレーキです。

たとえば、ここではビデオを24.53(mm:ss)に分割し、右側のフレームをトリミングしています。 ここに画像の説明を入力してください

「プレビュー」ボタンを使用すると、出力のプレビューを簡単に確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.