Webrtc视频采集由毫秒转换为rtp的时间戳的转换过程

mac2025-10-24  4

源文件在: src/video/video_stream_encoder.cc

函数 void VideoStreamEncoder::OnFrame(const VideoFrame& video_frame) {   。。。。。。      // Convert NTP time, in ms, to RTP timestamp.   const int kMsToRtpTimestamp = 90;   incoming_frame.set_timestamp(       kMsToRtpTimestamp * static_cast<uint32_t>(incoming_frame.ntp_time_ms()));

    。。。。。。。 }

时间戳强转处理:

incoming_frame.ntp_time_ms() 的时间戳(int64_t)为: 3781589843340

强转处理: static_cast<uint32_t>(incoming_frame.ntp_time_ms()) int64_t值:(共44位) 10进制:3781589843340 16进制:3707851BD8C

转换为32时(16进制需要丢掉前面的3位,剩余的值为:7851BD8C) 16进制:7851BD8C 10进制:2018622860

转换为90000HZ的rtp传输时间戳 10进制:2018622860 2018622860*90 = 181676057400

10进制:181676057400 16进制:2A4CBCA338

转换为uint32_t的时间戳: 保留32位值: 16进制:4CBCA338 10进制:1287430968

由毫秒转换为rtp时间戳经过了两次时间转换,最后的时间戳为:1287430968

最新回复(0)