如何在发送音频的 Java 客户端中使用 PTPv2 时钟初始化 AES67 音频流?

Posted

技术标签:

【中文标题】如何在发送音频的 Java 客户端中使用 PTPv2 时钟初始化 AES67 音频流?【英文标题】:How do I initialize a AES67 audio stream with PTPv2 clock within a Java client sending audio? 【发布时间】:2021-11-04 15:20:47 【问题描述】:

我有一个应该与虚拟 AES 声卡对话的 Java 客户端应用程序。我知道 AES67 是通过 IP/UDP/RTP 以线性 PCM 编码的,所以我特别想了解 PTPv2 时钟的设置。

【问题讨论】:

【参考方案1】:

ptp 用于同步时钟,使用 PTP 可以达到亚微秒范围内的精度(在 NTP 中是毫秒) 您创建的 RTP 数据包中的时间戳基于 PTP 时钟,因此它会影响延迟

ptp 同步:

步骤1:在同步之前,将时钟组织成主从层次结构(基于观察Announce消息中包含的时钟属性信息中包含的时钟属性信息)

Announce消息携带用于建立主从层次结构的信息;它们不用于同步

第 2 步:每个从站使用延迟请求-响应或对等延迟机制,通过与其主站交换消息(并且可能与上游对等透明时钟,如果存在)交换消息,从而与其主站同步

它如何与 AES67 配合使用:

首先你需要同步到ptp时钟,

发送SDP消息(带组播ip,ptp时钟主mac,音频格式...), 然后开始流式传输,创建 RTP 数据包(带有 PCM 日期)并将它们发送到 AES67 多播 ip 239.69.x.x

【讨论】:

以上是关于如何在发送音频的 Java 客户端中使用 PTPv2 时钟初始化 AES67 音频流?的主要内容,如果未能解决你的问题,请参考以下文章

如何将服务器生成的音频 wav 文件发送到客户端浏览器? [关闭]

支持vue3.0 中的音频插件都有哪些?

如何合并输入和输出音频以发送另一个会议者

如何实时流式传输音频文件

VoIP:如何在 Qt 多媒体中从摄像头捕获实时音频/视频流字节?

iOS:如何将音频数据从客户端流式传输到服务器?