You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Unity的VLC插件获取视频流的PTS用于场景同步?

获取Unity中VLC插件直播流的每帧PTS方法

可以实现,核心是利用LibVLC的事件回调机制捕获每帧的PTS信息,具体方法如下:

  • 注册VoutPictureDisplay事件回调
    LibVLCSharp(官方Unity版绑定库)的MediaPlayer.EventManager提供了帧显示事件,每帧画面准备渲染时会触发,回调参数包含该帧的PTS:

    using LibVLCSharp.Shared;
    
    // 初始化LibVLC实例与MediaPlayer
    var libVLC = new LibVLC();
    var mediaPlayer = new MediaPlayer(libVLC);
    
    // 绑定帧显示回调
    mediaPlayer.EventManager.VoutPictureDisplay += (sender, args) =>
    {
        // 获取当前帧的PTS,单位为微秒
        long framePts = args.Picture.Pts;
        // 转换为秒用于同步计算
        double timestampInSeconds = framePts / 1000000.0;
        
        // 此处编写场景同步逻辑,注意:回调在非主线程触发,Unity场景操作需切回主线程
    };
    
  • 关键注意点

    • 必须使用官方的LibVLCSharp for Unity库,第三方封装的老旧VLC插件可能未暴露该接口;
    • 回调运行在LibVLC的工作线程,若要更新Unity场景中的UI或物体状态,需借助主线程调度工具(如UnityMainThreadDispatcher);
    • PTS的时间基准由流本身定义,多数情况下单位是微秒,需根据实际流参数调整转换逻辑。

内容的提问来源于stack exchange,提问作者LauMagma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:00:56