Web için bir videonun bit hızı, -maxrate ve -bufsize nasıl düşünülür


13

Videolarımı web'e yüklemek üzere kodlamak için ffmpeg kullanıyorum. Ben ffmpeg kullanma hakkında bu yazı gördüm , ama değerleri dikkate almak için oldukça alamadım.

4 dakika süren 70 MB boyutunda bir videom olduğunu varsayalım. Nasıl bu bayraklar için değer dikkate alacağını: -b:v, -maxrateve -bufsizebu komut için?

ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output

Yoksa crf19-24 gibi normal bir değer var mı? Yardımınız ve rehberliğiniz için gerçekten minnettar olurum.


Video kodlama bir sanattır ve ustalaşmak için yüzlerce parametre vardır. İki geçişli kodlamanın, çoğu senaryoda bit hızlarıyla oynamaktan (çok) daha iyi kalite ve sıkıştırma sunacağına dikkat edin. Genellikle son boyut ve video bit hızı esas olarak video çıkış boyutuna bağlıdır. ffmpeg, aynı video kalitesini korumasını söylerseniz, maxrate ve bitrate'i seçecek kadar akıllıdır. Ayrıca, 480px genişliğinde bir video oluşturmanın çoğu senaryoda yeterince iyi olduğuna ve bit hızlarıyla oynatılandan çok daha fazla bant genişliği kazandıracağına dikkat edin.
earizon

1
@earizon Kabul ediyorum, video kodlama bir sanattır ve 480 genellikle yeterince iyidir. Ancak, daha yüksek çözünürlüklere sahip olmayı da seviyorum çünkü artık 640x480'de bir CRT kullanmıyorum. Kesinlikle boyutları küçültmekle bitratlarla uğraşmaktan daha iyi bir yol, ama yine de seçenekleri seviyorum.
Wyatt8740

Yanıtlar:


21

Bu gerçekten yükleme hızınıza bağlıdır.

bufsizedini ffmpeg'in bit hızınızı sabit tutmakla ilgili olduğunu belirleyecektir. FFmpeg Wiki: Çıkış bit hızını sınırlamak içinbufsize 64k a ayarlarsanız , mevcut bit hızını her 64 kilobaytta bir hesaplar ve buna göre ayarlanır. Daha küçük boyutlar, ani değişiklikler yapmak için x264 kontrolleri arasında yeterli boşluk bırakmaması nedeniyle kaliteye zararlı olabilir.bufsize

Eğer senin maxrate640Kbps olduğunu ve senin bufsize64k, daha sonra ikinci bir x264 her onuncu kontrol ederim. Bu alt-optimal - FFmpeg Wiki: Akış siteleri için kodlama, her 1 ila 2 saniyede bir çalıştırılmasını önerir. Bu mantıklı gelmediyse, maxrate/ bufsize= kontrol sıklığı olarak düşünün . Genel bir kural olarak bu frekansı 1 ile 2 saniye arasında tutun.

Her ikisini de ayarladıysanız maxrateve bufsizeşunları yapmalısınız:

  • maxrateen düşük yükleme hızınız büyük olasılıkla ne olursa olsun ayarlanır ( ffmpeg wiki örneğinde , bu toplam yükleme hızının% 80'i kadardır, ancak kilometreniz değişebilir).
  • (bir saniye) ile iki kez (2 saniye) bufsizearasında bir yere ayarlayın . Bu hala yeterince düşük değilse, cihazınızı indirin ve ardından buna göre yeniden ayarlayın .maxratemaxratemaxratebufsize

Sonra, biraz oynamalısınız, ama bir yere başlamak zorunda olduğunuzdan beri maxrate, 600k civarında başlıyorum , bu da crfher şeyi kullanmadan önce benim için yeterince tatmin ediciydi .

İsterseniz bufsize, değerin çıktınızın görünümünü nasıl değiştirdiğini görmek için her üç veya dört saniyede bir olduğu gibi daha düşük değerler deneyebilirsiniz . Ardından videonuz için ne kadar endişelenmeniz gerektiğini belirleyebilirsiniz.

Normal bir değer yoktur, aslında - crfçıktıyı düşündüğü şeye göre optimize etmek, hızı ayarlanan her şeyi korumak için en iyi tampon boyutudur. Bazı kaliteyi korurken, ara sıra ani artışlar pahasına bir dosya boyutunu düşük tutmaya çalışır.


1
"Bufsizi, maxrate (bir saniye) ile maxrate'inizin yarısı (2 saniye) arasında bir yere ayarlamamalı" "bufsize, maxrate (bir saniye) ile aynı ve iki kez maxrate (2) arasında bir yere ayarlanmamalıdır saniye) "?
Ely

@Ely Bence haklısın. Benim her yarım saniyede bir yapardı. Ben hallederim!
Wyatt8740

@ Wyatt8740 Üzgünüm, çok meşguldüm. Sadece bir soru olsa. Ben kullanırsanız crf, o zaman ben belirtmek gerek yok bitrate, buffsizeve maxrate? Ve daha (kullanım verimli olduğu, bu yüzden eğer crfya bitrate, buffsizeve maxrate)?
Robin

@Robin Crf ile bufsize ve maxrate kullanabilirsiniz. Unutmayın, crf belirli bir kaliteye uyacak şekilde bit hızını anında ayarlayacaktır ve videonun parçaları çok karmaşıksa, bit hızı gök yüksekliğinde çekim yapar ve muhtemelen bunu istemezsiniz, bu yüzden daha iyi "bir kilit" koy ve maxrate (ama çok katı değil, ya da video bok gibi görünecek! :))
Ely

@Robin doğru, başkalarıyla crf kullanmanız gerekmez. Ancak, kısıtlamak istiyorsanız bunu yapabilirsiniz. crf sürekli kaliteyi korumaya çalışır - bunu bufsizeve ile sınırlar içinde yapmaya zorlayabilirsiniz maxrate. bitrateGerçi ihtiyacın yok . Ely dediği gibi, akış için daha iyi hale getirecektir.
Wyatt8740
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.