音视频播放器工作原理

参考博客:
视频播放器的基本原理
播放器基本原理(播放四步法)
【Android 音视频开发打怪升级:音视频硬解码篇】一、音视频基础知识

播放器播放流程

网络文件:解协议,解封装,解码音视频,音视频同步;本地文件则没有解协议。
请添加图片描述

解协议:将Http等流媒体协议传输的文件解析为标准的封装格式数据。如将RTMP协议传输的数据,经过解析操作后输出为FLV格式的数据。
解封装(解复用):将输入的封装格式的数据,分离为音频流压缩编码数据和视频流压缩编码数据,即:分离信道。
解码:将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。
音视频同步:根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

如何将声音转化为数字流呢?

音频数据的承载方式最常用的是脉冲编码调制,即PCM。
在自然界中,声音是连续不断的,是一种模拟信号,那怎样才能把声音保存下来呢?那就是把声音数字化,即转换为数字信号。
我们知道声音是一种波,有自己的振幅和频率,那么要保存声音,就要保存声音在各个时间点上的振幅。
而数字信号并不能连续保存所有时间点的振幅,事实上,并不需要保存连续的信号,就可以还原到人耳可接受的声音。
根据奈奎斯特采样定理:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。
根据以上分析,PCM的采集步骤分为以下步骤:
模拟信号->采样->量化->编码->数字信号
请添加图片描述
采样率,即采样的频率。上面提到,采样率要大于原声波频率的2倍,人耳能听到的最高频率为20kHz,所以为了满足人耳的听觉要求,采样率至少为40kHz,通常为44.1kHz,更高的通常为48kHz。
采样位数,波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号一般是不连续的,所以模拟信号量化以后,只能取一个近似的整数值,为了记录这些振幅值,采样器会采用一个固定的位数来记录这些振幅值,通常有8位、16位、32位。
编码:将幅度值转化为一系列0和1进行存储,最后得到的数据就是数字信号:一串0和1组成的数据
请添加图片描述
通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码
PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入。如果是双声道的文件,采样数据按时间先后顺序交叉的存入,比如:左声道数据、右声道数据、左声道数据、右声道数据…。

在Android中,常用MediaPlayer作为音频播放器,它提供了更好的封装,但它内部实现还是使用了AudioTrack。AudioTrack被用于PCM音频流的播放。
系统提供的Visualizer可以实时获取播放音乐的频率,提供波形数据和FFT后的数据。
而pcm数据一般由播放器提供。

公式:数据量Byte=采样频率Hz×(采样位数/8)× 声道数× 时间s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值