首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >libvlcsharp -如何从rtsp流摄像机强制组播

libvlcsharp -如何从rtsp流摄像机强制组播
EN

Stack Overflow用户
提问于 2020-08-12 22:24:21
回答 1查看 1K关注 0票数 0

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

该应用程序的目的是压力测试一个视频系统使用大量的相机流,但我有一个有限的相机数量,所以我需要从几个相机的多个流。

使用vlc会是什么样子?

代码语言:javascript
运行
复制
vlc --rtsp-mcast rtsp://<ip>/axis-media/media.amp

我怎么测试。我只运行上述一次,并注意到任务管理器和资源监视器中的网络流量,然后再次运行相同的命令,并看到网络流量没有增加。我还用:

代码语言:javascript
运行
复制
netstat -aon

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

但是,当我使用下面的代码初始化LibVLC时

代码语言:javascript
运行
复制
singleLibVLC = new LibVLC(" --rtsp-mcast " );

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

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

另外,在应用程序中是否需要做一些事情来允许UDP传输工作。如果无法找到使用UDP连接的方法,则VLC或轴摄像机似乎默认为TCP。

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

代码语言:javascript
运行
复制
singleLibVLC = new LibVLC("--verbose=2 --rtsp-mcast");

这使我可以在两个流副本中使用UPD,但每个流都使用不同的端口。

我将命令行测试修改如下:

代码语言:javascript
运行
复制
vlc --verbose=2 --file-logging --logfile="%appdata%\vlc\out.log" --rtsp-mcast rtsp://etc.

与visual输出窗口中的vlc日志相比。

EN

Stack Overflow用户

回答已采纳

发布于 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://wiki.videolan.org/VLC_command-line_help

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63385501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档