libvlcsharp - 如何强制从 rtsp 流摄像机进行多播

libvlcsharp - how to force multicast from rtsp stream camera

我正在使用 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 " );

和 运行 对于来自同一台摄像机的两个流,网络流量加倍,并且有两个不同的临时 TCP 端口为分配给我的测试应用程序的 PID 打开。

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

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

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

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

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

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

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

比较 vlc 登录 visual studio 输出 window.

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

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

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

Or... is there a different way to pass this parameter?

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

Also is there something that needs to be done in the application to allow for the UDP transport to work

使用 udp://blabla 作为媒体 MRL 是一种方式。

比较 VLC(它工作的地方)和你基于 libvlc 的应用程序(它不工作的地方)的详细日志记录,这是一个很好的方法来解决你的应用程序可能缺少哪些步骤,而 VLC 应用程序确实自动地。

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