我是FFmpeg的新手,正在努力解码可以作为uint8_t数组获得的H264数据包.
经过多次调查,我认为它应该能够将数组放入如下所示的AVPacket中
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
Run Code Online (Sandbox Code Playgroud)
并通过avcodec_decode_video2()进行解码.代码的一部分就像
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
Run Code Online (Sandbox Code Playgroud)
我想我正确设置了所有必需的属性,但这个函数只返回-1 :(
我刚发现-1来自
ret = avctx-> codec-> decode(avctx,picture,got_picture_ptr,avpkt);
在avcodec_decode_video2();
实际上,我想知道的是我是否可以通过avcodec_decode_video2()解码H264数据包(没有RTP头).
我在这里先向您的帮助表示感谢.
/////////// 添加
好的,我还在努力寻找解决方案.我现在正在做的是下面的内容
**该RTP流中的H264流由FU-A编码
收到RTP数据包
查看RTP头的第二个字节是否> 0表示它是第一个数据包(可能会被跟踪)
看看下一个RTP数据包的第二个字节是否也> 0,那么这意味着前一个帧是一个完整的NAL,或者如果这个<0,则该数据包应该附加到前一个数据包.
删除数据包的所有RTP头,使其只有FU指示符| FU标题| NAL
尝试用avcodec_decode_video2()播放它
但它只返回-1 .....我是否应该删除FU指示器和标题?
任何建议将非常感谢
提前致谢.
我想在Janus GridEX上选择多行,但是不能分配selectedItems属性并且它是只读的.但是我可以通过GridEX.Row选择一个特定的行并设置当前选定的行,但我不能添加一行或类似的东西来选择多行!
谁能帮我
非常感谢Shahin