解码数据
目标: 将 gop 数据解码为一帧一帧图片
多媒体处理流程
[图片上传失败...(image-15b43c-1604651923220)]
解码处理流程
// 获取AVFormatContext
AVFormatContext ctx -> avformat_open_input(ctx,srcFile);
// AVFormatContext (获取目标流)
st = fmt_ctx->streams[stream_index];
// 从目标流中获取 codec
AVcodec codec = avcodec_find_decoder(st->codecpar->codec_id);
// 新建编解码器容器
AVCodecContext *c = avcodec_alloc_context3(NULL);
// 从已知流拷贝codecContext 到新的AVCodecContext
ret = avcodec_parameters_to_context(c, st->codecpar))
// 打开新建的编码器容器
avcodec_open2(c, codec, NULL)
// 开始一系列编码器操作
编译 & 运行
1. MAC
clang -g -o decode_video decode_video.c `pkg-config --libs libavformat libavcodec libswscale`
2. 运行
./decode_video data/1.h264 ./result/
3. linux
gcc -g -o decode_video decode_video.c `pkg-config --libs libavformat libavcodec libswscale`
运行效果
result文件夹下运行效果
ffmpeg_decode_h264 frame至此获取gop 与 解码gop获取一帧证明是可行的。
网友评论