FFmpeg 3 跨平台视音频编解码入门基础

本文介绍了使用FFmpeg 3.3.1在Windows上进行跨平台视音频编解码的基础知识,通过Qt Creator进行C语言编程。内容包括FFmpeg架构解析、源码解读、关键函数如avformat_alloc_context()、avformat_open_input()等的使用,以及视频信息提取、图像处理和解码过程。最后展示了解码后的视频信息和帧图片。
摘要由CSDN通过智能技术生成

引言

FFmpeg 学习之路,个人通过多方资料阅读而得出的,做个记录,也分享给其他人,降低不必要的社会劳动力。

简介

操作系统:window 7 x64
使用IDE :Qt Creator 4.2.1
使用语言:纯C语言
FFmpeg版本:3.3.1

请务必下载源码,进行跟读

版权所有:_OE_, 转载请注明出处:http://blog.csdn.net/csnd_ayo

下载

还没整理好,有需要的可以留邮箱。

介绍

对于 ffmpeg 在这里我就不做介绍了,可以自行百度。在这里主要对源码进行逐一解释。

FFmpeg 架构图

1

这是根据源码的执行流程画的执行架构图,点击可查看大图

该架构图对应的讲解视频 [点击前往]

2

我们的代码将根据这张架构图的路线进行编写。
而我们这篇文章就是对每个调用过程做一个较为详细的讲解。

变量的声明

//   typedef struct AVFormatContext {
   
//       struct AVInputFormat *iformat;
//       struct AVOutputFormat *oformat;
//       AVIOContext *pb;
//       unsigned int nb_streams;
//       AVStream **streams;
//       char filename[1024]; /**< input or output filename */
//       ....
//   } AVFormatContext;
// AVFormatContext在FFMpeg里是一个非常重要的的结构,是其它输入、输出相关信息的一个容器
// 以上只列出了其中的部分成员
// 作为输入容器时 struct AVInputFormat *iformat; 不能为空, 其中包含了输入文件的音视频流信息,程序从输入容器从读出音视频包进行解码处理
// 作为输出容器时 struct AVOutputFormat *oformat; 不能为空, 程序把编码好的音视频包写入到输出容器中
// AVIOContext *pb: I/O上下文,通过对该变量赋值可以改变输入源或输出目的
// unsigned int nb_streams; 音视频流数量
// AVStream **streams; 音视频流
// 视频流的格式内容
AVFormatContext *pFormatCtx;
/// 解码器上下文
AVCodecContext *pCodecCtx;
/// 解码器
AVCodec *pCodec;
/// 结构性视频数据
AVFrame *pFrame, *pFrameRGB;
/// 视频数据包 (1帧)
AVPacket *packet;
uint8_t *out_buffer;

struct SwsContext *sws_ctx;

int videoStream, numBytes;
int ret, frameFinished;

注册初始化

/// 内部调用 avcodec_register_all()
/// avcodec_register_all()注册了和编解码器有关的组件:硬件加速器,
/// 解码器,编码器,Parser,Bitstream Filter。
/// av_register_all()除了调用avcodec_register_all()之外,
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值