我正在使用 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 登录相比。