Jawaban yang lebih baik , dengan penjelasan, memasukkan saran cerdas dari slhck dan Mulvya, tanpa parameter penting.
ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -b:a 256k -c:v copy -map 0:a:0 -map 1:v:0 output.mp3
ffmpeg
alat manupulasi audio / video: sudah dipilih oleh OP, sangat cocok untuk pekerjaan ini.
-i video.mp4
File input pertama: video dengan beberapa audio yang ingin kami ekstrak.
-i cover.jpg
file input kedua, gambar yang ingin kami tampilkan ketika kami memutar file audio yang dihasilkan.
-acodec libmp3lame
kami ingin membuat file .mp3, menggunakan pengode LAME.
-b:a 256k
ini mengatur bitrate untuk trek audio ke 256Kb / s konstan. Opsi yang lebih cerdas adalah mengkodekan dengan bitrate variabel, menentukan parameter kualitas : -q:a 0
meminta kualitas maksimum, sementara -q:a 4
seringkali merupakan kompromi yang baik antara kualitas audio yang dirasakan dan bitrate (dan karenanya, ukuran file).
-c:v copy
ini menunjukkan bahwa aliran video (gambar .jpg) tidak akan dideteksi ulang tetapi harus disalin sebagaimana adanya. Ini berguna untuk menghindari pemrosesan yang tidak perlu dan potensi kehilangan kualitas ketika memasukkan kembali ke format lossy. Dalam kasus kami, tanpa parameter ini gambar akan diterjemahkan dari .jpg dan disandikan ke .png, yang tampaknya adalah format asli yang dipilih secara default. Ini tidak akan mewakili penurunan kualitas karena .png adalah kerugian, tetapi lebih sering daripada tidak akan menyebabkan ukuran file meningkat, karena fakta bahwa .jpg (menjadi lossy) umumnya menawarkan tingkat kompresi yang lebih baik.
-map 0:a:0
ini memilih aliran yang akan digunakan dari 0:
file input pertama ( ): itu harus stream pertama ( :0
) audio ( a
) yang dikandungnya.
-map 1:v:0
ini memilih streaming pertama ( :0
) video ( v
) dari 1:
file input kedua ( ).
output.mp3
nama parameter ini dipilih secara licik agar sudah menyarankan bahwa ini harus menjadi nama yang akan diberikan ke file audio output (.mp3) dengan gambar yang dimasukkan yang ingin kita buat.
Jawaban asli
Ini membuat file audio (.mp3) dengan gambar statis dengan menyusun video (.mp4) dan gambar (.jpg) dari pernikahan saya:
ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -metadata title=video -b:a 256k -map_metadata 0 -map 0:1 -map 1 output.mp3
Lihat dokumentasi ffmpeg tentang memilih stream input -map
, yang merupakan opsi yang relevan di sini.
Saya pertama kali menjalankan perintah dengan sederhana -map 0 -map 1
dan mendapat info ini:
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Stream #1:0 -> #0:2 (mjpeg (native) -> png (native))
Jadi saya tahu saya ingin streaming 1
(aac audio) dari file yang memiliki nomor indeks 0
, yaitu file video; oleh karena itu harus dipilih secara eksplisit dengan -map 0:1 -map 1
.