gpt4 book ai didi

javascript - 从 WebRTC 访问 RTP 时间戳

转载 作者:行者123 更新时间:2023-12-01 16:11:01 30 4
gpt4 key购买 nike

我目前正在开发一个 WebRTC 项目。我们正在使用 Janus Gateway 进行 WebRTC 服务器端录制/收发等。

对于与 Canvas 相关的同步,我需要访问接收到的视频轨道的 RTP 时间戳。一段时间以来,我一直在广泛地寻找一种方法。

我已经尝试过对等连接的 getStats 功能,但统计信息的时间戳是获取时间。不是数据包时间戳。

此外,在 W3 的标准中,它特别指出:

The timestamp of type DOMHighResTimeStamp [HIGHRES-TIME], indicating the most recent time of playout of an RTP packet containing the source. The timestamp is defined in [ HIGHRES-TIME] and corresponds to a local clock.



可以通过 getContributingSources()访问函数来自 RTCRtpReceiver目的。但我注意到,该函数返回一个空数组。

重现:

https://webrtc.github.io/samples/src/content/peerconnection/pc1/

后开始调用 您的相机馈送和对等连接应该出现。
之后打开控制台并写入:
const receivers = pc2.getReceivers();
receivers.forEach(receiver => {
console.log(receiver.getContributingSources());
});

我的问题是,如何访问收到的 RTP 数据包的时间戳?还是最后收到的视频 RTP 时间戳?

提前致谢。

最佳答案

编辑 : Chrome 从版本 76 开始支持标准化统计.

您不能访问单个帧时间戳(至少不是在 javascript 中)但是 inbound-rtp stats 似乎肯定是您正在寻找的。接口(interface) RTCInboundRtpStreamStats lastPacketReceivedTimestamp定义为:

lastPacketReceivedTimestamp of type DOMHighResTimeStamp Represents the timestamp at which the last packet was received for this SSRC. This differs from timestamp, which represents the time at which the statistics were generated by the local endpoint.



所有现代浏览器(Chrome、Firefox、safari、Edge)似乎都为 inbound-rtp 提供了一些支持。统计数据。验证它们是否已经为 lastPacketReceivedTimestamp 提供了有意义的值. 注意 :规范似乎是最近的,您的里程可能会有所不同。这是一些代码:

    rtcpeer.getReceivers()[0].getStats().then(function(stats)
{
for (let stat of stats.values())
{
if (stat.type === "inbound-rtp")
console.log(stat.lastPacketReceivedTimestamp);
}
});

关于javascript - 从 WebRTC 访问 RTP 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48927871/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com