Jestem nowy dla FFmpeg, który stara się dekodować pakiety H264, które można uzyskać w postaci tablicy uint8_t.używając FFmpeg, jak dekodować pakiety H264
Po wielu badaniach, myślę, że powinien on być w stanie po prostu umieścić tablicy do AVPacket jak poniżej
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
i dekodowania przez avcodec_decode_video2(). Część kodu jest jak
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
Chyba ustawić wszystkie wymagane właściwości prawidłowo, ale ta funkcja zwraca tylko -1 :(
Właśnie znalazłem -1 pochodzi
ret = avctx-> codec-> dekodowania (avctx, obraz, got_picture_ptr, avpkt);
w avcodec_decode_video2();
Właściwie co zastanawiam się, czy mogę rozszyfrować H 264 pakiety (bez nagłówka RTP) przez avcodec_decode_video2().
Dzięki za pomoc z góry.
/////////// dodany
OK, ja wciąż próbuje znaleźć rozwiązanie. Co robię teraz jest poniżej
** strumień H264 w tym strumieniu RTP jest kodowana przez FU-A
odebrania pakietu RTP
wygląd jeśli drugi bajt nagłówek RTP ma wartość> 0, co oznacza, że jest to pierwszy pakiet (i być może będzie śledzony)
Sprawdź, czy następny pakiet RTP ma także> 0 w swoim drugim bajcie, oznacza to, że poprzednia klatka była kompletną NAL lub jeśli jest to < 0, pakiet powinien zostać dołączony do poprzedniego pakietu.
usuwa wszystkie nagłówki RTP pakietów, więc ma tylko taki wskaźnik FU | Nagłówek FU | NAL
spróbować odtworzyć go z avcodec_decode_video2()
ale to powrót tylko -1 ..... mam usunąć wskaźnik FU i header zbyt ??
każda sugestia będzie bardzo mile widziane
z góry dzięki.
Dzięki Vibgyor, rzeczywiście nadawca jest spydroid open source i jego nagłówek RTP nie wygląda zawierają wiele rzeczy .. to jest zrobione z rodzaju ładunku, numer sekwencji, datownik, Identyfikator źródła synchronizacji. Któryś z nich oznacza strumień wideo? Nie sądzę ... Nadal nad tym pracuję i będę aktualizował moje postępy. – Jun