ffmpeg-解码 gop 段任意一帧

解码数据

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

全部评论

相关推荐

烤点老白薯:亲娘嘞🐶💩啊你的简历
点赞 评论 收藏
分享
白火同学:先说结论,对于一份实习简历来说,整体还是挺不错的,技术深度和广度都到位,找到一份中小厂的实习没啥问题。 再说说能优化的点吧。 1、量化结果,项目中很多工作量化一下结果给面试官的感受会更直观一些,也能体现你对应用该项技术的理解(在众多技术为什么要用它,运行性能或者说开发效率往往是一大考虑指标;而不是说大家做这种功能都用它,所以我用它)。 2、突出亮点,项目中可以从“工作职责”择一些“个人亮点”另写一块,优先去写开发过程中遇到的xx问题,使用xx技术达到xx效果,针对性去写一些疑杂难的功能,能带出你个人思考和解决的过程。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务