【开源项目】基于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);
【开源项目】基于C++使用ffmpeg和QT开发播放器相关推荐
- C++基于ffmpeg和QT开发播放器~学习笔记
C++基于ffmpeg和QT开发播放器 B站网址 https://www.bilibili.com/video/BV1h44y1t7D8?p=2&spm_id_from=pageDriver ...
- C++实战手把手教您用ffmpeg和QT开发播放器--01音视频基础知识
笔记:https://blog.csdn.net/tainjau/article/category/9272757 音视频基础知识 封装.解码.重采样.像素格式 1.MPEG-4 MPEG-4标准将众 ...
- 开源项目-基于Intel VT技术的Linux内核调试器
本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...
- 基于FFmpeg和Qt的播放器 QtAV库
参与项目开发: https://github.com/wang-bin/QtAV 下载编译好的文件等:https://sourceforge.NET/projects/qtav win下编译好的可执行 ...
- DoNet开源项目-基于jQuery EasyUI的后台管理系统
本文转载于 石佳劼的博客,有问题请到原文咨询,原文连接. 博主在业余时间开发了一个简单的后台管理系统,其中用到了 jQuery EasyUI 框架,上次分享过系统布局,参考文章:jQuery Easy ...
- DoNet开源项目-基于Amaze UI的点餐系统
本文转载于 石佳劼的博客,有问题请到原文咨询,原文连接. 点餐系统 帮朋友做的点餐系统,主要是为了让顾客在餐桌上,使用微信扫描二维码,就可以直接点菜,吃完使用微信付款. 系统演示地址,账户名和密码均为 ...
- 最简单的基于FFMPEG+SDL的音频播放器:拆分-解码器和播放器
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- 最简单的基于FFMPEG+SDL的音频播放器 拆分-解码器和播放器
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- 最简单的基于FFMPEG+SDL的音频播放器
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
最新文章
- python编程是干啥用的-浅谈Python类中的self到底是干啥的
- mysql 事物状态有几种_10分钟梳理MySQL核心知识点
- 前端学习(1903)vue之电商管理系统电商系统之调用api添加用户
- 操作系统-进程同步与互斥易混点
- 升级 项目跑不起来_不做“睡城”!嘉定新城“十四五”加速度,产城融合跑起来,远香湖,看好你...
- 高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)
- ant指定servlet版本_[转载]程序开发常见错误
- java 调用.net类库_通过COM组件方式实现java调用C#写的DLL文件
- 打开excel后,提示更新链接的原因(含批量处理VBA代码)
- 动态添加table表格内容,填充审批意见。
- CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件【转载】
- winpe 能否修复服务器系统盘,U盘WINPE、光盘WINPE系统(启动修复盘)制作图文教程...
- 七种常见的数据分析法之:对比分析法
- 《植物大战僵尸》游戏存档修改
- 关于C++、PHP和Swoole-韩天峰
- 外企8年,我学到的人性化,不止是宽容
- 如何做一个基于JAVA房产中介预约看房系统毕业设计毕设作品(springboot框架)
- L5W3作业2 关键字语音识别
- 使用阿里云服务器发送邮件
- 裴蜀定理(Noi Color)应用
热门文章
- 如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼
- zipkin 自定义采样率_分组,采样和批处理– Java 8中的自定义收集器
- Spring Bean范围
- javafx中的tree_JavaFX中的塔防(2)
- 什么是javax.ws.rs.core.context? [第5部分]
- NetBeans Java EE技巧3:数据库中的RESTful Web服务
- openshift用户管理_OpenShift Express Web管理控制台:入门
- 代码挑战“ Vrolijke Framboos”事后验尸
- Lambdas中的例外:有点混乱的优雅解决方案
- WildFly 8的Camel子系统集成了Java EE –入门