【FFMPEG应用篇】基于C++使用ffmpeg和QT开发播放器

音视频基础知识

1.MPEG-4是一套用于音频,视频信息的亚索编码标准。

2.常见的封装格式

MP4  MOV 

AVI:压缩标准可以任意选择 

FLV :FLV封装格式详细参考

TS:直播流媒体使用;

3.常用视频编码格式

H264(AVC Part 10),具体H264相关参考如下

H264参考一  H264参考二 H264参考三

4.常用音频编码格式

AAC

5.封装格式与编码格式之间的关系

6.图像格式相关详细解读

7.PCM音频相关参数

   采样率  sample_rate ,即每秒种采集多少次声音,通用使用44100(CD)

   通道      channels        即在几个点采集,通用使用2(双声道)

  样本大小 (格式)  sample_size ,每个声音使用多大来存储,通用使用 AV_SAMPLE_FMP_S16 两个字节存放一个音 ; AV_SAMPLE_FMP_FLTP 四个字节来存放一个声音

  样本类型  planar ,样本在内存中的存储格式,分为 平面格式与 非 平面格式 ,平面格式为连续存储即aaabbbccc,非平面为  abcabcabc

8.MP4格式相关解读

解封装(Demux)

1.av_register_all( );    作用是初始化封装库相关,必须在调用解放装前使用。

2.avformat_network_init( );     初始化网络库 (可以打开rtsp rtmp http 协议的流媒体视频)

3.解封装

int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options);

@ps ,格式化上下文   @url ,文件名称或者网络流地址    @fmt,指定输入封装格式,传递nullptr会自动探测   

@options,字典数组,可以设置相关预设值,例如如下设置

	//参数设置AVDictionary *opts = NULL;//设置rtsp流已tcp协议打开av_dict_set(&opts, "rtmp_transport", "tcp", 0);//网络延时时间av_dict_set(&opts, "max_delay", "500", 0);

4.针对网络流需要调用

int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);

5.寻找音视频的索引

int av_find_best_stream(AVFormatContext *ic,enum AVMediaType type,int wanted_stream_nb,int related_stream,AVCodec **decoder_ret,int flags);

6.读取每一帧

int av_read_frame(AVFormatContext *s, AVPacket *pkt);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java代码自动生成的插件_如何使用插件生成自定义Java 8代码

java代码自动生成的插件大多数程序员讨厌的一件事就是编写样板代码。 无休止的时间花费在设置实体类和配置数据库连接上。 为了避免这种情况,您可以让Speedment Open Source之类的程序为您生成所有这些代码。 这样可以很容易地以最少的人工就可以启动和运行数据库项…

PHP在Tomcat中CSS出错,tomcat找不到css怎么办

tomcat找不到css怎么办Tomcat找不到WEB下的Css文件,一般可以通过以下方式解决:将路径相对位置修改为域相对位置,如下:备注:WEB-INF不是公共访问目录,只有在Servlets的RequestDispatcher或JSPS的可以访问&am…

eve模拟器_《Re:从零开始的新伊甸征程》一步到位教你下载EVE手游

自从小生发布了《「EVE Echoes」萌新向完全入门指南》后有小伙伴回应不懂怎样下载游戏的问题,小生作为殷郡中的一名闲云野鹤也尽一点绵薄之力帮助各位,尽量为各位扫清前往新伊甸的“石头”吧。[酷]在开篇前小生可以大致明确告诉你,不要问小生…

【开源项目】QT OPENGL 与 shader 绘制展示视频代码实例 OPenGL直接显示YUV数据

本文使用QT中的QOpenGLFunctions(此类封装了OPenGL的方法,相当于QT版OPenGL) 其次重载 void paintGL(); void initializeGL(); void resizeGL(int width, int height);是基本操作 * 三种GLSL变量说明 * varying 顶点与片元共享 * attri…

java开发课程表_展示Java开发人员课程包

java开发课程表60个小时以上的课程,5门所有级别的课程:成为Java编程专家 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 。 我们提供的Java Developer Course Bundle 仅售39美元&am…

二阶自回归过程matlab,时间序列分析:二阶自回归过程

时间序列分析:二阶自回归过程Author: nex3z2019-07-131. 定义对于二阶自回归过程 $AR(2)$\begin{equation}X_t \phi_1 X_{t-1} \phi_2 X_{t-2} e_t \tag{1}\end{equation}假设 $e_t$ 独立于 $Y_{t-1}, Y_{t-2}, \cdots$。式 $(1)$ 也可以表示为\begin{equation}X…

m4s格式转换mp3_mp4怎么转换成mp3格式?mp4转mp3的傻瓜式方法

原标题:mp4怎么转换成mp3格式?mp4转mp3的傻瓜式方法或许对于很多小伙伴来说,要将视频改变一下格式就已经很难了,又何况是要将原本的视频改变成音频格式呢?一个是视频,一个是音频,压根就是风马牛…

Git安装及基本操作

1.安装Git 配置用户 git config --global user.name "用户名" git config --global user.email "邮箱"配置完成后查看配置 git config -l生成SSH秘钥 ssh-keygen -t rsa -C “邮箱” 输入完成后需要按3次Enter键 $ ssh-keygen -t rsa -C "邮箱&quo…

ZigBee网络数据传递流程_蓝牙、Wifi与ZigBee三种,这三种无线传输技术,谁能一统天下...

智能产品种类越来越多,运用在智能家居上的技术也越来越成熟。然而在无线通信协议上却一直无法做到统一,从目前的情况来看,短期内是无法实现这一愿望的了。既然如此,我们何不另辟蹊径,在这些标准中,选择优势…

千元平板电脑排行榜_最值得买的平板电脑推荐-最佳平板电脑品牌排行榜【2020年10月】...

平板电脑相较笔记本电脑而言,以其便携与功能强大的特点成为大家日常生活和工作的必备搭档,无论在性能配置上还是在内置软件应用方面,不同的使用场景有不同的需求。今天给大家推荐最佳平板电脑品牌排行,希望对大家选购平板电脑有帮…

java 枚举 菜鸟_2个菜鸟Java常量和枚举陷阱

java 枚举 菜鸟在对Java和Groovy代码进行的各种代码审查中,我经常看到魔术数字和其他随机字符串散落在整个代码库中。 例如,下面的(Groovy)代码段中的4.2是一个神奇的数字: if (swashbuckle > 4.2) {... }4.2是什…

python正则_python的正则表达式

上次小编写了正则表达式的用法,今天就小编就讲讲正则表达式再python中的应用,在python中想使用正则表达式就需要导入re模块。接下来小编将先介绍re模块中几个常见的函数findall:re.findall(‘正则表达式’,‘待匹配的内容’)例1:输…

公里与英里的换算c语言函数_60迈=60码=60公里?这三者天壤之别,可别搞错了

说到行车速度,大家经常用的是这三个单位:码、迈、公里/时,很多人以为这三者是同一个意思,都是每小时多少公里。实际上这三者并不等同,下面小编科普一下这几个词的差异。码1码不等于1公里,而是等于0.9144米&…

php3.2.3分组查询,ThinkPHP3.2.3版本如何设置应用分组

鑫强已经解决了我的解决方法是创建两个入口文件实际上我的目的就是想要达到两个模块共用一个配置文件和公共函数文件我的解决方法是在项目根目录下建立两个入口文件一个是Index.php与Root.php两个入口文件其中是这样写的Index.php{<?php #前台入口文件 header(Conte…

C++ 11 深度学习(一)auto、头文件防卫、引用、常量

1.数组初始化 int a[]{ 1,2,3,4,5 }; 2.C11 auto auto可以在声明变量的时候根据变量的初始值的类型自动为此变量先择合适的类型&#xff0c;声明时要赋予初值。 auto自动推导发生在编译期间 auto A 10;//A会被自动推导为int类型 3.头文件防卫式声明 作用:防止头文件重…

android 在什么情况下会主动gc_Python 什么情况下会生成 pyc 文件?

作者&#xff1a;折木奉太郎(经授权转载)来源&#xff1a;https://www.zhihu.com/question/30296617/answer/112564303作为 Python 爱好者&#xff0c;需要了解 .py 脚本的基本运行机制及特性&#xff1a;在很多工作上&#xff0c;Python 的运行流程基本上取决于用户&#xff0…

【IP协议头分析】

Version 版本号 IHL IP头长度 Type of Service Total Length 总长度 Identification 拆包的唯一标识 Flags 1位保留 &#xff0c; 2位 允许拆包 3位 不允许拆包 Fragment offset 在原包偏移量 Time to Live 时间或路由跳数 Protocol IP中是什么协议类型 Header Check…

乡村野生草药_官方野生蝇群流口水分数

乡村野生草药官方是什么&#xff1f; 标题太小&#xff0c;但有用的贡献。 Wildfly Swarm允许我们创建相当小的自包含应用程序&#xff0c;包括我们从Wildfly Application Server中需要的应用程序。 在这篇文章中&#xff0c;我们将研究与Wildfly Swarm合作使用的Drools分数 。…