音视频入门基础:FLV专题(18)——Audio Tag简介

一、引言

根据《video_file_format_spec_v10_1.pdf》第75页,如果某个Tag的Tag header中的TagType值为8,表示该Tag为Audio Tag:

这时StreamID之后紧接着的就是AudioTagHeader,也就是说这时Tag header之后的就是AudioTagHeader:

然后这时如果Filter的值不为1,表示未加密,不需要预处理。则AudioTagHeader之后紧接着的就AUDIODATA:

所以,

1.当某个Tag的Tag header中的TagType属性的值为8时,该Tag为Audio Tag;

2.未加密的情况下,一个Audio Tag = Tag header + AudioTagHeader + AUDIODATA。

二、AudioTagHeader

根据《video_file_format_spec_v10_1.pdf》第76页,AudioTagHeader包含的属性如下:

其中:

SoundFormat:占4位(8位等于1个字节),音频的压缩编码格式。

0:Linear PCM, platform endian

1:ADPCM

2:MP3

3:Linear PCM, little endian

4:Nellymoser 16 kHz mono

5:Nellymoser 8 kHz mono

6:Nellymoser

7:G.711 A-law logarithmic PCM

8:G.711 mu-law logarithmic PCM

9:reserved

10:AAC

11:Speex

14:MP3 8 kHz

15:Device-specific sound

SoundRate:占2位,音频采样频率。

0:5.5 kHz

1:11 kHz

2:22 kHz

3:44 kHz

SoundSize:占1位,即Bit depth(又叫位深度、位元深度、采样深度、采样位数、采样格式)。

0:8位

1:16位

该属性仅适用于未压缩的格式,Bit depth对于PCM编码是固定的,但对于有损压缩编解码器(如MP3和AAC),它是在编码期间计算的,并且可以因采样而异,具体可以参考:《音视频入门基础:AAC专题(3)------AAC的ADTS格式简介》。

SoundType:占1位,音频声道数目。

0:单声道

1:立体声

AACPacketType:占1字节,AAC数据包的类型。仅当FLV文件中的音频为AAC格式时,才有该属性。

值为0表示该AudioTag包含AAC sequence header,即包含audioObjectType属性为AAC格式时的AudioSpecificConfig;

值为1表示该AudioTag包含一帧AAC音频压缩数据。

所以当FLV文件中的音频不为AAC格式时,AudioTagHeader总共占1字节(SoundFormat + SoundRate + SoundSize + SoundType总共1字节);当FLV文件中的音频为AAC格式时,AudioTagHeader总共占2字节(SoundFormat + SoundRate + SoundSize + SoundType + AACPacketType总共2字节)。

从上面的介绍可以看到,AudioTagHeader指定了音频的压缩编码格式、音频采样频率、采样位数、音频声道数目等格式。

但是《video_file_format_spec_v10_1.pdf》第77页写道:"如果音频压缩编码格式为AAC,则SoundType属性的值应为1(立体声),SoundRate属性的值应为3 (44khz)。

然而,这并不意味着AAC音频在FLV中总是立体声,44khz。相反,Flash播放器会忽略这些值并在AAC比特流中提取信道和采样率数据编码。"

也就是会说,播放器在处理 AAC 音频时,需要忽略 AudioTagHeader 中的音频参数,而使用 AudioSpecificConfig的参数来初始化解码器:

三、AUDIODATA

根据《video_file_format_spec_v10_1.pdf》第77页,FLV文件未加密时,AUDIODATA为AudioTagBody:

四、AudioTagBody

根据《video_file_format_spec_v10_1.pdf》第77页,当FLV文件的音频压缩编码格式为AAC时,AudioTagBody为AACAUDIODATA:

五、AACAUDIODATA

根据《video_file_format_spec_v10_1.pdf》第77页,当AACPacketType值为0时,AACAUDIODATA为AudioSpecificConfig;当AACPacketType值为1时,AACAUDIODATA包含一帧AAC音频压缩数据:

六、AudioSpecificConfig

MPEG-4包括一个以统一方式处理不同音频格式组的系统。每种格式都用一个唯一的音频对象类型(Audio Object Type, 简称AOT)来表示。所有Audio Object Type共享的通用格式全局header称为音频特定配置(Audio Specific Config)。简单来讲Audio Specific Config是MPEG-4音频的全局header,该header包含了音频编码器的重要信息,比如编码器类别,音频频率,音频通道数等。具体可以参考:《音视频入门基础:AAC专题(11)------AudioSpecificConfig简介》。

相关推荐
2601_9654488710 小时前
AI视频制作:做系列节气民俗视频音色不统一,AI 音色克隆省事的方法
人工智能·机器学习·音视频
美狐美颜SDK开放平台10 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
EasyDSS12 小时前
讲座视频资源散存易丢失?视频直播点播EasyDSS校园/视频融媒体平台高效管理视频
音视频·媒体·easydss
2601_9656196914 小时前
AI视频制作:做历史战争视频,兵力部署的老地图难找,AI怎么自动配战争地图?
人工智能·音视频
2601_9654490817 小时前
AI视频制作:做系列考古视频音色不统一,AI 音色克隆的完整流程
人工智能·机器学习·音视频
2601_9654490818 小时前
AI视频制作:做系列历史地图视频想固定音色,AI 音色克隆的流程实测
人工智能·音视频
智塑未来19 小时前
AI视频翻译配音工具怎么选?5款工具的链路覆盖对比
人工智能·音视频
做萤石二次开发的哈哈21 小时前
商场分区广播怎么开发?商用音频主机四大技能与音频文件管理实践
音视频·蓝海aiot一站式工作台·公共广播·智慧广播·萤石云开放平台·商用音频主机·矩阵路由
音视频牛哥1 天前
大牛直播SDK(SmartMediaKit)iOS平台Unity3D RTSP/RTMP播放器集成实践
音视频·unity3d·ios rtmp播放器·ios rtsp播放器·ios unity3d播放器·ios unity rtsp·ios unity rtmp
美狐美颜SDK开放平台1 天前
视频美颜SDK如何应对快速转头与大幅度面部动作?
android·人工智能·ios·音视频·直播美颜sdk·视频美颜sdk