原始H.264比特流解码

4
我可以从摄像头获取h.264原始帧。(不包含任何网络头,例如rtsp、http)。 它们是h.264原始数据。 我将这些数据逐帧推送到队列中。 我查阅了许多使用avformat_open_input()函数的ffmpeg示例,这些示例要么使用本地文件路径,要么使用网络路径。 当我将帧保存到文件并使用avformat_open_input()函数时,我可以看到视频。
我的问题是,我想实时解码帧,而不是在其作为文件保存后再进行解码。 有人有任何想法吗?
谢谢!
1个回答

8

您不需要使用avformat,而需要使用avcodec。avformat用于解析容器和协议,avcodec用于对基本流(已经具备的内容)进行编码和解码。

AVPacket avpkt; int err, frame_decoded = 0;
AVCodec *codec = avcodec_find_decoder ( AV_CODEC_ID_H264 );
AVCodecContext *codecCtx = avcodec_alloc_context3 ( codec );
avcodec_open2 ( codecCtx, codec, NULL );
// Set avpkt data and size here
err = avcodec_decode_video2 ( codecCtx, avframe, &frame_decoded, &avpkt );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接