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

VLC-Unity通过DirectShow播放USB摄像头视频失败的问题求助

VLC-Unity USB摄像头视频流播放问题

问题背景

正在测试VLC-Unity的各类视频流协议适配能力,最基础场景为直接播放USB摄像头视频流。基于官方提供的VLCMinimalPlayback.cs示例(Windows环境编译运行)修改,原示例通过HTTP播放远程视频:

if(_mediaPlayer.Media == null)
{
    // playing remote media
    _mediaPlayer.Media = new Media(new Uri("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"));
}

修改为适配USB摄像头的版本:

if (_mediaPlayer.Media == null)
{
    // playing remote media

    // _mediaPlayer.Media = new Media(new Uri("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"));

    _mediaPlayer.Media =
        new Media(
            new Uri("dshow://")
        );
    _mediaPlayer.Media.AddOption(":dshow-vdev=<My USB Camera Name>");

    Task.Run(async () =>
        {
            var success = await _mediaPlayer.PlayAsync();

            uint height = 0;
            uint width = 0;
            _mediaPlayer.Size(0, ref width, ref height);

            Debug.Log("Media size: " + width + "x" + height);
        }
    );
}

运行后调试信息显示:

Media size: 0x0

此时无视频画面(音频流正常),即使给<My USB Camera Name>添加单引号或双引号也无法解决。

更新1:VLC播放器验证与实验结果

该摄像头可在VLC播放器中正常使用,调试日志片段如下:

main debug: Creating an input for 'dshow://'
main debug: requesting art for new input thread
main debug: using timeshift granularity of 50 MiB
main debug: using timeshift path: C:\Users\pengc\AppData\Local\Temp
main debug: `dshow://' gives access `dshow' demux `any' path `'
main debug: creating demux: access='dshow' demux='any' location='' file='(null)'
main debug: looking for access_demux module matching "dshow": 15 candidates
main debug: looking for meta fetcher module matching "any": 1 candidates
dshow debug: dshow-vdev: <Camera Name>
dshow debug: dshow-adev: none

已上传两个极简实验项目至仓库(Windows11环境,已安装VLC播放器与OBS Studio,OBS虚拟摄像头为默认捕获设备):

实验1:OBS虚拟摄像头

媒体播放器创建代码:

_mediaPlayer.Media = new Media(
    new Uri(
        "dshow://"
    )
);

_mediaPlayer.Media.AddOption(":dshow-vdev=\"OBS Virtual Camera\"");
_mediaPlayer.Media.AddOption(":dshow-adev=None");

结果:Unity应用仅能播放第一帧,随后画面冻结,虽能识别到正确摄像头,但无法正常播放。

实验2:真实USB摄像头

媒体播放器创建代码:

_mediaPlayer.Media = new Media(
    new Uri(
        "dshow://"
    )
);

_mediaPlayer.Media.AddOption(":dshow-vdev=\"USB2.0 HD UVC WebCam\"");
_mediaPlayer.Media.AddOption(":dshow-adev=None");

结果与实验1一致,仍默认使用OBS摄像头,仅显示第一帧后冻结。

该仓库可通过Unity Editor 2022 LTS打开,需手动导入VLCUnity资产(试用版即可)。目前问题原因未知,希望了解是否可复现并寻求解决办法。

更新2

可上传VLCUnity试用版资产以方便复现问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:12:05