0到1理解web音视频从采集到传输到播放系列之《Jessibuca系列篇音视频解码》

142 阅读3分钟

本课程主要从

  • 音视频采集
  • 音视频编码
  • 音视频协议封装传输
  • 音视频协议解封装
  • 音视频解码
  • 音视频播放

关于Jessibuca

关于JessibucaPro

第五章:音视频解码

音视频的解码主要是将音频(aac/g711/mp3/opus)解码成裸的音频pcm格式的数据,视频(h264/h265)解码成yuv数据。

音频

音频的主要格式有:aac、g711、mp3、opus

aac

AAC 是新一代的音频有损压缩技术,音频文件格式有 ADIF 和 ADTS:

ADIF

Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。

ADTS

Audio Data Transport Stream。是 AAC 音频的传输流格式。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。

总的来说,ADTS 可以在任意帧解码,也就是说它每一帧都有头信息。ADIF 只有一个统一的头,所以必须得到所有的数据后解码。

解码

在web端 ,如果想要解码aac格式的数据,需要借助ffmpegwebassembly 技术将c/c++的代码编译成.wasm文件,来将aac格式的数据解码成pcm数据。

web端播放

可以通过audio标签来播放aac in mp4格式的文件。

<video src="./test.mp4"></video>

g711a/u

解码

在web端 ,如果想要解码g711a/u格式的数据,需要借助ffmpegwebassembly 技术将c/c++的代码编译成.wasm文件,来将g711a/u格式的数据解码成pcm数据。

播放

目前web端不支持播放opus格式的音频。

mp3

解码

在web端 ,如果想要解码mp3格式的数据,需要借助ffmpegwebassembly 技术将c/c++的代码编译成.wasm文件,来将mp3格式的数据解码成pcm数据。

web端播放

可以通过audio标签来播放mp3格式的文件。

<audio src="./test.mp3"></audio>

opus

解码

在web端 ,如果想要解码opus格式的数据,需要借助ffmpegwebassembly 技术将c/c++的代码编译成.wasm文件,来将opus格式的数据解码成pcm数据。

web端播放

目前web端不支持播放opus格式的音频。

视频

视频的主要格式有:h264、h265

h264

解码

在web端 ,如果想要解码h264格式的数据,需要借助ffmpegwebassembly 技术将c/c++的代码编译成.wasm文件,来将h264格式的数据解码成yuv数据。

web端播放

可以通过video标签来播放 H.264 and MP3 in MP4或者H.264 and AAC in MP4格式的文件。

<video src="./test.mp4"></video>

h265

解码

在web端 ,如果想要解码h265格式的数据,需要借助ffmpegwebassembly 技术将c/c++的代码编译成.wasm文件,来将h265格式的数据解码成yuv数据。

web端播放

可以通过video标签来播放 H.265 and MP3 in MP4或者H.265 and AAC in MP4格式的文件。

<video src="./test.mp4"></video>

h265 格式视频需要硬件支持