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 应用程序确实自动地。
我正在使用 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 应用程序确实自动地。