ffmpeg-解码 gop 段任意一帧

2020-11-09  本文已影响0人  markfork

解码数据

目标: 将 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获取一帧证明是可行的。

上一篇 下一篇

猜你喜欢

热点阅读