Membagi file audio menjadi potongan dengan panjang yang ditentukan

16

Saya memiliki beberapa file audio panjang (masing-masing 80 menit; m4a) dan ingin mereka dibagi menjadi potongan 5 atau 10 menit.

Saya melihat banyak pertanyaan untuk memisahkan file audio pada jeda yang panjang, nada, dll. Tetapi sepertinya tidak dapat menemukan satu mengenai operasi sederhana ini. Adakah yang tahu cara sederhana untuk melakukan ini?

Tentu saja, sesuatu yang otomatis, dan baris perintah tidak masalah — bahkan lebih disukai.

Terima kasih sebelumnya!

Andrew Cheong
sumber

Jawaban:

20

Dengan ffmpeg terbaru (unduh build statis dari sini ):

ffmpeg -i in.m4a -f segment -segment_time 300 -c copy out%03d.m4a

Ini menggunakan muxer segmen dan menyalin bitstream. Jika file Anda memiliki stream audio dan video, Anda dapat menonaktifkan streaming video dengan -vn.


Ini adalah one-liner, Anda hanya perlu menginstal Ruby dan FFmpeg :

ruby -e '(0..4500).step(300) { |x| system "ffmpeg -ss #{x} -i in.m4a -c copy -t 300 out-#{x}.m4a"}'

Cukup jalankan di folder yang sama di mana in.m4a. Ini akan menyalin bitstream audio, jadi mengeksekusi ini mungkin akan memakan waktu kurang dari beberapa detik.

Untuk menjelaskan:

  • 4800 detik adalah panjang file audio (80 menit × 60 detik), jadi split terakhir kami adalah 4.500 (4800 - 300 detik).
  • Kami beralih dari 0 hingga 4.500, dan kami membagi setiap 300 detik (5 menit × 60d).
  • FFmpeg akan mulai pada waktu yang ditentukan oleh -ss
  • Dan itu akan menyalin untuk waktu yang ditentukan oleh -t
  • Ini akan menulis beberapa file output yang disebut out-<x>.mp4, di mana <x>waktu mulai dalam detik.
slhck
sumber
Terima kasih! Apakah perintah Anda untuk UNIX, atau apakah itu berfungsi pada Windows juga? Saya memiliki instalasi Cygwin, jadi tidak masalah, tetapi hanya ingin tahu. Saya akan mencobanya ketika sampai di rumah.
Andrew Cheong
Ini asli bekerja di Linux (dan Unix yang telah menginstal Ruby), dan itu juga harus bekerja pada Windows - Anda hanya perlu Ruby dan FFmpeg, tetapi Anda tidak memerlukan Cygwin untuk itu. Ada Ruby Installer dan executable FFmpeg untuk Windows juga. Sekarang, perintah FFmpeg bisa otomatis tanpa Ruby, menggunakan file batch Windows, atau PowerShell, tapi saya bukan pengguna Windows, jadi itu sebabnya saya mengambil Ruby (karena ia datang dengan Linux dan OS X). Mungkin seseorang dengan pengalaman Windows batch dapat menulis ulang perintah Ruby di atas?
slhck
Saya memiliki Cygwin karena saya tidak dapat terbiasa dengan baris perintah Windows. Saya pikir saya sudah menginstal ruby ​​dan ffmpeg di sana, jadi saya harus dapat menggunakan perintah Anda. Tapi ya, versi Windows dapat membantu orang lain melihat pertanyaan ini. +1 untuk saat ini; akan menerima ketika saya mencobanya.
Andrew Cheong
2
Jika, seperti saya, file m4a Anda menyertakan aliran video (dalam kasus saya, satu gambar) maka Anda perlu menambahkan -vnsakelar untuk memilih hanya aliran audio. Jika Anda ingin mempertahankan streaming video, Anda harus meng-output ke file dengan ekstensi .mp4.
Rob Church
2

Saya sendiri sedang mencari solusi. Cara termudah yang saya temukan untuk melakukannya adalah melalui MP4Box :

mp4box -split 300 infile.m4a

Di mana "300" adalah waktu dalam detik. MP4Box akan secara otomatis menulis file keluaran bernomor.

(Anda tidak perlu menginstal seluruh aplikasi GPAC besar. Ini adalah file yang dapat Anda ekstrak dari arsip agar berfungsi: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)

dfkt
sumber
2

Sudah lama sejak pertanyaan ini diajukan, tetapi setelah bermain-main dengan Ruby dan ffmpeg saya memutuskan harus ada cara yang lebih mudah untuk melakukan ini di dalam Windows, dan saya menemukan ada.

Unduh dan instal Audacity

Buat file teks di suatu tempat Anda dapat menemukannya dan rekatkan string berikut ke dalamnya: (interval 300 detik, yaitu. 5 menit, 10 menit akan menjadi 600 interval, dll ...)

0       300  
300     600  
600     900  
900     1200  
1200    1500  
1500    1800  
1800    2100  
2100    2400  
2400    2700  
2700    3000  
3000    3300  
3300    3600  
3600    3900  
3900    4200  
4200    4500  
4500    4800  
4800    5100  
5100    5400  
5400    5700  
5700    6000  
6000    6300  
6300    6600  
6600    6900  
6900    7200  
7200    7500  
7500    7800  
7800    8100  
8100    8400  
8400    8700  
8700    9000  
9000    9300  
9300    9600  
9600    9900  
9900    10200  
10200   10500  
10500   10800  
10800   11100  
11100   11400  
11400   11700  
11700   12000  
12000   12300  
12300   12600  
12600   12900  
12900   13200  
13200   13500  
13500   13800  
13800   14100  
14100   14400  
14400   14700  
14700   15000  

Pastikan saja bahwa jumlah interval lebih besar dari total panjang file audio Anda, saya membuat ini yang berjalan selama lebih dari tiga jam, banyak lama untuk kebutuhan saya, menambahkan lebih banyak untuk itu sesuai dengan kebutuhan Anda.

Impor file audio ke Audacity dan lakukan penyeimbangan apa pun dan edit apa pun yang Anda inginkan, lalu klik file> label> label impor

Pilih file teks Anda, lalu pilih track label dan track audio secara bersamaan dan klik file> Export Multiple.

Ubah tipe file yang ingin Anda ekspor dan sesuaikan pengaturan, lalu pilih folder tujuan.

Saya selalu mengubah pola penomoran ke Penomoran Setelah Nama File Awalan dan ketik nama file yang saya inginkan di kotak dan program akan menambahkan angka, tekan Ekspor dan biola!

C. Hamilton
sumber
-1

Unduh Audacity - Ini adalah alat audio gratis yang dapat melakukan persis apa yang Anda butuhkan, dan sepenuhnya gratis dan mudah digunakan. http://audacity.sourceforge.net/

JohnnyVegas
sumber
2
Apakah ada cara untuk membuat Audacity melakukan ini secara otomatis? Saya tidak ingin memotong beberapa file secara manual menjadi 16 bagian masing-masing dengan memilih potongan 5 menit dengan mouse saya, memotongnya, pergi ke menu, menyimpan file, dan lain-lain.
slhck
Saya sudah memiliki Audacity, jadi jika ada cara otomatis, tolong beri tahu saya!
Andrew Cheong