Saya menemukan sesuatu untuk video, yang terlihat seperti ini.
ffmpeg -i * -c:v libx264 -crf 22 -map 0 -segment_time 1 -g 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*9)" -f segment output%03d.mp4
Saya mencoba menggunakan itu untuk file audio, tetapi hanya file audio pertama yang berisi audio sebenarnya, yang lain diam, selain itu bagus, itu membuat file audio baru untuk setiap detik. Adakah yang tahu apa yang harus dimodifikasi untuk membuatnya berfungsi dengan file audio, atau perintah lain yang dapat melakukan hal yang sama?
Jawaban:
Ini bekerja untuk saya ketika saya mencobanya pada file mp3.
Dimana
-segment_time
jumlah waktu yang Anda inginkan untuk setiap file (dalam detik).Referensi
sumber
mp3
denganm4a
Untuk membagi file audio besar menjadi satu set lagu dengan panjang yang bervariasi, Anda dapat menggunakan perintah berikut:
Misalnya, saya memecah satu file .opus Inctrack Original Soundtrack menjadi sub-file menggunakan file teks ini yang berisi awal, akhir, nama:
Saya menulis
awk
program singkat ini untuk membaca file teks dan membuatffmpeg
perintah dari setiap baris:Berikut adalah versi yang lebih rinci
python
dari program yang disebutsplit.py
, di mana sekarang file trek asli dan file teks yang menentukan sub-trek dibaca dari baris perintah:Anda dapat dengan mudah membangun lebih banyak dan lebih rumit
ffmpeg
panggilan dengan memodifikasi templat perintah dan / atau menambahkan lebih banyak bidang ke setiap baris file track_list.sumber
subprocess.call(command)
adalahpython
analog kesystem(command)
dalamawk
, yang keduanya memungkinkan Anda untuk mengirimffmpeg
perintah shell. Saya mengedit posting saya untuk memasukkanpython
implementasi yang fleksibel menggambarkan satu cara Anda bisa melakukan ini.echo
untuk benar-benar menjalankan perintah.source="source audio file.m4a"; i=0; t1=0:00; for end_time in 1:24 5:40 14:48 19:33 35:11 40:00 46:08 51:58 ''; do i=$((i+1)); t0=$t1 t1=$end_time; echo ffmpeg -i "$source" -acodec copy -ss $t0 ${t1:+-to} $t1 $(printf "track%02d.%s" $i ${source##*.}); done
Baris berikut akan membagi file audio menjadi beberapa file masing-masing dengan durasi 30 detik.
Ubah 30 (yang merupakan jumlah detik) ke nomor yang Anda inginkan.
sumber
jawaban slm :
tidak akan bekerja untuk saya tanpa
-map 0
menambahkan:sumber
Solusi yang diberikan tidak berhasil untuk saya. Saya percaya ini karena versi yang lebih lama
ffmpeg
pada sistem saya.Bagaimanapun, saya ingin memberikan solusi yang berhasil bagi saya. Anda juga dapat menyesuaikan penghitung waktu sehingga memungkinkan tumpang tindih pada audio jika Anda mau.
Output file #0 does not contain any stream
ffmpeg -i your_audio_file.mp3 -acodec copy -t 00:00:30 -ss 00:00:00 split_audio_file.mp3
Bagi file audio Anda menjadi 30 detik
sumber