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

标签 vlc libvlc

我的桌面上安装了 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/

相关文章:

macos - 在 Mac 上使用 VLCJ 时出错

video - 无需视频处理即可重传 rtsp 视频

python - libvlc "VLC is unable to open the MRL ' C :\Users\Public\Videos\Sample Videos\Wildlife. mwv'"

c++ - Qt4 错误 : undefined reference to `QWebView::QWebView(QWidget*)' , `QWebView::load(QUrl const&)'

ffmpeg - 如何从 Epiphan 获取实时视频流到 VLC 播放器?

php - 基于 PHP 通过 HTTP 从录制文件流式传输实时视频

python - 我如何通过我的规范文件说服 PyInstaller 在它生成的 EXE 中包含 libvlc.dll?

android - 编译 VLC Android 失败 "You must define ANDROID_NDK, ANDROID_SDK before starting."

java - TextureView.getBitmap() 函数是否有任何快速替代方案?

windows - VLC 2.1.5 (win64) 不支持 TLS?