Soy nuevo en FFmpeg que lucha para decodificar paquetes H264 que se pueden obtener como una matriz de uint8_t.usando FFmpeg, cómo decodificar paquetes H264
Después de muchas de las investigaciones, creo que debe ser capaz de simplemente poner la matriz en un AVPacket como lo de abajo
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
y decodificar por avcodec_decode_video2(). Una parte del código es como
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
supongo que puse todas las propiedades requeridas correctamente, pero esta función está volviendo solamente -1 :(
solo he encontrado el -1 viene de
ret = avctx-> codec-> decodificación (avctx, imagen, got_picture_ptr, avpkt);
en el avcodec_decode_video2();
en realidad, lo que me pregunto es si puedo descifrar H 264 paquetes (sin encabezado RTP) por avcodec_decode_video2().
Gracias por la ayuda con antelación.
/////////// añade
bien, todavía estoy tratando de encontrar una solución. Lo que estoy haciendo ahora es el siguiente
** la corriente H264 en este flujo RTP está codificada por FU-A
reciben un paquete RTP
vistazo si el segundo byte de el encabezado RTP es> 0, lo que significa que es el primer paquete (y posiblemente se seguirá)
ver si el siguiente paquete RTP tiene> 0 en su segundo byte también, entonces significa que el cuadro anterior fue un NAL completo o si esto es < 0, el el paquete debe adjuntarse al paquete anterior.
elimina todo el encabezado RTP de los paquetes por lo que solo tiene el indicador de FU | Encabezado FU | NAL
intentar jugar con avcodec_decode_video2()
pero sólo está devolviendo -1 ..... voy a quitar el indicador de cabecera FU y también ??
cualquier sugerencia será muy apreciada
gracias de antemano.
Gracias Vibgyor, en realidad el remitente es el código abierto Spydroid y su cabecera RTP no se ve contiene muchas cosas .. que está hecha de tipo de carga útil, número de secuencia, marca de tiempo, Identificador de fuente de sincronización ... ¿alguno de ellos significa información de transmisión de video? No lo creo. Todavía estoy trabajando en eso y actualizaré mi progreso. – Jun