Ho bisogno di aiuto per la decodifica del flusso video rtsp. L'ho preso dalla telecamera IP AXIS. Io uso la libreria ffmpeg per questo. È necessario creare AVCodecContext separatamente, non da AVFormatContext-> streams [...] -> codec;Decodifica h264 rtsp con ffmpeg e separato AVCodecContext
Quindi creo AVCodec, AVCOdecContext e provo a iniziarli.
AVCodec *codec=avcodec_find_decoder(codec_id);
if(!codec)
{
qDebug()<<"FFMPEG failed to create codec"<<codec_id;
return false; //-->
}
AVCodecContext *context=avcodec_alloc_context3(codec);
if(!context)
{
qDebug()<<"FFMPEG failed to allocate codec context";
return false; //-->
}
avcodec_open2(context, codec, NULL);
Poi, nel ciclo principale di applicazione, ottengo i dati cornici e cercare di decodificare:
_preallocatedFrame = avcodec_alloc_frame();
avcodec_decode_video2(_context, _preallocatedFrame, &got_picture, &_packet);
E qui ricevo molti messaggi in console:
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
Puoi consiglio qualcosa di me, come avviare AVCodecContext o qualcos'altro per farlo corretto?
Ok, ma dove le differenze. Quando ottengo il mio AVCodecContext da AVFormatContext-> streams [...] -> codec, e faccio operazioni assolutamente simili, decodifica senza errori. Bt è necessario usare un codecontext separato (può essere decodificato dopo aver ottenuto i dati dall'archivio, salvato su un disco, quando non posso avere il formato contesto) – mmmaaak
Hai provato a confrontare i 2 oggetti di contesto? – Horonchik
Sì, ci sono più di 20 differenze tra di loro. Ho provato a impostare tutti i campi diversi nel mio contesto, tranne AVCOdecContext-> priv_data e altri campi del puntatore - non funziona. – mmmaaak