推送H.264和AAC的重要前提

RTMP的音视频流的封装形式和FLV格式相似, 流媒体服务器向客户端发送包含H264和AAC的RTMP直播流,需要首先发送:

  • AVC sequence header
  • AAC sequence header
    这两个header非常重要,是客户端解码的必需部分.

因为以上两个参数只在客户端开始拉流开始的时候接收一次.
所以当H264参数发生变化时(如分辨率或帧率等)发生变化或AAC音频参数发生变化(采样率等),这时候两个header的内容也会发生变化. 这时候如果不重新拉流,就会出现绿屏或花屏的现象(因为解码参数已经发生变化).
因此这时候应该客户端应该进行重新拉流(重新接受两个header),画面就会恢复正常.

那这两个神奇的header究竟都藏了些什么具体信息呢?

AVC sequence header

AVCDecoderConfigurationRecord

Refer from H.264-AVC-ISO_IEC_14496-15.pdf

AVCDecoderConfigurationRecord的一些参数

解码时,解码器通过Profile知道需要准备那些参数, 通过level知道图像可能的最大的分辨率和帧率,通过SPS信息可计算出宽和高(如果信息充分还可计算出帧率信息).

AAC sequence header

AAC中用AudioSpecificConfig结构体来表示AAC sequence header.

AudioSpecificConfig ()
{
audioObjectType = GetAudioObjectType();
samplingFrequencyIndex;
if ( samplingFrequencyIndex == 0xf )
{
samplingFrequency;
}
channelConfiguration;
...
}
Refer from ISO-14496-3(2009-09).pdf

AudioSpecificConfig

Audio Object Types

Audio Object Types部分列表

samplingFrequencyIndex

A four bit field indicating the sampling rate used. If samplingFrequencyIndex equals 15 then the actual sampling rate is signaled directly by the value of samplingFrequency . In all other cases samplingFrequency is set to the value of the corresponding entry in Table 1.18.

通过查询下表可获取实际的采样率, 如samplingFrequencyIndex等于0x5, 查表可知当前的音频采样率为32000.

Sampling Frequency Index

samplingFrequency

The sampling frequency used for this audio object. Either transmitted directly, or coded in the form of samplingFrequencyIndex.

音频的采样率. 可用samplingFrequency直接来指定, 或者用samplingFrequencyIndex来指定.

channelConfiguration

用于描述声道信息, 常用的值有2, 立体声双声道.

channelConfiguration

References:
http://download.csdn.net/download/winlinvip/6602533
http://download.csdn.net/download/stormjiang/6290515
http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html

作者:FlyingPenguin
链接:https://www.jianshu.com/p/0bff0fc2bf28
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

AVC sequence header AAC sequence header相关推荐

  1. php {template header},php通过header发送自定义数据

    发送header: 我们定义了三个参数,token.language.region,放入header发送过去 <?php $url = 'http://www.example.com';$hea ...

  2. mysql sequence java_MySQL增加Sequence管理功能

    项目应用中,曾有以下一个场景: 接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况(当然概率很小). 所以想到了利用一个独立的自增的sequence来解决该问题. ...

  3. uvm中sequence和virtual sequence中objection的控制

    sequence中的objection的控制策略 在整颗UVM树中,树的结点很多,理论来说在任何组件中都可以控制objection.一般在sequence和virtual sequence中,也有在s ...

  4. 程序的本质之二ELF文件的文件头、section header和program header

    操作系统:CentOS Linux release 7.7.1908 内核版本:3.10.0-1062.1.1.el7.x86_64 运行平台:x86_64 参考文献:http://refspecs. ...

  5. html设置 header,http设置header

    在阅读本文前,大家要有一个概念,在实现正常的TCP/IP 双方通信情况下,是无法伪造来源 IP 的,也就是说,在 TCP/IP 协议中,可以伪造数据包来源 IP ,但这会让发送出去的数据包有去无回,无 ...

  6. php 请求header,PHP的curl查看header信息的功能(包括查看返回header和请求header)

    1.参看返回header信息,需要设置 curl_setopt($ch, CURLOPT_HEADER, true); //返回response头部信息 在curl_exec($ch);返回接口的顶部 ...

  7. php header jpg,php header函数输入图片IE不显示问题

    在php中利用header直接动态显示图片时发现显示图片为一个X了,这个问题在其它浏览器没有问题,只在ie浏览器中出问题了, 那么此问题如何解决? 刚开始img.php文件跳转到文件是这样写的 hea ...

  8. java header file_javah 生成header file 报错 问题解决

    标签: 环境:Android Studio, Mac OS 目标: 用javah 为MainActivity.class 生成 jni header 文件 正确的命令是 cd javah -class ...

  9. php如何处理查询请求,PHP的curl查看header信息的功能(包括查看返回header和请求header)...

    PHP的curl功能十分强大,简单点说,就是一个PHP实现浏览器的基础. 最常用的可能就是抓取远程数据或者向远程POST数据.但是在这个过程中,调试时,可能会有查看header的必要. 如下: ech ...

最新文章

  1. linux替换包的脚本,Andorid 自动替换logo打包脚本(支持windows和linux)
  2. 【分享】SMTP工作原理大剖析
  3. pandas 索引_Pandas学习笔记03数据清洗(通过索引选择数据)
  4. centos 安装 图像识别工具 tesseract-ocr 流程
  5. java中无法推断类型参数_Java中的推断异常
  6. 解决Git Log在IDEA中乱码的问题
  7. 关于Python生成器的一个小问题(StopIteration)
  8. 电脑硬件知识学习_关于网络学习心得体会集锦七篇
  9. java扫雷游戏设计总结_JAVA版扫雷游戏的设计与实现
  10. Executors Java编程规范插件提示手动创建线程池的解决办法
  11. 主板检测卡c5_主板检测卡代码大全
  12. 用 QT实现拖放(drag-drop)功能
  13. 【转载】气象数据相关资源
  14. 软件需求分析——非功能性需求
  15. VUE全局this指向
  16. 从强化学习的角度看alphago与MCTS
  17. Rect 和 Bounds
  18. 饥荒高脚鸟蛋孵化教程
  19. Flutter高仿微信-第59篇-同步数据
  20. 加密艺术,当AI遇上区块链 |Mixlab跨学科

热门文章

  1. 3COM小型企业有线局域网方案(三、四、五)
  2. Lanecat网猫的案例
  3. 中石油训练赛 - Swapity Swap(矩阵快速幂)
  4. CodeForces - 510E Fox And Dinner(最大流+奇偶建边+路径打印)
  5. HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
  6. 安卓入门系列-09一个实战小项目(备忘录Memo)
  7. Linux服务-SSH服务部署
  8. 柴油机计算机故障,柴油机故障论文,关于6105小型高速柴油机常见故障处理相关参考文献资料-免费论文范文...
  9. 对校招生培养工作的建议_如何提升人才培养质量?西华的老师们正面临一场大考...
  10. 高性能服务器 - window篇