2011-10-17 15 views
8

Tworzę aplikację obsługującą rozmowy wideo i szukam samouczka/doktora wyjaśniającego strukturę kodeka h.264. Chcę móc spakować strumień, zawinąć go w datagramy, wysłać i rozpakować po stronie odbiorcy.wyjaśniłem kodek H.264

Wszelkie sugestie/materiały do ​​czytania?

Odpowiedz

9

Co masz na myśli przez strukturę? Jeśli mówisz o składni strumienia bitów, możesz pobrać H.264 standard za darmo. Istnieje również wiele książek/artykułów na temat H.264, takich jak ta autorstwa Iain Richardson.

Jeśli jesteś bardziej zainteresowany transportem sieciowym H.264 przez IP, dlaczego nie używasz standardu RTP i związanego z nim payload format?

+0

Bardziej interesuje mnie proces pakowania RTP. Przygotowuję aplikację do strumieniowania wideo na urządzeniu BlackBerry i mam dostęp do strumienia wideo i muszę mieć możliwość spakowania go w pakiety RTP w prawidłowy sposób, aby mógł być właściwie używany na końcu odbiorczym, niezależnie od utraty datagramu. Dzięki tym linkom wydaje mi się dokładnie to, czego potrzebuję. Ostatnia rzecz - czy plik wideo z kodowanym wideo w formacie h.264 ma nagłówek? Chodzi mi o to, że kiedy nagrywam plik z kodowaniem h.264, zapisuje wideo w formacie pliku .3gp i wydaje się, że na początku pliku znajduje się nagłówek - gdzie mogę go przeczytać? –

+0

Możesz znaleźć to w specyfikacji 3GPP: AFAICT wygląda na to, że może to być następująca, ale sprawdź dokładnie, czy: http://www.3gpp.org/ftp/Specs/html-info/26244.htm W przeciwnym razie wyszukaj w http : //www.3gpp.org/specifications. Należy pamiętać, że plik .3gp to tylko format kontenera (w twoim przypadku używany w telefonach komórkowych) i nie ma nic wspólnego z pakietowaniem sieci. Ponadto może być konieczne/być w stanie odczytać H.264 SPS i PPS gdzieś w nagłówku. Może być ważne, aby wyodrębnić te informacje. – Ralf

1

Spójrz na x264, która jest istniejącą implementacją kodeka. Możesz nawet rozważyć użycie tego kodeka zamiast implementowania od podstaw AVC.

5

Oto bardzo podstawowe zasady H.264

Jeśli piszesz aplikację dla kamer sieciowych, RTP jest to, czego szukasz. A jeśli implementujesz go w C++, wybierze się biblioteka ffmpeg.