Dari pengalaman saya sendiri, jika Anda benar-benar tidak ingin kehilangan kualitas, --losless adalah apa yang Anda cari.
Tidak yakin tentang avconv
tetapi perintah yang Anda ketik terlihat identik dengan apa yang saya lakukan FFmpeg
. Di FFmpeg
Anda dapat melewati parameter seperti ini:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
Sebagian besar x265
sakelar (opsi tanpa nilai) dapat ditentukan seperti ini (kecuali yang hanya CLI, yang hanya digunakan dengan x265
biner secara langsung).
Dengan itu, saya ingin berbagi pengalaman saya dengan x265
pengkodean. Untuk sebagian besar video (baik itu WMV, atau MPEG, atau AVC / H.264) saya gunakan crf=23
. x265
memutuskan sisa parameter dan biasanya itu melakukan pekerjaan yang cukup baik.
Namun sering sebelum saya berkomitmen untuk transcoding video secara keseluruhan, saya menguji pengaturan saya dengan mengubah sebagian kecil dari video tersebut. Berikut ini sebuah contoh, misalkan file mkv dengan stream 0 menjadi video, streaming 1 menjadi audio DTS, dan streaming 2 menjadi subtitle:
ffmpeg -hide_banner \
-ss 0 \
-i "INPUT.mkv" \
-attach "COVER.jpg" \
-map_metadata 0 \
-map_chapters 0 \
-metadata title="TITLE" \
-map 0:0 -metadata:s:v:0 language=eng \
-map 0:1 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" \
-map 0:2 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
-metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" \
-c:v libx265 -preset ultrafast -x265-params \
crf=22:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 \
-c:a copy \
-c:s copy \
-t 120 \
"OUTPUT.HEVC.DTS.Sample.mkv"
Perhatikan bahwa garis sinyal backslash terputus dalam sebuah perintah yang panjang, saya melakukannya untuk membantu saya melacak berbagai bit dari input CLI yang kompleks. Sebelum saya menjelaskannya baris demi baris, bagian di mana Anda hanya mengkonversi sebagian kecil dari video adalah baris kedua dan baris terakhir kedua: -ss 0
berarti mencari 0 detik sebelum mulai mendekode input, dan -t 120
berarti berhenti menulis ke output setelah 120 detik. Anda juga dapat menggunakan format waktu jj: mm: dd atau jj: mm: dd.sss.
Sekarang baris demi baris:
-hide_banner
mencegah FFmpeg
menampilkan informasi bangunan saat mulai. Saya hanya tidak ingin melihatnya ketika saya menggulir ke atas di konsol;
-ss 0
cari 0 detik sebelum mulai mendekode input. Perhatikan bahwa jika parameter ini diberikan setelah file input dan sebelum file output, itu menjadi opsi output dan memberitahu ffmpeg
untuk mendekode dan mengabaikan input sampai x detik, dan kemudian mulai menulis ke output. Sebagai opsi input, ini kurang akurat (karena pencarian tidak akurat dalam kebanyakan format wadah), tetapi hampir tidak memerlukan waktu. Sebagai opsi keluaran, ini sangat tepat tetapi membutuhkan banyak waktu untuk memecahkan kode semua aliran sebelum waktu yang ditentukan, dan untuk tujuan pengujian Anda tidak ingin membuang waktu;
-i "INPUT.mkv"
: Tentukan file input;
-attach "COVER.jpg"
: Pasang seni sampul (gambar mini, poster, apa pun) ke output. Seni sampul biasanya ditampilkan di penjelajah file;
-map_metadata 0
: Salin atas semua dan semua metadata dari input 0, yang dalam contoh ini hanyalah input;
-map_chapters 0
: Menyalin info bab (jika ada) dari input 0;
-metadata title="TITLE"
: Tetapkan judul video;
-map 0:0 ...
: Peta aliran 0 dari input 0, yang berarti kita ingin aliran pertama dari input ditulis ke output. Karena aliran ini adalah aliran video, itu adalah aliran video pertama dalam output , karenanya penentu aliran :s:v:0
. Tetapkan tag bahasanya ke Bahasa Inggris;
-map 0:1 ...
: Mirip dengan baris 8, petakan streaming kedua (audio DTS), dan atur bahasa dan judulnya (untuk memudahkan identifikasi saat memilih dari pemain);
-map 0:2 ...
: Mirip dengan baris 9, kecuali aliran ini adalah subtitle;
-metadata:s:t:0 ...
: Atur metadata untuk sampul depan. Ini diperlukan untuk format wadah mkv;
-c:v libx265 ...
: Opsi codec video. Sudah begitu lama sehingga saya memecahnya menjadi dua baris. Pengaturan ini baik untuk video bluray berkualitas tinggi (1080p) dengan gradasi minimum gradien (yang x265 sucks at). Kemungkinan besar adalah pembunuhan berlebihan untuk DVD dan acara TV dan video ponsel. Pengaturan ini sebagian besar dicuri dari posting Doom9 ini ;
crf=22:...
: Kelanjutan parameter codec video. Lihat posting forum yang disebutkan di atas;
-c:a copy
: Menyalin audio;
-c:s copy
: Salin teks terjemahan;
-t 120
: Berhenti menulis ke output setelah 120 detik, yang memberi kita klip 2 menit untuk melihat pratinjau kualitas trancoding;
"OUTPUT.HEVC.DTS.Sample.mkv"
: Output nama file. Saya menandai nama file saya dengan codec video dan codec audio utama.
Wah. Ini adalah jawaban pertama saya jadi jika ada sesuatu yang saya lewatkan silakan tinggalkan komentar. Saya bukan ahli produksi video, saya hanya seorang lelaki yang terlalu malas untuk menonton film dengan memasukkan disk ke dalam pemutar.
PS. Mungkin pertanyaan ini milik orang lain karena tidak terkait erat dengan Unix & Linux.
--lossless
mungkin sebenarnya memperbesar file, jika ia menerjemahkan codec yang sebelumnya lossy dan kemudian mengkodekan apa yang ia decode lossless. Kualitas akan tetap sama persis dengan input.