Anda mengatakan ingin "mengekstrak audio dari mereka (mp3 atau ogg)". Tetapi bagaimana jika audio dalam file mp4 bukan salah satunya? Anda harus tetap transcode. Jadi mengapa tidak membiarkan deteksi format audio hingga ffmpeg?
Untuk mengonversi satu file:
ffmpeg -i videofile.mp4 -vn -acodec libvorbis audiofile.ogg
Untuk mengonversi banyak file:
for vid in *.mp4; do ffmpeg -i "$vid" -vn -acodec libvorbis "${vid%.mp4}.ogg"; done
Anda tentu saja dapat memilih parameter ffmpeg untuk pengkodean audio yang Anda sukai, untuk mengatur hal-hal seperti bitrate dan sebagainya.
Gunakan -acodec libmp3lame
dan ubah ekstensi dari .ogg
menjadi .mp3
untuk pengodean mp3.
Jika yang Anda inginkan adalah benar-benar mengekstrak audio, Anda cukup "menyalin" trek audio ke file menggunakan -acodec copy
. Tentu saja, perbedaan utama adalah bahwa transcoding lambat dan cpu-intensif, sementara menyalin sangat cepat karena Anda hanya memindahkan byte dari satu file ke file lainnya. Berikut cara menyalin hanya trek audio (dengan asumsi itu dalam format mp3):
ffmpeg -i videofile.mp4 -vn -acodec copy audiofile.mp3
Perhatikan bahwa dalam kasus ini, format audiofile memiliki harus konsisten dengan apa yang wadah memiliki (yaitu jika audio format AAC, Anda harus mengatakan audiofile.aac
). Anda dapat menggunakan ffprobe
perintah untuk melihat codec yang Anda miliki, ini dapat memberikan beberapa informasi:
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "videofile.mp4"
Cara yang mungkin untuk menguraikan codec audio secara otomatis dan memberi nama file audio yang sesuai adalah:
mkdir -p output
# current directory has to contain at least one .mp4 file
for vid in *.mp4; do
codec="$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "$vid")"
case "$codec" in
mp3 ) filetype=mp3 ;;
vorbis ) filetype=ogg ;;
* ) filetype= ;;
esac
if [ "$filetype" ]; then
ffmpeg -i "$vid" -vn -acodec copy output/"${vid%.*}"."$filetype"
else
ffmpeg -i "$vid" -vn -acodec libvorbis output/"${vid%.*}".ogg
done
Catatan: file output dibuat di sub-direktori output
yang dibuatnya di awal (jika perlu). Untuk codec lain selain mp3 dan vorbis, mengkonversi audio ke ogg. Ubuntu 14.04 tidak memiliki ffmpeg dalam repositori standar, tetapi Anda dapat menambahkan ppa: mc3man / trusty-media repositori dan menginstal paket ffmpeg untuk mendapatkan perangkat lunak yang diperlukan. Lihat di sini untuk detailnya.