Saya ingin dapat melakukan ini beberapa kali sekarang jadi saya bertanya.
Jika saya memiliki file video atau audio yang ada ffmpeg
,, mplayer
dan pemutar media lainnya dapat mendeteksi setidaknya beberapa "propretinya" seperti wadah, codec dan bitrate yang digunakan, mungkin berbagai kualitas dan penyandian pengaturan khusus, dll.
Bagaimana saya bisa mengekstrak pengaturan ini dari file yang ada untuk menggunakannya (langsung) untuk pengkodean dengan ffmpeg?
Sebagai contoh, saya mendapat mkv
video yang dikodekan x264
dengan beberapa pengaturan, dan avi
file lain yang tidak terkompresi . Saya ingin "menyalin" pengaturan penyandian yang digunakan untuk file mkv x264 untuk mentranskode avi dengan pengaturan yang sama .
Catatan: Saya mencari cara yang seharusnya tidak menyertakan pekerjaan manusia dengan "menerjemahkan" pengaturan dari decoder ke encoder. Tidak apa-apa jika saya perlu mengekstrak pengaturan terlebih dahulu dan menyimpannya di suatu tempat tapi saya ingin dapat memberi makan opsi baca ke baris perintah atau file konfigurasi | preset untuk ffmpeg.
ffprobe
(terutama dengan-show_streams
dan-show_format
opsi) dan menggunakan informasi itu untuk skrip hal-crf
opsi umumnya direkomendasikan. Lihat Panduan Pengkodean FFmpeg dan x264 .channels:6
dari file video, tetapi untuk menyandikannya Anda harus menggunakan sakelar-ch:6
. Beberapa sakelar menggunakan 1 huruf, sebagian menggunakan dua huruf, dll.Jawaban:
Tidak ada cara otomatis untuk melakukan itu. Anda harus melihat parameter dari file asli dan menerapkannya pada file output.
Dalam kebanyakan kasus, ini akan menjadi sebagai berikut:
-filter:v scale
atau-s:v
-filter:v fps
-r
-pix_fmt
(mis.,-pix_fmt yuv420p
Harus memberi Anda kompatibilitas terbaik)-g
Tetapi bahkan jika Anda bisa melakukannya dengan benar, beberapa perangkat mungkin memerlukan informasi kepemilikan khusus yang tertanam dalam bitstream.
Adapun tugas spesifik menggunakan
x264
, ini tidak akan sepele. Saya tidak mengetahui ada satu skrip pun yang menangani tugas-tugas ini, yang biasanya dilakukan secara manual. Untuk sebagian besar info tentang pengaturan penyandian, di Unix / Linux atau OS X, Anda dapat menggunakanmediainfo
beberapa trik Bash.Misalnya, untuk video yang disandikan x264 dalam file MP4:
Ini akan menampilkan daftar opsi x264:
Anda kemudian bisa meneruskan opsi-opsi ini secara manual ke biner x264.
Jika Anda menggunakan FFmpeg, itu sedikit lebih rumit, karena tidak semua opsi x264 dapat atau harus dipetakan seperti ini. Catatan yang sering sederhana preset, tune dan profil spesifikasi akan melakukan juga (seperti yang terlihat di
x264 --fullhelp
dan panduan encoding x264 ), dan menentukan tingkat CRF cukup.Dan ini bahkan tidak mempertimbangkan audio, di mana untungnya, tidak ada banyak pilihan.
sumber
mediainfo
output dan memetakan opsi ini ke ffmpeg-x264-params
. (Lihat juga panduan penyandian x264 ). Tetapi jika Anda menginginkan solusi umum untuk semua jenis codec / encoders atau format kontainer, maka Anda perlu menulis skrip yang cukup canggih yang melakukan konversi.