2013-02-21 19 views
28

Otrzymuję następujące błędy podczas dekodowania klatek H.264 odebranych ze zdalnego końca połączenia wideo SIP opartego na protokole H.264. Doceń wszelką pomoc w zrozumieniu tam błędów.błędy przy dekodowaniu klatek H.264 za pomocą ffmpeg

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

Odpowiedz

24

To tylko oznacza, że ​​ffmpeg nie widział jeszcze klatki kluczowej, która przenosi informacje SPS i PPS. SPS i PPS są kluczowe przy dekodowaniu przychodzącej ramki/wycinka. Klatki kluczowe są wysyłane okresowo (tj. Co 5-10 sekund lub więcej); więc jeśli okaże się, że dołączyłeś do strumienia przed nadejściem klatki kluczowej; zobaczysz to ostrzeżenie dla każdej klatki, dopóki nie pojawi się klatka kluczowa.

Gdy tylko klatka kluczowa pojawi się z przewodu, ffmpeg będzie miała wystarczającą ilość informacji do odkodowania tej klatki (i kolejnych klatek do następnej klatki kluczowej), aby te ostrzeżenia zniknęły.

+0

To wydaje się być problemem. Zdalny koniec nie wysyła klatki kluczowej, nawet jeśli mój klient zażąda jej za pomocą SIP INFO. Jakieś pomysły, jak można to rozwiązać? Używam starej wersji Bria na zdalnym końcu. –

+0

Strona zdalna nie wysyła żadnych klatek kluczowych? To bardzo dziwne. Nie jestem pewien, czy Bria ma opcję skonfigurowania interwału klatki kluczowej, ale warto się nim zajrzeć. Zasadniczo w ogóle nie widzisz żadnego filmu ze strony zdalnej, czy oglądanie go zajmuje trochę czasu? – Aki

+0

brak wideo –

2

do dekodowania ramki lub plaster sliceHeader jest dekodowany, który odwołuje się do PPS lub "Picture Parameter Set". Posiada informacje dotyczące specyfiki ramki, takie jak szerokość, wysokość itp.

Domyślam się, że twoje dane przychodzą przez kanał wejściowy do strumieniowania, w takim przypadku SPS i PPS zostałyby wysłane wcześniej w strumieniu.

Być może będziesz musiał połączyć to samo ze swoim strumieniem.

2

Należy dodać ramki sps i pps informacje. ffmpeg potrzebuje tych informacji do dekodowania. Możesz znaleźć te wartości w pliku SDP.

W pliku SDP, należy spojrzeć jednostki NAL, można zobaczyć coś takiego z0IAHukCwS1xIADbugAzf5GdyGQl, aM4xUg

tych wartości based64 kodowanych należy przekonwertować go do formatu hex. Używam wireshark i wireshark zamienia się w te wartości dla ciebie. Następnie masz wartości sps i pps.

Teraz musisz dodać te informacje Nal przed ramką danych.

00 00 00 01 00 00 00 SPS 01 pps 00 00 00 01 Dane

dla nich formacie H264 I zostały z wykorzystaniem dekodowania.

Powiązane problemy