0

我正在使用 libvlcsharp VideoView 控件在 .net 中开发应用程序。我需要从摄像机中提取多播流,因此我想设置命令行参数--rtsp-mcast。

该应用程序的目的是使用大量摄像头流对视频系统进行压力测试,但我的摄像头数量有限,因此我需要来自几个摄像头的多个流。

例如使用 vlc 会是什么样子

vlc --rtsp-mcast rtsp://<ip>/axis-media/media.amp

我如何测试。我运行上面一次并注意任务管理器和资源监视器中的网络流量,然后我再次运行相同的命令,发现网络流量没有增加。我也使用:

netstat -aon

我查看了每个 vlc 实例的 PID,发现它们都使用相同的两个 UDP 端口来发送和接收数据。

但是,当我使用以下代码初始化 LibVLC

singleLibVLC = new LibVLC(" --rtsp-mcast " );

并使用来自同一摄像头的两个流运行,网络流量翻倍,并且为分配给我的测试应用程序的 PID 打开了两个不同的临时 TCP 端口。

我了解“--rtsp-mcast”指令最终被转发到 live555 模块。这是问题吗?从这里到那里是不可能的。或者......有没有不同的方式来传递这个参数?

还有一些需要在应用程序中完成以允许 UDP 传输工作。如果 VLC 或轴相机找不到使用 UDP 连接的方法,它似乎默认为 TCP。

@mfkl,删除了命令行选项的前导空格,如

singleLibVLC = new LibVLC("--verbose=2 --rtsp-mcast");

这让我对流的两个副本都使用 UPD,但每个流都使用不同的端口对。

我修改了我的命令行测试如下:

vlc --verbose=2 --file-logging --logfile="%appdata%\vlc\out.log" --rtsp-mcast rtsp://etc.

与 Visual Studio 输出窗口中的 vlc 登录相比。

4

1 回答 1

0

singleLibVLC = new LibVLC(" --rtsp-mcast " );

删除字符串开头和结尾的空格。

共享完整日志,将“--verbose=2”添加到 LibVLC ctor。

或者......有没有不同的方式来传递这个参数?

media.AddOption(":rtsp-mcast")虽然我怀疑它会更好地工作。

还有什么需要在应用程序中完成以允许 UDP 传输工作

udp://blablaMRL 用作媒体将是一种方法。

将 VLC 的详细日志记录(它在哪里工作)与基于 libvlc 的应用程序(它在哪里不工作)进行比较,这是解决 VLC 应用程序自动执行的应用程序可能缺少哪些步骤的好方法。

https://wiki.videolan.org/VLC_command-line_help

于 2020-08-14T14:17:52.773 回答