gpt4 book ai didi

vlc - 将视频设备名称作为参数传递给 dshow

转载 作者:行者123 更新时间:2023-12-01 17:56:10 28 4
gpt4 key购买 nike

我的桌面上安装了 2 个网络摄像头 - Intex USB 2.0 和 Logitech 网络摄像头 C170。我正在使用libvlc .net wrapper我想流式传输第二个网络摄像头。

我正在使用给定的示例创建一个playerStream -

    VlcSinglePlayer playerStream = (VlcSinglePlayer)factory.CreatePlayer(new
PlayerOutput(":sout=#transcode{vcodec=h264,vb=256,fps=30,scale=1,acodec=none}:udp{mux=ts,dst=127.0.0.1:8080}"));

playerStream.SetMediaInput(new MediaInput(MediaInputType.UnparsedMrl,
"dshow://:dshow-vdev=\"Webcam C170\" :dshow-adev=none :live-caching=300 "));

上述代码有效,但我在 VLC (udp://@:8080) 中捕获的流始终来自第一个网络摄像头 (Intex USB 2.0),而不是来自 Logitech 网络摄像头 C170。

当我尝试从命令行使用 VLC 时,一切正常。

如何修复此错误?

最佳答案

由于它总是选择您的第一个设备,VLC 一定不知道您指定的设备选项,因此很可能在某个地方的语法存在错误。

您是否只是在“dshow://”后面缺少一个空格?

你有这个:

playerStream.SetMediaInput(
new MediaInput(MediaInputType.UnparsedMrl,
"dshow://:dshow-vdev=\"Webcam C170\" :dshow-adev=none :live-caching=300"));

“dshow://”之后和以下冒号之前应该有一个空格:

playerStream.SetMediaInput(
new MediaInput(MediaInputType.UnparsedMrl,
"dshow:// :dshow-vdev=\"Webcam C170\" :dshow-adev=none :live-caching=300"));

有时需要使用“--”语法而不是“:”,因此这可能是必要的:

playerStream.SetMediaInput(
new MediaInput(MediaInputType.UnparsedMrl,
"dshow:// --dshow-vdev=\"Webcam C170\" --dshow-adev=none --live-caching=300"));

如果仍然不起作用,那么您需要查阅文档以了解 MediaInputType.UnparsedMrl 如何期望其参数。在我自己的 LibVLC 绑定(bind)中,这里只有“dshow://”被视为“MRL”,其他所有内容都是必须单独传递并显式添加到媒体的选项(这是一个不同的 API 调用)。

创建 LibVLC 实例时可以(并且在某些情况下需要)传递一些选项。对于这个库来说,会是这样的:

factory = new VlcMediaLibraryFactory (new string[] { 
"--dshow-vdev=\"Webcam C170\"",
"--dshow-adev=none",
"--live-caching=300"});

关于vlc - 将视频设备名称作为参数传递给 dshow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014894/

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