HandbrakeCLI seçeneklerini FFmpeg seçeneklerine nasıl çevirebilirim?


13

El freni için çalışan komut satırı ayarları bir grup var, ama bazen bazı videolar (neden bilmiyorum) el freni "Bellek yetersiz istisna" atar. Aynı seçenek anahtarlarını bulabilir ve FFmpeg ile yapabilir miyim merak ediyordum, ama yapmak o kadar kolay bir şey gibi görünmüyor.

FFmpeg bazen bu seçeneklere sahip değildir veya varsayılan olarak bir şeyler yapar. Örneğin FFmpeg ile nasıl özel anamorfik yapılacağını bilmiyorum. Benim için elde edilen videoların el freni ile yapılmış gibi iyi olması çok önemlidir. İşte El Freni hattı:

HandBrakeCLI.exe --input "d:\input.mpg" --output "d:\output.mp4" --rate 29.97 --cfr --arate 44.1 --format mp4 --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0 --encoder x264 --vb 5200 --aencoder faac --ab 128 --mixdown stereo -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200:level=42:bframes=2:min-keyint=60:keyint=60:ref=4:me=umh:merange=64:subme=7:8x8dct:cabac=1  -v3 -2 -a none

Bunu bir FFmpeg komutuna nasıl çevirebilirim?

Yanıtlar:


20

El freni, video dönüştürme için x264 kodlayıcıyı kullanır. Tüm x264 seçeneklerine ve bunların FFmpeg muadillerine genel bir bakış sunan bir site var . Ancak, bunlar biraz kullanımdan kaldırılmıştır ve bu seçeneklerden bazıları artık çalışmıyor veya yeniden adlandırılmış olabilir. Ayrıntı seçeneklerinin çoğu için x264 profillerini kullanmalısınız - ancak oraya ulaşacağız.

Temel El Freni seçeneklerinin çoğu (örn. Kare hızı) x264'e özgü değildir ve FFmpeg çevrimiçi belgelerine dağılmıştır .

Başlamadan önce lütfen yeni bir FFmpeg sürümü kullandığınızdan emin olun. Onların indirme sitesi tüm önemli işletim sistemleri için inşa statik vardır.

Hadi gidelim:

  • --input "d:\input.mpg" --output "d:\output.mp4"

    FFmpeg sözdizimi ffmpeg -i input.mpg … d:\output.mp4.

  • --rate 29.97

    Video kare hızını ile belirtin -r 29.97. (Handbrake --cfrsadece sabit bir kare hızı belirler. Burada gerekli değildir).

  • --arate 44.1

    Ses örnekleme hızını -ar 44100(Hz olarak) ile ayarlayın .

  • --format mp4

    FFmpeg MP4 istediğinizi bildiğinden gerekli değildir.

  • --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0

    Bu, boyutu 1920 × 1080 olarak ayarlamaktan başka bir şey yapmaz. FFmpeg'de bunu yapın -s:v 1920x1080veya filtreleri kullanmak istiyorsanız -filter:v "scale=1920:1080",.

  • --encoder x264 --vb 5200

    Enkoderi -c:v libx264ve bit hızını sabit olarak ayarlayın -b:v 5200K. Kalite ayarları söz konusu olduğunda henüz orada olmadığımızı unutmayın.

  • --aencoder faac --ab 128 --mixdown stereo

    Yukarıdakine benzer, ile -c:a libfaac -b:a 128K -ac 2. FAAC'ın artık FFmpeg'de desteklenmediğine dikkat edin; bunun yerine, bununla birlikte yerleşik FFmpeg kodlayıcıyı -c:a aac -b:a 128Kkullanın.

  • -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200

    Bu, kodlama modunu sabit bir bit hızı veya sabit kalite yerine bir akış senaryosunu hedefleyen VBV olarak ayarlar . Sabit kaliteye de x264 için varsayılan CRF denir - buna El Freni'nde “Hız Faktörü” denir. CRF genellikle size en iyi kalite kodlarını verirken, VBV modu size çevrimiçi akış için veya sınırlı özelliklere sahip bazı cihazlar için daha uygun bir dosya sağlar.

    VBV'yi ayarlamak için ffmpeg'deki -maxrate 5200Kve -bufsize 5200Kseçeneklerini kullanın .

    -crf 23CRF'yi ayarlamak için ffmpeg'de kullanın .

  • level=42

    Kullanın -level 42. Bu H.264 Seviyesidir .

  • bframes=2:min-keyint=60:keyint=60:ref=4

    İle B-Frame sayısını ayarlayın -bf 2. Minimum ana kare aralığı ile -keyint_min 60ve maksimum ana kare aralığı ile ayarlanır -g 60. Referans resim sayısı ile ayarlanır -refs 4.

  • me=umh:merange=64:subme=7:8x8dct:cabac=1

    Bunlar, ffmpeg'de ek olarak ayarlayabileceğiniz seçeneklerdir -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1- doğrudan ffmpeg seçenekleriyle eşlenmeyen diğer x264 kodlayıcı ayarları gibi.

    Tembelseniz, ayrıntılarla ilgilenmiyorsanız veya işler işe yaramıyorsa, "TL; DR" sürümü -preset:v mediumşöyledir : Kullanın (veya ortam ön ayarı varsayılan olarak olduğu gibi bırakın). X264 ön ayarları, sıkıştırma verimliliği için kodlama hızını takas eden bir dizi seçenek seçer. Bunlar teamül olarak adlandırılan konum ultrafast, superfast, veryfast, faster, fast, mediumiçin slow, slowerve veryslow. Kendinizi rahat hissettiğiniz şeyi seçin.

Özetlemek gerekirse, uzun versiyon:

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -level 42 -bf 2 -keyint_min 60 -g 60 -refs 4 -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1 -c:a aac -b:a 128K -ar 44100 d:\output.mp4

Ya da kullanacağım kısa kod (VBV kodlaması ve birkaç ayrıntı seçeneği kaldırıldığında):

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 d:\output.mp4

Çok amaçlı bir dönüşüm için sabit kalite kodlamasına geçmek için bunu kullanın ve -crfparametreyi 18'den 28'e değiştirin; burada daha düşük kalite daha iyi kalite ve 23 varsayılan değerdir:

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -crf 23 -c:a aac -b:a 128K -ar 44100 d:\output.mp4

Haha @slhck, tıpkı cevabımın son rötuşlarını yaparken, daha iyi bir cevap verirsin.
evilsoup
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.