任务,实现低延迟视频直播功能(GPU硬解码);
听到这个任务又兴奋又担心,兴奋因为进入视频领域,担心是不知道怎么弄出来;
接着各种百度,各种查找;各种看雷神的博客;结果依旧未果;老大电话来(因为疫情老大还在老家)给我说了两句话,你把AAC,PCM整明白了,再把原理证明,这音视频编解码和播放你就能搞出来。
于是,咱就开始解析AAC中的ADTS,然后转化PCM,然后解析PCM……………………
接着,
PCM属于模拟信号经过采样、量化、编码形成的原始数据(二进制),经过查看PCM文件,发现没有文件头信息只有具体的数据,这些数据(分成数据块)可以送入播放器的声道(分单双声道)进行播放。为了有利于网络传输PCM原始数据,所以需要对pcm进行编码。 AAC数据以ADTS包的形式在网络中传出(adts中包含解码的必要信息如声道、采频、编码位数、帧长等),目前用于网络数据传输使用AAC编码方式的居多,在收到AAC数据之后,要把还原为PCM数据,然后播放。
目前项目:低延时视频直播
开发环境:windows 10/vs2015
实现方式:RTMP/MMPEG/dsound/sdl/D3D
设计思路:使用MMPEG拉流并解析数据,然后播放音视频
实现思路简介:使用ffmeg拉流数据,判断音频;视频使用ffmpeg dxva2硬解码,D3D渲染;音频首先将视频包存入一个包队列,然后开启一个线程读取队列的数据,接着解码AAC为PCM并将PCM数据PUT