我正在使用libvlcsharp .net控件在VideoView中开发一个应用程序。我需要从摄像机中提取多播流,所以我想设置命令行参数-rtsp。
该应用程序的目的是压力测试一个视频系统使用大量的相机流,但我有一个有限的相机数量,所以我需要从几个相机的多个流。
使用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传输工作。如果无法找到使用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.
与visual输出窗口中的vlc日志相比。
发布于 2020-08-14 14:17:52
singleLibVLC =新LibVLC(“-rtsp-mcast”);
删除字符串开头和结尾处的空格。
共享完整的日志,在LibVLC ctor中添加“-详细=2”。
或者..。有不同的方式传递这个参数吗?
media.AddOption(":rtsp-mcast")
,虽然我怀疑它是否能更好地工作。
还需要在应用程序中进行一些操作,以使UDP传输能够工作。
使用udp://blabla
作为媒体MRL将是一种方法。
将VLC的详细日志记录(工作的地方)与基于libvlc的应用程序(不工作的地方)进行比较,这是一个很好的方法来排除应用程序中可能缺少的步骤,VLC应用程序可以自动完成这些步骤。
https://stackoverflow.com/questions/63385501
复制相似问题