如何播放 RTMP 流中的音频?

Posted

技术标签:

【中文标题】如何播放 RTMP 流中的音频?【英文标题】:How to play audio from RTMP stream? 【发布时间】:2017-02-13 16:38:54 【问题描述】:

我正在使用 RTMP。我在wireshark 中捕获了RTMP 包。我知道如何组装和播放视频数据,但不知道如何播放音频。 Wireshark 告诉我数据在 .aac 中。但是不明白怎么玩?我需要将它包装在容器中吗? wireshark capture

【问题讨论】:

【参考方案1】:

AAC 可以在没有容器的情况下播放。但是每一帧都必须有一个 ADTS 标头(谷歌可以向您解释该部分)才能从原始帧转换为 ADTS,您必须从流的开头获取序列标头并转换为 ADTS。

【讨论】:

再次感谢您的回复。 但我认为还有别的东西。从流的开始,我收到一小部分音频数据(0x00 0x14 0x08)。并且此数据之后的每个块都以字节 0x01 0x01 开始。也许还有另一种播放数据的方法或者我错了? 我认为 0x00 - 是类型,而 0x1408 是 AAC 配置。然后 0x1408 -> 0001 0100 0000 1000. 00010 - 5 位对象类型。(AAC 低复杂度) 1000 - 4 位采样率 0001 - 4 位通道 0 - 帧长度标志位 0 - 位取决于核心编码器0 - 位取决于核心编码器 不,没有别的。只需确保您没有写入数据包类型字节(这是 flv 标记的一部分,而不是 aac 有效负载的一部分)并且不要将序列标头写入文件,只需将其转换为 ADTS 标头并写入在每一帧之前。你甚至不需要解析框架。 谢谢。这是我在这个领域的第一次体验,理解所有这些细节有点困难。

以上是关于如何播放 RTMP 流中的音频?的主要内容,如果未能解决你的问题,请参考以下文章

在流中组合音频和图像

如何在三星智能电视上提取嵌入在 Icecast 音频(广播)流中的流式“正在播放”数据

如何从实时流中播放音频

iOS - 如何从流中读取音频并播放音频

在 UWP 中播放流中的音频

ExoPlayer 无法播放 Adob​​e 实时流编码器流式传输的音频/视频 (RTMP)