FFmpeg'de “-vb” ve “minrate” / “maxrate” ayarlarıyla değişken bit hızları


12

Oluşturmak için gereken zaman çok farklı.

  • -b 3500K -minrate 0K -maxrate 8000K 1 saat 17 dakika sürer
  • vb=3000k 2,5 saat sürer

Nedir vb 3000kve nasıl farklıdır -b 3500K -minrate 0K -maxrate 8000K? Bu değişken bit hızı ayarları mı?

Olarak değiştirirsem -b 3500K -minrate 3500K -maxrate 3500K, bu sabit bit hızı mıdır?

Yanıtlar:


16

Lütfen FFmpeg belgelerini okuyun veffmpeg -h full seçenekler listesi için çalıştırın . Ayrıca, x264 ve x265 gibi kodlayıcılarda hız kontrol modları arasındaki farkları gösteren yazdığım bu makaleye bir göz atın .

Genellikle, seçenekler şu anlama gelir:

  • -b:v(veya -vbaynı) kodlayıcının kullanacağı hedef ortalama bit hızını belirtir:

    -b <int> E..VA. bit hızını ayarla (bit / sn cinsinden) (0'dan INT_MAX'a)

  • -minrate kullanılacak minimum toleransı belirtir:

    -minrate <int> E..VA. Minimum bit hızı toleransını ayarlayın (bit / sn cinsinden). Bir CBR kodlama kurulumunda en kullanışlıdır. Aksi takdirde çok az kullanılır. (INT_MIN - INT_MAX arası)

  • -maxratemaksimum toleransı belirtir. Ancak, belgelerin belirttiği gibi, bu yalnızca aşağıdakilerle bağlantılı olarak kullanılır bufsize:

    -maxrate <int> E..VA. Maksimum bit hızı toleransını ayarlayın (bit / sn cinsinden). Gerektirir bufsizeayarlanmalıdır. (INT_MIN - INT_MAX arası)

    -bufsize <int> E..VA. ratecontrol buffer size (bit olarak) ayarla (INT_MIN - INT_MAX arasında)

    Bu yalnızca değişken bit hızı kodlaması için anlamlıdır, burada sabit bit hızı veya sabit kalite modeli kullanmak yerine kodlayıcı, kod çözücüde sanal bir tamponla bir iletim simülasyonu yapar. -minrate/ -maxrate/ -bufsizeSeçenekler o tampon boyutunu kontrol eder. Bu modu genellikle akış için kullanırsınız çünkü teknik, kod çözücü tamponunun aşırı veya düşük akmasına neden olacak belirli bir değeri aşmamak için bit hızını sınırlayacaktır.

Özetlemek gerekirse, bit hızını sınırlamak için birkaç seçeneğiniz vardır:

  1. Bir CBR işlemi ayarlamak için kodlayıcının ne sunduğunu kontrol etmeniz gerekir. Tipik olarak, "mükemmel" bir sabit bit hızı elde edemezsiniz, çünkü kodlayıcı bitleri boşa harcamaz. Ayarlamak -b:v, -minrateve -maxrateaynı seviyelere ayarlamak , örneğin libx264 için:

    ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
    

    Uyarı: Bu, kodlanması zor videolar için düşük kaliteye neden olabilir ve bitleri boşa harcar. Kesinlikle sabit oranlı bir çıkış elde etmeniz gerekmedikçe, bu seçeneği kullanmayın.

  2. Gerçek zamanlı aktarım için kısıtlı / değişken bit hızı işlemi ayarlayın. -b:v 3500K -maxrate 3500K -bufsize 1000KÖrneğin kullanın . Oranı ve arabellek boyutlarını bağlama göre ayarlamanız gerekir. Tampon boyutu ne kadar yüksek olursa, izin verilen bit hızı varyasyonu da o kadar yüksek olur.

  3. Sabit bir kalite hedefi kullanın ve bit hızını yalnızca ani artışları yakalamak için sınırlayın. Örneğin, -c:v libx264 -crf 23 -maxrate 4M -bufsize 4Mdeğişken bit hızında 23 hedef CRF ile kodlamak için kullanın , ancak çıkışı maksimum 4 MBit / s ile sınırlayın.


1
Değişken bit hızı kullanarak nasıl kodlar? sözdiziminde olduğu gibi?
Scott Downey

Hangi kodlayıcıyı kullanmak istiyorsunuz?
slhck

ffmpeg, kdenlive'de kullanıldığına inanıyorum
Scott Downey

Hayır, demek istediğim: H.264 / MPEG-4 AVC video için x264 veya MPEG-4 için XviD veya Ogg Theora vb. Basitçe, hangi dosyayı istiyorsunuz? MP4?
slhck

3
FFmpeg'de x264 ile kodlama hakkında daha fazla bilgi için buraya bakın ; özellikle önayarlara bakar (genellikle çok hızlı önayarı kullanırım, testlerimde dosya boyutundaki en büyük düşüş süper hızlı ve çok hızlı arasındaydı - bundan sonra farklar çok daha arttı. YMMV tabii ki).
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.