版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本课讲师:Darren老师C/C+音视频高级开发播放器开发系列2-播放音频课程主讲Darren老师:2167195649讲师介绍 动脑学院 -Darren老师高级资深工程师 音视频开发,嵌入式系统开发,图像处理开发等方面有丰富的研发与实战经验。 曾供职于珠海扬智,深圳联发科等知名半导体公司。 课程提纲音频基础知识SDL声音设置相关音频队列音频重采样重点知识SDL播放声音的方法回调函数读取数据要点音频重采样,格式转换,变速播放等播放器框架ffplay框架音频基础知识采样频率:采样率指的是每秒钟采样的点数,单位为HZ。采样率的倒数是采样周期,也就是两次采样的时间间隔。常用的采样频率有:22k Hz
2、 无限广播所用的采样率 44.1k Hz CD音质48k Hz 数字电视,DVD 96k Hz 192k Hz 蓝光盘,高清DVD采样精度:采集到的点被称为样本(sample),每个样本占用的位数就是采样精度。可以使用8bit,16bit,24bit或者32bit来表示采集到的一个样本。音频基础知识通道:支持不同发声的音响的个数。通道布局(channel layout):不同的通道组合方式。同样是3个通道但是可以摆放出不同的布局。比特率 指的是每秒传送的比特(bit)数,其单位是bps(Bit Per Second)没有压缩编码的音频数据:其比特率 = 采样频率 * 采样精度 * 通道数经过压
3、缩编码后的音频数据:即是码率 = 音频文件的大小 / 时长。常见码率:96 Kbps FM质量; 128 - 160 Kbps 比较好的音频质量;192Kbps CD质量;256Kbps 320Kbps 高质量音频音频基础知识-对应ffmpeg采样频率:同样使用数字表示,单位HZ 44100hz采样精度(和帧格式):AV_SAMPLE_FMT_U8AV_SAMPLE_FMT_S16AV_SAMPLE_FMT_FLTP通道:#define AV_CH_FRONT_LEFT 0 x00000001#define AV_CH_FRONT_RIGHT 0 x00000002#define AV_CH_
4、FRONT_CENTER 0 x00000004通道布局(channel layout):#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY)#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)SDL2播放音频使用SDL播放解码后的音频数据,SDL播放音频数据的流程如下:SDL_AudioSpectyped
5、ef struct SDL_AudioSpec int freq; / 采样率 SDL_AudioFormat format; /采样格式,比如AUDIO_S16SYS Uint8 channels; /通道数,SDL支持1-mono,2-stereo,4-quad和6-5.1 Uint8 silence; /音频数据中表示静音的值是多少 Uint16 samples; /缓冲区的大小,单个通道的采样点数 Uint16 padding; / Necessary for some compile environments Uint32 size;/缓冲区的大小(字节为单位)=channels*s
6、amples *2 SDL_AudioCallback callback; /喂数据给音频设备的回调函数/ 如果为NULL则可用SDL_QueueAudio() void *userdata; /在回调函数中使用的数据指针 SDL_AudioSpec;回调函数allback用来取音频数据给音频设备,其声明如下:void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,int len)userdata 就是SDL_AudioSpec结构体中的userdata字段stream 要填充的缓冲区len 缓冲区的大小 不一定是完
7、整的一帧或两帧数据对于多声道的音频数据在缓冲区中是交错存放的:双声道 LRLR四声道 front-left / front-right / rear-left /rear-right5.1 front-left / front-right / center / low-freq / rear-left / rear-right打开音频设备打开声音设备函数声明如下:SDL_OpenAudioDevice( const char *device, int iscapture, / 设为0作为输出设备 const SDL_AudioSpec * desired,/期望设置的音频输出格式 SDL_Au
8、dioSpec *obtained, /实际的音频输出设置 int allowed_changes/该参数用来指定 当期望和实际的不一样时,能不能够对某一些输出参数进行修改。);则可对相应的参数修改:SDL_AUDIO_ALLOW_FREQUENCY_CHANGESDL_AUDIO_ALLOW_FORMAT_CHANGESDL_AUDIO_ALLOW_CHANNELS_CHANGESDL_AUDIO_ALLOW_ANY_CHANGE数据队列重点注意的:(1)假如每次需要读取8000字节的数据,但每一帧数据只能解出4096字节,此时每次读取的数据超过一帧,但又不够2帧数据,该怎么处理?4096*
9、2-8000 = 192,下次来读取要先把192字节读取再去解码获取获取新的一帧数据。(2)假如每次需要读取1024字节的数据,但每一帧数据能解出4096字节,又该怎么处理?音频重采样当解码后的数据和SDL打开的音频设备所支持的格式不一致时需要进行格式转换。采样精度和帧格式音频格式转换 struct SwrContext *s = swr_alloc_set_opts() swr_init(s) int swr_convert(struct SwrContext *s, uint8_t *out, int out_count, const uint8_t *in , int in_count);音频变速不变调使用开源的sonic源码。创建变速器:sonicCreateStream设置变速系数:sonicSetSpeed写入原始数据:sonicWriteShortToS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育法规真题练习试卷B卷附答案
- 2024年光学纤维面板系列项目资金需求报告代可行性研究报告
- 第七章 面谈课件
- “双减”背景下小学数学作业设计的策略研究实施方案范文
- 2024年适用职工劳动协议格式文件
- 2024年专业期货交易中介服务协议
- 扬州大学封志明老师预测《导游基础知识》模拟试题参考答案
- 设备设施运行维护管理方案5篇
- 2024年化工业品买卖协议
- 2024阁楼房屋销售协议模板
- 2024-2030年中国危化品行业发展趋势与投资前景展望报告
- 中国企业投资缅甸光伏发电市场机会分析及战略规划报告2024-2030年
- 2024年广东省深圳市中考历史试题
- 化工(危险化学品)企业主要负责人、安管员安全生产管理专项培训考核试卷(附参考答案)
- 2024年人教版小学三年级语文(上册)期中考卷及答案
- 《信息化项目验收工作规范》
- 2024年全国软件水平考试之高级网络规划设计师考试重点黑金模拟题(详细参考解析)
- 经济学题库(200道)
- 2024年巴西私人安保服务市场机会及渠道调研报告
- 课《闻王昌龄左迁龙标遥有此寄》跨学科公开课一等奖创新教学设计
- 2024年江苏省连云港市中考英语真题(含解析)
评论
0/150
提交评论