引言

在前面已经扫盲式的恶补了相关的音视频的知识点,下面将根据雷神的思路写一些demo

书写第一个FFmpeg控制台程序

// FFmpegLen2.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include <stdio.h>//下面是为了兼容调用FFmpeg
#define __STDC_CONSTANT_MACROS#ifdef _WIN32
//Windows,告诉调用的是C语言
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
};
#else
//Linux...
#ifdef __cplusplus
extern "C"
{
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#ifdef __cplusplus
};
#endif
#endif
int _tmain(int argc, _TCHAR* argv[])
{//用于测试FFmpeg是否加载成功,打印出FFmpeg的配置信息,运行无误说明配置成功了printf("%s",avcodec_configuration());system("pause");return 0;
}

  • 在调用的时候,需要简单的配置
  • 在项目的属性中,C/C++ 常规添加头文件
  • 链接中添加lib和依赖项

FFmpeg的解码函数

  • av_register_all() 注册所有组件
  • avformat_open_input() 打开输入视频文件
  • avformat_find_stream_info() 获取视频文件信息
  • avcodec_find_decoder() 查找编码器
  • avcodec_open2() 打开编码器
  • av_read_frame() 从输入文件读取一帧压缩数据
  • AVPacket
  • avcodec_decode_video2() 解码一阵压缩数据
  • AVFrame
  • avcodec_close() 关闭解码器
  • avformat_close_input() 关闭输入视频文件

#FFmpeg解码的数据结构

AVFormatContext 要申请AVFormatContext 作为操作上下的线索是核心内容
AVFormatContext 包含了

  • AVInputFortmat 文件的封装格式
  • AVStream 是个数组,一般视频就是两个,视频流和音频流,AVStream[0]视频流,AVStream[1]音频流
  • AVCodecContext 处理编解码,分装格式在编解码之上
  • AVCodec 每个解码器都会拥有一个自己的静态对像,每种音视频对应一个结构体
  • AVPacket 存储一帧压缩编码数据
  • AVFrame 存储一帧解码后像素(采样)数据

跟着雷神学FFmpeg(二)相关推荐

  1. 跟着雷神学FFmpeg(一)

    引言 在网上看到很多的资料,都没有雷神讲的好,下面以一个初学者的角度,去总结FFmpeg,对音视频没有任何基础的做一些基础知识的扫盲. 并且做一些C++的demo,以供学习 目录 封装格式(MP4,r ...

  2. 跟着狂神学Redis(NoSql+环境配置+五大数据类型+三种特殊类型+Hyperloglog+Bitmap+事务+Jedis+SpringBoot整合+Redis持久化+...)

    跟着狂神学Redis 狂神聊Redis 学习方式:不是为了面试和工作学习!仅仅是为了兴趣!兴趣才是最好的老师! 基本的理论先学习,然后将知识融汇贯通! 狂神的Redis课程安排: nosql 讲解 阿 ...

  3. 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)

    跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...

  4. FFmpeg二次开发

    本文主要讲解 FFmpeg 的二次开发,ffmpeg.exe 的命令行功能特别强大,很多需求都能直接用命令行实现,但是总有一些需求用 命令行实现不太好做. 而你实现那些特殊需求,通常需要把 ffmpe ...

  5. ffmpeg (二):ffmpeg结合SDL2.0解码视频流

    转自:http://blog.csdn.net/oldmtn/article/details/20284721 看了http://blog.csdn.NET/leixiaohua1020/articl ...

  6. 深入浅出FFMPEG(二) SDK version 0.11

    用户接口 数据结构 基本概念 编解码器.数据帧.媒体流和容器是数字媒体处理系统的四个基本概念. 首先需要统一术语: 容器/文件(Conainer/File):即特定格式的多媒体文件. 媒体流(Stre ...

  7. 跟着狂神学Docker(精髓篇)

    容器数据卷 什么是容器数据卷 docker的理念回顾 将应用和环境打包成一个镜像! 数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化 MySQL,容器删除了,删库跑路!需 ...

  8. javaweb总——注:跟着狂神学的

    1.JavaWeb 1.1基本概念 web开发: web:网页的意思, www.baidu.com 静态网页web html 提供给所有人看的数据始终不会发生改变 动态web 淘宝,几乎是所有的网站都 ...

  9. 跟着大神学zookeeper分布式锁实现-----来自Ruthless

    前几天分享了@Ruthless大神的Redis锁,发现和大家都学习了很多东西.因为分布式锁里面,最好的实现是zookeeper的分布式锁.所以在这里把实现方式和大家分享一下. zookeeper分布式 ...

最新文章

  1. AI一分钟 | 特朗普以国家安全为由否决博通收购高通;阿里发起时尚AI算法大赛
  2. python构造icmp数据包_如何在python中构造ICMP数据包
  3. java ipv6校验_JS及java验证 IPV6,IPV4地址的 正则表达式 | 学步园
  4. MySQL-5.5.33主从复制
  5. java integer最大值_五分钟学会java中的基础类型封装类
  6. mysql分页概念_MySQL学习笔记之数据定义表约束,分页方法总结
  7. [总结]用U盘安装Ubuntu 16.04
  8. 机器学习和算法学习网址
  9. java实现mqtt服务端_基于Swoole使用MQTT协议连接阿里云物联网平台设备实现消息订阅
  10. wifi连指定ssid和password
  11. 协同过滤推荐算法详解
  12. C语言判断100以内的素数的两种方法
  13. endnote找不到国标_电动车新国标实施首日,实况如何?遇到这些问题别急!
  14. 毕达哥拉斯定理/勾股定理
  15. Dedecms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错怎么解决?
  16. Scrapy学习笔记(3)爬取知乎首页问题及答案
  17. Tenda u6 免驱无线网卡无法连接这个网络解决办法
  18. 计算机打开文件的原理,电脑删除文件是怎么实现的?它的原理是什么?
  19. 蓝桥杯 调和级数 Java
  20. python按回车_python中回车键

热门文章

  1. JAVA基础--String类
  2. 为什么Qt会有 QT_BEGIN_NAMESPACE宏
  3. 【动规递推】聪明伶俐的香穗子
  4. ES6学习笔记之字符串模板(巩固复习)
  5. qpython3苹果下载软件_QPython3下载
  6. 表单验证插件jQuery Validation Engine使用介绍
  7. 前辈之路[摘自CSDN灌水乐园 袁峰贴]
  8. 华为无线路由器中继模式设置
  9. lzg_ad:在WES中添加语音识别功能
  10. Ubuntu系统进去之后黑屏是什么问题,及解决办法【最全】