Kendi tecrübelerime göre, kesinlikle kalite kaybına uğramak istemiyorsanız, - aradığınız şey - parlaklık değildir.
Emin değilim avconv
ama yazdığınız komut, yaptığım işle aynı görünüyor FFmpeg
. İçindeki FFmpeg
parametreyi şunun gibi geçebilir:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
Çoğu x265
anahtar (değeri olmayan seçenekler) bu şekilde belirtilebilir (yalnızca CLI olanlar hariç, bunlar yalnızca x265
doğrudan ikili ile kullanılır ).
Bunun dışında, tecrübelerimi x265
kodlama ile paylaşmak istiyorum . Çoğu video için (WMV veya MPEG veya AVC / H.264 olabilir) kullanıyorum crf=23
. x265
Parametrelerin geri kalanına karar verir ve genellikle yeterince iyi bir iş çıkarır.
Ancak çoğu zaman bir videonun tamamını kod dönüştürmeden önce, ayarlarımı söz konusu videonun küçük bir bölümünü dönüştürerek test ederim. Örnek olarak, akış 0'ın video, akış 1'in DTS sesi ve akış 2'nin bir altyazı olduğu bir mkv dosyası olduğunu varsayalım:
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"
Ters eğik çizgi sinyal hattının uzun bir komutta kesildiğini, karmaşık bir CLI girişinin çeşitli parçalarını izlememe yardımcı olmak için yapıyorum. Satır satır açıklamadan önce, videonun yalnızca küçük bir bölümünü dönüştürdüğünüz kısım ikinci satır ve ikinci son satırdır: -ss 0
girişin kodunu çözmeye başlamadan önce 0 saniye aramayı -t 120
ve çıktıya yazmaya son vermeyi ifade eder 120 saniye sonra. Ayrıca ss: dd: ss veya ss: dd: ss.sss zaman biçimlerini de kullanabilirsiniz.
Şimdi satır satır:
-hide_banner
FFmpeg
Başlangıçta derleme bilgileri gösterilmesini engeller . Sadece konsola girdiğimde görmek istemiyorum;
-ss 0
girişin kodunu çözmeye başlamadan önce 0 saniye bekler. Eğer bu parametre giriş dosyasından sonra ve çıkış dosyasından önce verilirse , bunun bir çıkış seçeneği haline geldiğini ffmpeg
ve girdiyi x saniyeye kadar çözmeyi ve yok saymayı ve ardından çıktıya yazmaya başladığını söyleyin . Bir giriş seçeneği olarak daha az doğrudur (çünkü çoğu konteyner biçiminde arama yapmak doğru değildir), ancak neredeyse hiç zaman almaz. Bir çıkış seçeneği olarak, kesindir ancak belirtilen zamandan önce tüm akışın kodunu çözmek için önemli miktarda zaman alır ve test amacıyla zaman kaybetmek istemezsiniz;
-i "INPUT.mkv"
: Giriş dosyasını belirtin;
-attach "COVER.jpg"
: Çıktıya bir kapak resmi (küçük resim, poster, her neyse) ekleyin. Kapak resmi genellikle dosya araştırıcılarda gösterilir;
-map_metadata 0
: 0 numaralı girişteki tüm meta verilerin üzerine kopyalayın; bu örnekte sadece giriş olan;
-map_chapters 0
: (Varsa) bölüm bilgisini 0 girişinden kopyalayın;
-metadata title="TITLE"
: Videonun başlığını ayarlayın;
-map 0:0 ...
: Girdi 0'daki harita akışı 0, yani girişten ilk akışın çıktıya yazılmasını istediğimiz anlamına gelir. Bu akış bir video akışı olduğundan , çıkıştaki ilk video akışıdır , bu nedenle akış belirticisidir . Dil etiketini İngilizce'ye ayarlayın;:s:v:0
-map 0:1 ...
: Satır 8'e benzer şekilde, ikinci akışı (DTS sesi) eşleyin ve dilini ve başlığını ayarlayın (oyunculardan seçim yaparken daha kolay tanımlama için);
-map 0:2 ...
: Satır 9'a benzer, ancak bu akış bir altyazı değildir;
-metadata:s:t:0 ...
: Kapak resmi için meta verileri ayarlayın. Bu, mkv container formatı için gereklidir;
-c:v libx265 ...
: Video codec seçenekleri. O kadar uzun ki, iki çizgiye böldüm. Bu ayar, gradyanda (x265'in berbat olduğu) minimum bantlama ile yüksek kaliteli bluray video (1080p) için iyidir. Büyük olasılıkla DVD'ler, TV şovları ve telefon videoları için fazladan bir engeldir. Bu ayar çoğunlukla bu Doom9 postasından çalınır ;
crf=22:...
: Video codec parametrelerinin devamı. Yukarıda belirtilen forum gönderisine bakın;
-c:a copy
: Ses üzerinden kopyala;
-c:s copy
: Altyazıları kopyala;
-t 120
: Çıktıya yazmayı 120 saniye sonra durdurun; bu, kayıt kodlama kalitesini önizlemede bize 2 dakikalık bir klip verir;
"OUTPUT.HEVC.DTS.Sample.mkv"
: Çıktı dosya adı. Dosya adlarımı video codec bileşeni ve birincil ses codec bileşeni ile etiketlerim.
Whew. Bu benim ilk cevabım, bu yüzden eğer kaçırdığım bir şey varsa, bir yorum bırakın lütfen. Ben bir video prodüksiyon uzmanı değilim, sadece diski oynatıcıya yerleştirerek film izleyemeyecek kadar tembel bir adamım.
PS. Belki de bu soru, Unix ve Linux ile yakından ilişkili olmadığı için başka bir yere aittir.
--lossless
Aslında, daha önce kaybedilen kod çözücünün kodunu çözerse ve daha sonra kayıpsız bir şekilde kodunu çözdüğü takdirde, dosyayı büyütebilir. Kalite, girdi ile tamamen aynı kalacaktır.