Sugerowany współczynnik kompresji z H. 264?

Uwaga bene: zdaję sobie sprawę, że jest to niezwykle skomplikowane pytanie z około miliona poziomów niuansów, które staram się zmniejszyć do jednej liczby...

Mam zamiar podjąć się dużego projektu kodowania wideo przy użyciu kodowania H. 264. Staramy się tworzyć wiele Profili szybkości transmisji, aby umożliwić przesyłanie strumieniowe między połączeniami internetowymi, procesorami, urządzeniami itp.

Ogólnie rzecz biorąc, jakiego stopnia kompresji powinienem się spodziewać (podczas pobyt w rozsądnym poziomie jakości)?

Na przykład plik wideo o rozdzielczości 640x360 (16:9) pikseli przy 24 klatkach na sekundę i 16-bitowym kolorze powinien dawać plik nieskompresowany , który wynosi około 33 MB/s.

Powiedziano mi, że dla tego pliku 500 kb/s (lub 62 KB/s) nie jest nieuzasadnioną przepływnością wideo. To wydaje się szalone-więcej niż kompresja 530:1? To 99,8% kompresji. Czy moja matematyka się myli?

Szukam tylko szorstkiej prowadnicy zewnętrznej dla jakości, jak "większa niż 500X kompresja jest szalona" lub "mniej niż 400x to strata przepustowości". Szukałem wszędzie i nic nie daje mi żadnej oczekiwanej kompresji...

Author: Nuby, 2011-02-17

5 answers

W dość ciekawym dokumencie o nazwie H. 264 Primer , podano prostą formułę jako wskazówkę, aby obliczyć' idealną ' przepływność pliku wyjściowego, na podstawie charakterystyki wideo:

[szerokość obrazu] x [wysokość obrazu] x [framerate] x [Motion rank] x 0.07 = [żądany bitrate]

Gdzie szerokość i wysokość obrazu jest wyrażona w pikselach, a ranga ruchu jest liczbą całkowitą od 1 do 4, 1 to ruch NISKI, 2 to ruch średni, a 4 to ruch wysoki (ruch ponieważ ilość danych obrazu zmienia się między klatkami, zobacz połączony dokument, aby uzyskać więcej informacji).

Więc na przykład, jeśli weźmiemy film 1280x720 z 24 FPS, ze średnim ruchem (film z powolnymi ruchami kamery, niewiele zmian sceny...), oczekiwana idealna przepływność wynosiłaby:

1280 x 720 x 24 x 2 x 0.07 = 3.096.576 bps => około 3000 kbps

To tylko podpowiedź i moim zdaniem jedyny sposób na dokładne znalezienie idealnej szybkości transmisji jest próbny przez błąd:)

 55
Author: SirDarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-26 12:30:09

Będzie się znacznie różnić w zależności od zawartości filmów źródłowych. Zaraz do tego dojdę.

640x360 nie jest taki duży. 512kbps jest bardzo rozsądny i prawdopodobnie standardowy. Może 768kbps, jeśli naprawdę interesuje Cię jakość.

Jak to możliwe? Uproszczona odpowiedź: istnieje kilka technik i faktów na temat kompresji wideo , które to umożliwiają:

  1. nie każda klatka wideo struktura danych we wspólnym H. 264 (lub inne kodeki w tym zakresie) jest pełnym obrazem. Zamiast tego istnieją dwa rodzaje, które są potocznie określane jako
    1. kluczowe klatki: pełny rendering całego obrazu wideo
    2. Intra-frames : opis zmian w poprzedniej ramce. Klatki te stanowią zazwyczaj zdecydowaną większość (80% -99%) klatek w filmie.
  2. H. 264 jest " stratny", podobnie jak wiele innych kodeków. Nie rozmnażają się piksel po pikselu, klatka po klatce dokładny duplikat oryginalnego wideo źródłowego. przykład: Lossy blocks: jeśli wszystkie oprócz jednego piksela w obszarze jest tego samego koloru, kodek "traci" jeden piksel. Zamiast więc przechowywać informacje o każdym pikselu w ramce, kodek po prostu mówi "x1, Y1 do x2, y2 to wszystkie kolory x" . Bardzo wydajny.

To wszystko jest szalenie bardziej złożone, z milionami różnych podejść, technik i algorytmy w obrębie określonych kodeków i między kodekami, aby tak się stało.

Wracając więc do komentarza" będzie się znacznie różnić w zależności od zawartości filmów źródłowych": współczynnik kompresji, który zobaczysz, i uzyskana jakość, będzie znacznie zależeć od:

  • zawartość wideo
  • twoja tolerancja na Artefakty (bloki, utrata koloru, utrata definicji)
  • parametry kodeka, które ustawiłeś i jak Ustawiłeś them

przykład: wideo drzwi w pokoju (jak kamera bezpieczeństwa) z jedną klatką na klucz co dziesięć minut będzie miało zadziwiająco wysoki współczynnik kompresji. Moje obliczenia z tyłu serwetki wskazują na kompresję 15 000:1.

Ponieważ rozpoczynasz pracę nad dużym projektem kodowania wideo, polecam kilka rzeczy, aby określić, jaki będzie Twój współczynnik kompresji:

  • weź próbkę filmów źródłowych, które zakodujemy. 100 lub więcej jest istotne statystycznie.
  • kodować je z różnymi przepływnościami, z różnymi parametrami, aby określić, jakie wynikające cechy odpowiadają twoim potrzebom

Zmiana parametrów kodera, aby zmniejszyć wideo, może mieć również inne skutki:

  • wyższe wymagania procesora odtwarzania
  • oczekiwania kodeków dla graczy. Nie wszystkie zakodowane Filmy H. 264 mogą być odtwarzane przez wszystkich graczy]}
  • dłuższe kodowanie czasy
  • różne degradacje jakości

To bardzo skomplikowany temat. Powodzenia. Mój doświadczony test "thumb-to-the-wind" mówi, że będziesz bardziej niż zadowolony z 512 - 768kbps dla swojego projektu.

 20
Author: Stu Thompson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-01 03:21:17
Compression Ratio Rules of Thumb
Compression ratios to maintain excellent quality:
– 10:1 for general images using JPEG
– 30:1 for general video using H.263 and MPEG-2
– 50:1 for general video using H.264 / MPEG-4 AVC

Z http://www.kanecomputing.co.uk/pdfs/compression_ratio_rules_of_thumb.pdf

 8
Author: Const,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-21 22:28:14

Nie zapomnij o zwykłym odtwarzaniu MPEG będzie używać tylko YUV 4: 2: 0. W 8-bitowej głębi kolorów każdy piksel ma wartość tylko 16-bitową (lub 64-bitową każdy 4 piksele). Proszę, tylko plik RAW z aparatu będzie używał 16-bitowej głębi i musi być wart miliony USD!!Tylko średnio wysoki film DVR może zapewnić 12-14bit!!I nikt nie będzie używał H. 264 do przechowywania surowca. H. 264 jest przeznaczony dla produktu końcowego.

W 640x360 / 24P YUV4: 2: 0 bitrate będzie warte:

  640x360x24x(8+4+4)/8 = 10.5MB/s

Dla 500kbps kompresja wyniesie tylko 172: 1. On normal

Dla ekspatriacji YUV4: 2: 0, przeczytaj:
http://en.wikipedia.org/wiki/Chroma_subsampling

 2
Author: Wilson Luniz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-08 05:19:49

Dzielę się swoją wiedzą na temat kodowania w środowisku H264

Jeśli chodzi o stosunek 450-512 kbits / sekundę, najlepiej jest użyć H264 z wysokim 5,0 lub wysokim 7,0. Cóż, mogę zasugerować, że aby uzyskać dobry stosunek w równowadze z najlepszą jakością, kluczem, który naprawdę ma dla niego znaczenie, jest zabawa z rozmiarem rozdzielczości. Wynik rozdzielczości wideo = 3/4 * rozdzielczość natywnego / Raw wideo

H264 ma tendencję do utraty szczegółów bardziej, jeśli nie skompresujesz ramki do trochę mniejszej rozdzielczość.

 0
Author: laruffii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-05 01:44:58