Aynı çözünürlük ve kare hızı için bit hızı nasıl değişir?


15

Video kalitesi hakkında okuma Çözünürlüğü, saniyedeki kare sayısını ve bit hızını, videonun boyutuna karar verdiğini buldum.

Benim sorum, bit hızının nasıl hesaplandığı ve nasıl farklılaşabileceği.

Diyelim ki bir videonun 360x240 çözünürlüğü var. Kare başına 86400 piksel alır. Kare hızı 30 Hz'dir. Böylece video saniyede 86400 × 30 = 2592000 piksel sürüyor.

Diyelim ki 1 piksel 3 Bayt (24 Bit) veri: saniyede 2592000 × 24 bit video (62208000 Bit), yani 62208 kBits (Bu doğru gelmiyor, belki de hesaplamamda bir sorun var).

Ama nasıl farklılık gösterebilir ve kalite açısından nasıl fark yaratır?


Video bir bitmap görüntüsü dizisi olsaydı. Png'niz zaten png / jpg resim dosyaları için kapalı.
Daniel Beck

Mevcut iki cevap, video sıkıştırmayla ilgili belirgin özelliği vurgulamamaktadır: çoğu (hepsi değilse de) tüm video kodekleri kayıplı sıkıştırma kullanır . Yani, ham video sıkıştırıldığında ve kodlandığında bazı resim bilgileri atılır. Atılan ve kaybedilen görüntü bilgilerinin / detaylarının miktarı veya derecesi bir kalite faktörü tarafından belirlenir . Ses sıkıştırmasına gelince, hem kayıplı hem de kayıpsız sıkıştırma teknikleri vardır.
talaş

@sawdust: Yapmıyorlar mı? Üçüncü paragrafımın bunu oldukça netleştirdiğini düşündüm. Her neyse, çok fazla bilgi vermek bazen o kadar iyi değildir; Arzu edilirse askerin daha fazla öğrenmesine izin verecek kadar vermeyi düşünüyorum. Aksi takdirde, gönderinizin neden birinin bir kompresörü diğerine seçeceğini veya neden bu kadar çok farklı yöntem vb
Marty Fried

@ sawdust Doğru, bu JPEG bölümüne biraz gömüldü. Biraz daha ayrıntı ekledim.
slhck

Yanıtlar:


21

Hesapladığınız, ham, sıkıştırılmamış bir videonun bit hızıdır. Bunları genellikle araştırma veya diğer özel uygulamalar dışında bulamazsınız. Yayıncılar bile, tipik YouTube videonuzdan çok daha yüksek bir bit hızında da olsa sıkıştırılmış video kullanır.

Dolayısıyla, video kalitesinin videonun nasıl sıkıştırıldığıyla çok ilgisi vardır. Ne kadar çok sıkıştırırsanız, çerçeve başına o kadar az bit gerekir. Ayrıca, ne kadar çok sıkıştırırsanız, kalite o kadar kötü olur. Şimdi, bazı videoların sıkıştırılması diğerlerinden daha kolay - özünde, bu yüzden aynı çözünürlük ve kare hızına sahip olmalarına rağmen daha düşük bir bit hızına sahipler.

Bunun neden olduğunu anlamak için video sıkıştırmanın kullandığı iki ana ilkenin farkında olmanız gerekir. Bunlara "mekansal" ve "zamansal artıklık" denir.

Mekansal artıklık

Doğal içerik gösteren görüntülerde uzamsal artıklık vardır. JPEG'in bu kadar iyi çalışmasının nedeni budur - piksel blokları birlikte kodlanabildiğinden görüntü verilerini sıkıştırır. Örneğin, bunlar 8 × 8 pikseldir. Bunlara "makro bloklar" denir.

Modern video codec bileşenleri aynı şeyi yapar: Temelde bir kareyi blok blok sıkıştırmak için JPEG'e benzer algoritmalar kullanırlar. Artık piksel başına bitleri değil, makro blok başına bitleri saklıyorsunuz çünkü pikselleri daha büyük gruplarda "özetliyor". Bunları özetleyerek, algoritma insan gözü tarafından görülemeyen bilgileri de atacaktır - bu, bit hızının çoğunu azaltabileceğiniz yerdir. Verileri ölçerek çalışır . Bu, daha algılanabilir frekansları koruyacak ve göremediklerimizi "atacak". Niceleme faktörü çoğu kodekte "QP" olarak ifade edilir ve kalite için ana kontrol düğmesi.

Artık devam edebilir ve daha önce aynı görüntüde kodlanmış makro bloklardan makro blokları tahmin edebilirsiniz . Buna intra-tahmin denir . Örneğin, gri bir duvarın bir kısmı çerçevenin sol üst köşesinde zaten kodlanmıştı, bu yüzden bu makro bloğu aynı çerçevede tekrar kullanabiliriz, örneğin hemen yanındaki makro bloğu için. Sadece bir öncekine olan farkı saklayacağız ve verileri kaydedeceğiz. Bu şekilde, birbirine çok benzeyen iki makro bloğu kodlamamız gerekmez.

Bit hızı neden aynı görüntü boyutu için değişiyor? Bazı görüntüleri kodlamak diğerlerinden daha kolaydır. Uzamsal aktivite ne kadar yüksek olursa, o kadar çok kodlamanız gerekir. Pürüzsüz dokular ayrıntılı olanlardan daha az bit alır. Aynı şey iç tahmin için de geçerlidir: Gri duvarın bir çerçevesi, diğerlerini tahmin etmek için bir makro bloğu kullanmanıza izin verirken, akan su çerçevesi o kadar iyi çalışmayabilir.

Geçici artıklık

Bunun nedeni, başka bir çerçeveyi takip eden bir çerçevenin muhtemelen öncekine çok benzemesi. Çoğunlukla, sadece küçük bir parça değişir ve onu tam olarak kodlamak mantıklı olmaz. Video kodlayıcıların yaptığı, sadece makro bloklar için yapabildikleri gibi, sonraki iki kare arasındaki farkı kodlamaktır .

Wikipedia'nın hareket tazminatıyla ilgili makalesinden bir örnek alarak , bunun orijinal çerçeveniz olduğunu varsayalım:

O zaman bir sonraki kareye olan fark sadece şudur:

Enkoder şimdi sadece gerçek farklılıkları saklıyor, piksel piksel değerleri değil. Bu yüzden her kare için kullanılan bitler her seferinde aynı değildir. Bu "fark" kareleri tam olarak kodlanmış bir kareye bağlıdır ve bu nedenle modern kodekler için en az iki tür çerçeve vardır:

  • I-kareleri (ana kareler olarak da bilinir) - bunlar tam olarak kodlanmış olanlardır
  • P-çerçeveleri - bunlar sadece farkı saklayanlardır

Bazen bir videoya I-kareleri eklemeniz gerekir. Gerçek bit hızı, kullanılan I-kare sayısına da bağlıdır. Dahası, sonraki iki kare arasında hareket farkı ne kadar fazla olursa, kodlayıcının o kadar fazla depolaması gerekir. Hareket eden "hiçbir şey" videosunu kodlamak, bir spor videosundan daha kolay olacaktır ve kare başına daha az bit kullanacaktır.


+1 - demek istediğim buydu, ancak sıkıştırma algoritmam biraz dışarıda kaldı. :)
Marty Fried

+1 Tüm ihtiyacım olan bu. Özellikle hareket telafisi. Teşekkürler
vincent mathew

6

Matematiğinizin gerçekten doğru olduğuna inanıyorum, ama biraz daha fazlası var; sıkıştırma burada eksik bağlantıdır.

Sıkıştırılmamış bit hızını hesapladınız ve sıkıştırmanın var olmasının nedenini buldunuz. Sıkıştırılmamış video ile bit hızları inanılmaz derecede büyür. Böylece, videoyu kaynağında sıkıştırırlar ve alıcıda açarlar ve bit hızı yönetilebilir hale gelir. Sadece donanım veya yazılım olabilecek yeterince hızlı bir dekompresöre ihtiyacınız var.

Yani, sorun ne kadar sıkıştırmaya tolerans gösterilebiliyor - genellikle kayıpsız değil, bu yüzden bilgi kaybediyorsunuz, ancak bu kadar fark edilmeyecek daha az önemli verileri kaybedecek kadar akıllı hale getirmeye çalışıyorlar. Çok fazla hareket olana kadar genellikle oldukça kolaydır, o zaman daha karmaşık hale gelir.

Düzenleme: Eklemeyi unuttum, ancak sıkıştırma yöntemini uygulayan parçalar codec bileşeni; Bunu yayınınızda bir etiket olarak kullandığınızı fark ettim.


3
Ayrıca, video sıkıştırma genellikle piksel tabanlı değildir, ancak makro bloklar olarak adlandırılan piksel blokları üzerinde çalışır .
slhck
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.