免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

mediamtx 的 useAbsoluteTimestamp 怎么开启才能保留帧的原始绝对时间戳?

mediamtx 的 useAbsoluteTimestamp 怎么开启才能保留帧的原始绝对时间戳? mediamtx 的 useAbsoluteTimestamp 怎么开启才能保留帧的原始绝对时间戳【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx如果你用 MediaMTX 转发多路视频或数据流需要利用每一帧自带的绝对时间戳来做流间同步就会遇到一个默认行为MediaMTX不保留入站帧的绝对时间戳而是用系统当前时间替换它们。这个设计是为了防止用户随意篡改录制日期同时兼容不发送绝对时间戳的源。要改回保留原始时间戳只需要把路径参数useAbsoluteTimestamp置为true。先确认你的协议组合在支持范围内开启useAbsoluteTimestamp之前先核对文档列出的协议支持矩阵来源docs/2-features/15-absolute-timestamps.md接收源端支持绝对时间戳的协议/设备HLS、RTSP、WebRTC、Raspberry Pi Camera发送读端支持绝对时间戳的协议HLS、RTSP、WebRTC如果你的场景是「RTSP 源 → MediaMTX → HLS 读」这一路是完整支持的但如果读端是 RTMP 或 SRT文档没有把它们列入发送端支持列表开启该参数也不会产生绝对时间戳。修改配置把 useAbsoluteTimestamp 置为 trueuseAbsoluteTimestamp是一个路径级别参数默认值false在配置文件 mediamtx.yml 中位于pathDefaults:段约第 518 行注释为 Use absolute timestamp of frames, instead of replacing them with the current time.pathDefaults: # Use absolute timestamp of frames, instead of replacing them with the current time. useAbsoluteTimestamp: true改在pathDefaults下会影响所有路径只想对某一路生效时在paths:段下对应路径或all_others之外的具体路径内写同一个参数即可例如paths: my_camera: source: rtsp://my_camera useAbsoluteTimestamp: true改完不需要手动重启根据 docs/2-features/05-configuration.md 的说明配置在服务器运行期间可直接编辑文件MediaMTX 会自动检测到变更并应用hot reloading尽可能不打断已有客户端。开启后的限制不能与 alwaysAvailable 同用这是配置层面唯一的硬性约束如果某路径启用了alwaysAvailable: true就不能再设置useAbsoluteTimestamp: true否则配置校验会直接报错useAbsoluteTimestamp cannot be used with alwaysAvailable该限制定义在 internal/conf/path.go 第 855–857 行。如果你的路径依赖 always-available断流时循环播放离线段机制两者只能选其一。验证时间戳是否真的透传了按读端协议分别核对HLS 读端MediaMTX 通过在每个分片前插入EXT-X-PROGRAM-DATE-TIME标签路由绝对时间戳直接请求播放列表查看形如文档示例#EXTM3U #EXT-X-VERSION:9 #EXT-X-MEDIA-SEQUENCE:20 #EXT-X-TARGETDURATION:2 #EXT-X-PROGRAM-DATE-TIME:2015-02-05T01:02:00Z #EXTINF:2, segment1.mp4 #EXT-X-PROGRAM-DATE-TIME:2015-02-05T01:04:00Z #EXTINF:2, segment2.mp4其中EXT-X-PROGRAM-DATE-TIME的值对应该分片第一帧的绝对时间戳分片内后续帧的绝对时间戳 EXT-X-PROGRAM-DATE-TIME 该帧的相对时间戳。判断开启是否生效如果源发送了绝对时间戳而播放列表里出现与源时间一致而非接入时刻的EXT-X-PROGRAM-DATE-TIME说明透传成功。RTSP / WebRTC 读端绝对时间戳通过周期性的 RTCP sender report 携带报告里包含一个参考绝对时间戳NTP timestamp和一个参考相对时间戳RTP timestamp每帧的绝对时间戳按下式计算frame_abs_timestamp ref_ntp_timestamp (frame_rtp_timestamp - ref_rtp_timestamp) / clock_rate浏览器读 WebRTC 时能读取绝对时间戳的前提是浏览器暴露了estimatedPlayoutTimestamp统计值。文档给出的配套读取库HLS 可用 gohlslibRTSP 可用 gortsplib。适用条件小结源端必须真的发送绝对时间戳HLS、RTSP、WebRTC、Raspberry Pi Camera 四类输入否则没有东西可透传读端协议需在 HLS / RTSP / WebRTC 之内路径上不能同时开启alwaysAvailable改完配置后靠 hot reloading 自动生效无需重启服务。【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表