Memisahkan file MP4

34

Apa metode tercepat dan paling tidak memakan sumber daya untuk memisahkan file MP4?

Saya mencoba ffmpeg tetapi mendapat kesalahan:

$ 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

Apa yang saya lakukan salah dan bagaimana cara membagi file mp4 dengan benar?

Asaf Chertkoff
sumber
dapatkah Anda memberi tahu kami alasan Anda perlu membagi file? Apakah ini untuk berbagi, atau memainkan bagian file? Atau ada alasan lain?
theTuxRacer
Ini untuk mengunggah ke youtube, oleh karena itu saran kedua Anda - mainkan sebagian file ...
Asaf Chertkoff

Jawaban:

62

Dengan ffmpeg Anda dapat membagi file menggunakan perintah berikut:

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

di mana START mulai positing dalam detik atau dalam format jj: mm: dt. PANJANG adalah panjang potongan dalam detik atau dalam format jj: mm: dd

Jadi, Anda perlu menjalankan perintah ini beberapa kali tergantung pada berapa lama video Anda. Jika katakanlah video Anda berdurasi 31 menit dan Anda ingin membaginya menjadi 15 menit, inilah cara Anda menjalankannya:

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

Ada skrip python yang dapat Anda gunakan yang melakukan ini secara otomatis (yaitu mengambil file video, ukuran chunk dalam hitungan detik dan menghasilkan file video yang dapat diputar secara individu): http://icephoenix.us/notes-for-myself/auto-splitting-video -file-in-equal-chunks-with-ffmpeg-and-python /

Alex
sumber
Terima kasih, tetapi saya perlu bantuan lebih lanjut dengan ini. Cari hasil edit yang saya lakukan dalam jawaban saya.
Asaf Chertkoff
1
Ini bekerja untuk saya: ffmpeg -ss 00:05:00 -t 00:16:00 -i largfile.MP4 -acodec copy -vcodec copy smallfile.MP4 dapat seseorang menjelaskan mengapa?
Asaf Chertkoff
Saya akan berspekulasi di sini sedikit, tetapi sepertinya file sumber Anda dikodekan dengan framerate yang libx264 tidak mendukung, sehingga melewatkan bingkai. Saya pikir ini harus bekerja dengan baik, tetapi mungkin ada beberapa kecelakaan dengan audio karena ini.
Alex
mungkin. akan melihat ...
Asaf Chertkoff
1
Perintah Asaf juga bekerja untukku. Tampaknya opsi codec akan muncul setelah inputfile.
daithib8
10

Jika Anda lebih suka menggunakan gui ada avidemux yang tersedia di repositori. Menentukan titik potong jauh lebih mudah dengan cara ini!

Marker pemilihan menentukan bagian dari video yang akan diekspor, menggunakan "salin" dalam audio dan video untuk menghindari pengodean ulang. Anda juga dapat memilih wadah atau mengubahnya (avi, mp4, mkv, dll).

Saya telah melakukan banyak pemotongan pada beberapa video dari kamera dan itu instan!

pengguna24362
sumber
2
Avidemux telah dihapus dari repositori Ubuntu 16.04.
naXa
5

Tidak yakin apa kebutuhan Anda, tetapi Anda dapat mengetik ini di terminal: Untuk membuka terminal, tekan Ctrl+ Alt+T

split -b 4M file.mp4 part_file

Ini akan membagi file menjadi potongan 4 megabyte. Untuk membuat ulang file lagi, ketik

cat part_file[a-c] > file.mp4

Perhatikan bahwa saya telah mengetik a-cdi braket, karena perpecahan membuat 3 file. dalam kasus Anda, Anda mungkin harus melihat lebih banyak. Saya akan jelaskan dengan sebuah contoh.

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

Ini menunjukkan bahwa saya memiliki satu file, sebesar 9,3 MB. Untuk membelah, saya mengetik:

$ split -b 2M file.mp4 part_file

Setelah pemisahan, saya mendapatkan file sebagai:

$ 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

Perhatikan dua karakter yang ditambahkan ke nama file.

Untuk mendapatkan file kembali:

$ cat part_filename[start-end][start-end] > file.mp4
theTuxRacer
sumber
3
Metode ini akan sangat cepat tetapi tidak akan memungkinkan Anda untuk memainkan potongan individu. Anda dapat menggunakan ffmpeg untuk mengekstraksi bagian-bagian dari file video tetapi untuk membaginya secara otomatis menjadi banyak potongan kecil yang semuanya dapat dimainkan secara individual tanpa merakitnya kembali secara keseluruhan, Anda mungkin perlu menulis skrip dengan file mp4. Saya bisa memberikan contoh jika Anda suka, tetapi jika hanya memindahkan file maka jawaban ini bagus.
Slipstream
@Lipstream - Anda benar - saya perlu membaginya untuk youtube. kamera saya menghasilkan MP4 tetapi saya harus membagi mereka karena mereka lebih lama dari 15 menit yang diizinkan.
Asaf Chertkoff
maka Anda ingin jawaban alex di bawah ini ...
Slipstream
5

Gunakan mkvmerge dari paket mkvtoolnix. Gunakan sesuatu seperti

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

Ini akan membagi file Anda menjadi 1 GB blok. Anda dapat menggunakan indikasi waktu juga.

rtega
sumber
Saya belum pernah menggunakannya tetapi mencoba: brilian! kecepatan instan dan semuanya terus dibaca. Terima kasih!
tuk0z
Ini sangat berguna jika Anda ingin menentukan ukuran. Terima kasih!
BBQ Singular
0

Jika ini adalah bagian MP4 2, maka dengan pendekatan yang sangat teliti, Anda dapat melanjutkan file tanpa encoder / decoder. Jawaban ini ditujukan untuk orang-orang dengan latar belakang pemrograman dan editor hex yang ingin menjaga file "" tetap "".

Bagian pertama dari file adalah mdat, yang kedua adalah moov, berisi metadata yang digunakan oleh decoder untuk menemukan potongan, yang berisi sampel (gambar dan suara yang disandikan, tidak penting untuk diketahui). Lalu ada STCO, STTS, STSC, dll. Ini disebut "atom". Mereka menunjukkan berapa offset, panjang, dll, dari masing-masing potongan. Jika Anda melakukan pekerjaan bersih, Anda dapat membuat beberapa contoh video Anda, dan versi yang berbeda dengan potongan yang berbeda. File kemudian akan dapat diputar di pemutar, dan dicerna di situs web video. Jika Anda seorang pembuat kode, buat parser MP4 atau gunakan yang sudah ada untuk melacak bagian-bagian dan penyeimbangnya. Itu akan membantu Anda mengetahui lebih banyak tentang format, dan untuk membangun kembali file secara otomatis.

Léon Pelletier
sumber
0

Metode termudah dan sangat mudah adalah dengan menggunakan MP4Box:

  1. # apt install gpac
  2. $ MP4Box -split 15 /home/asafche/Videos/myVideos/MAH00124.MP4(parameternya adalah waktu dalam detik). Untuk kemungkinan pemisahan lainnya, misalnya berdasarkan ukuran, lihat https://gpac.wp.imt.fr/mp4box/mp4box-documentation/ atauMP4Box -h general

Penggabungan juga sederhana.

Csaba Toth
sumber
0

Alat GUI open-source lain , yang dapat membagi video, dan melakukan lebih banyak lagi, adalah rem tangan

Misalnya, di sini saya membagi video saya di 24,53 (mm: dd), dan juga memotong bingkai di sisi kanan: masukkan deskripsi gambar di sini

Anda dapat melihat pratinjau output dengan mudah - dengan tombol "Pratinjau".

Noam Manos
sumber