文章目录

  • 一、ffmpeg基本流程图
    • 1.1、av_register_all()
    • 1.2、avformat_open_input()
    • 1.3、int avformat_find_stream_info()
    • 1.4 avcodec_find_decoder()
    • 1.5avcodec_open2()
    • 1.6 av_read_frame()
    • 1.7avcodec_decode_video2()

一、ffmpeg基本流程图

1.1、av_register_all()

包含头文件:#include “libavformat/avformat.h”
作用:初始化 libavformat和注册所有的muxers、demuxers和protocols。基本所有的ffmpeg第一步都是它。

1.2、avformat_open_input()

作用:打开对应的文件
原函数:avformat_open_input(AVFormatContext **ps, const char *filename,AVInputFormat *fmt, AVDictionary **options)

AVFormatContext **ps:一般是avformat_alloc_context()申请的一个空间指针地址,类似于文件描述符,然后通过操作文件描述符来操作你打开的文件。

const char *filename:就是你要打开的文件名。

AVInputFormat *fmt:一般都写成NULL.

AVDictionary **options:附加选项写为NULL.

使用方法:

if (avformat_open_input(&pFormatCtx,url,NULL,NULL)!=0){printf("Couldn't open input stream.\n");return -1;}

1.3、int avformat_find_stream_info()

作用: 寻找对应的流信息。
原函数:
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary ** options)

AVFormatContext *ic: 文件描述符

AVDictionary **options : 附加选项写为NULL.

使用方法:

 if(av_find_stream_info(pFormatCtx)<0){printf("Couldn't find stream information.\n");return -1;}

1.4 avcodec_find_decoder()

作用: 查找解码器。
原函数: AVCodec *avcodec_find_decoder(enum AVCodecID id);

enum AVCodecID id : 你的解码器ID
使用方法:

pCodec = avcodec_find_decoder(pCodecCtx->codec_id);if (pCodec == NULL) {printf("Codec not found.\n");return -1;}

1.5avcodec_open2()

作用: 该函数用于初始化一个视音频编解码器的AVCodecContext。
原函数:
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);

AVCodecContext *avctx: 获取指向音频流的编解码器上下文的指针
const AVCodec *codec: 编码器名称
AVDictionary **options:附加选项写为NULL.

使用方法:

if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0) {printf("Could not open codec.\n");return -1;}

1.6 av_read_frame()

作用: 获取视频的帧数据。
原函数:
int av_read_frame(AVFormatContext *s, AVPacket *pkt);

AVFormatContext *s:文件描述符
AVFormatContext *s:一个输出空间不能为NULL,帧率

使用方法:

while (av_read_frame(pFormatCtx, packet) >= 0){}

1.7avcodec_decode_video2()

作用: 该函数的作用是实现压缩视频的解码。
原函数:
int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt);

AVCodecContext *avctx:文件描述符
AVFrame *picture:输出参数
int *got_picture_ptr:该值为0表明没有图像可以解码,否则表明有图像可以解码
const AVPacket *avpkt:输入参数,包含待解码数据。

ffmpeg各种函数详解相关推荐

  1. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

  2. 【FFmpeg】函数详解(二)

    FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...

  3. 【FFmpeg】函数详解(一)

    FFmpeg函数详解 一.错误码相关 1.AVERROR 2.av_strerror 3.其他错误码解释 二.编解码 1.获取编解码器 2.申请.释放上下文环境 3.打开编码器avcodec_open ...

  4. ffmpeg sws_scale函数详解

    1. 介绍 如果想在两个AVPixelFormat之间转换,例如将YUV420P 转换到YUV422,亦或者是要改变其大小,放大缩小什么的,就要用到ffmpeg中的swscale函数了,此版本基于ff ...

  5. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  6. 【ES6】Generator函数详解

    [ES6]Generator函数详解 一.Generator函数简介 基本概念 函数写法 yield关键字介绍 二.next方法的参数 三.for...of循环 四.关于普通throw()与Gener ...

  7. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  8. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  9. python基础知识~ 函数详解2

    python~函数详解2  1 生成器函数    定义 如果函数有yield这个关键字,就是生成器函数.生成器函数() 获取的是生成器,不执行函数   须知 yield和return一样,都可以返回数 ...

最新文章

  1. Object.create(..)和new(..)的内部实现
  2. MySQL中myisam和innodb的主键索引有什么区别?
  3. 有关替换字符的代码问题
  4. python文件替换一行_python自动化替换文件中每一行中的特有字符串
  5. python 手机编程termux_如何优雅的在手机上进行Python编程?
  6. C++基础09-货物售卖和MyArray实现
  7. 重新添加MySQL服务
  8. Java基于JavaMail实现向QQ邮箱发送邮件遇到的问题
  9. BGP中的联盟原理和实验(华为设备)
  10. AMS分析 -- 启动过程
  11. STM32F407获取OV5640摄像头图像及上位机解码(一维码二维码)
  12. 管理储存组和邮箱数据库
  13. php获取图片rgb值,判断图片是否纯黑纯白
  14. ARM linux解析之压缩内核zImage的启动过程
  15. 《今日头条中视频搬运项目》3-5天就可以产生利润【教程目录】
  16. Chrome浏览器账号无法登陆
  17. 帝国时代之罗马复兴玩法技巧
  18. 七年北漂落幕-【文末送书】
  19. 2.1 - 操作系统的作用、分类
  20. Gaea学习--Gaea是什么?

热门文章

  1. java word读写操作,替换字符
  2. gre备考准备什么资料比较好?
  3. 视频跟踪之光流算法简介
  4. 了解clearfix
  5. 数据结构C++语言版 -- 霍夫曼树
  6. 自定义RunTimeException工具类
  7. RuntimeException和Exception
  8. 缤客2019年“科技贡献奖”全球七位杰出女性获奖
  9. 三星s5 android 5.0 root权限,三星N9008S 5.0 root教程_三星N9008S获取5.0系统root权限
  10. Sony电脑重装系统Linux,索尼 SONYSVF15能不能安装windows7系统_索尼 SONYSVF15怎么安装win7系统-win7之家...