Saya memiliki sekitar 70 file mp4, dan saya ingin mengekstrak file audio secara langsung tanpa transcoding lebih lanjut. Semua file mp4 memiliki file audio aac.
Saya mengerti saya dapat menggunakan perintah berikut untuk mengekstrak file audio dari salah satu file mp4:
avconv -i "INPUT FILE" -map 0:1 -c:a copy "OUTPUT FILE"
Bagaimana cara mengekstrak semua file audio dari semua file 70 mp4, jadi saya berakhir dengan 70 file aac?
bash /path/to/the/script %F
- seperti di sini-map
mungkin masih menyebabkan video dianggap saat Anda beralih ke format output lain (jika format itu dapat berisi audio dan video). Lebih aman untuk mempertahankannya apa adanya.Jawaban Xiao umumnya paling berguna jika Anda memiliki semua file dalam satu direktori; tetapi jika ada file MP4 yang tersebar di direktori yang berbeda, Anda dapat menggunakan
find
perintah ini untuk mengonversi semuanya.Ini menggunakan bentuk substitusi string bash yang sedikit berbeda di akhir: "$ {0 /% mp4 / m4a}" memberitahu bash untuk mengganti mp4 dengan m4a, tetapi hanya jika mp4 berada di akhir string.
sumber
%
, itu akan melakukan substitusi untuk contoh pertama dari string yang ditemukannya; Anda juga bisa menggunakannya#
untuk membuatnya hanya mengganti string jika itu pada awal variabel; jadi $ {0 / mp4 / m4a} akan menggantikan instance pertama dari mp4 dengan m4a (yang bisa menjadi masalah jika Anda memiliki nama file yang sangat aneh); dan $ {0 / # mp4 / m4a} akan menggantikan mp4 untuk m4a, tetapi hanya jika nilai string variabel dimulai dengan mp4 (jelas tidak digunakan di sini, tetapi mungkin berguna di tempat lain).Untuk menghindari beberapa file diproses secara bersamaan (yang mungkin menggunakan terlalu banyak sumber daya), gunakan
parallel
. Secara default, itu hanya melakukan satu pekerjaan pada satu waktu. Jika Anda ingin menggunakan beberapa inti CPU secara paralel, cobaparallel -j 4 ...
untuk 4 pekerjaan secara paralel. Lihat jugaman parallel
.Baris ini akan mengekstrak
aac
file audio dari video yang dipilih dan memasukkannya ke dalamm4a
wadah.Saat bekerja langsung di CLI, gantikan
%F
dengan daftar file input Anda. Misalnya*.mp4
.Terinspirasi oleh jawaban ini , oleh jawaban sebelumnya untuk pertanyaan ini, dan oleh komentar evilsoup untuk yang terakhir (mengatakan: 'file aac mentah tidak dapat berisi metadata; jika Anda ingin menyimpan metadata dari file asli kemudian gunakan m4a (yang hanyalah nama lain untuk mp4, tetapi cukup dikenal luas oleh pemutar audio) bukan aac sebagai ekstensi file ' ).
Saya menggunakan perintah seperti itu dalam tindakan kustom Thunar,
membatasi aplikasi ke video yang berisi
aac
audio.Agar jendela terminal terbuka selama pemrosesan, yang ditutup pada akhirnya, perintah dapat diubah seperti:
sumber
Saya memperluas jawaban @ Xiao-Long Chen, mengubahnya menjadi skrip yang melompati file ketika file output lebih baru:
sumber