Iphone 使用VLC,是否可以在同一台计算机上编码30到40个基于IP的网络摄像头?

Iphone 使用VLC,是否可以在同一台计算机上编码30到40个基于IP的网络摄像头?,iphone,video-streaming,vlc,mpeg,mpeg-4,Iphone,Video Streaming,Vlc,Mpeg,Mpeg 4,我是一小部分幼儿园的IT人员。目前每所学校都有大约30-40个Axis IP网络摄像头,从旧的Axis 205206型号到Axis M1011型号不等。这些摄像头允许家长登录网站,全天查看孩子的教室。IP CAM位于本地网络上,在端口80上进行流式传输。每个学校都有一个公共ip地址,上面有一个反向代理HTTP服务器。我们直接从Axis网络摄像头为MJPEG提供服务,基本上是通过URL重写来允许客户端查看应用程序通过Axis HTTP API直接访问cam 多年来,这项技术一直运行良好,甚至在iP

我是一小部分幼儿园的IT人员。目前每所学校都有大约30-40个Axis IP网络摄像头,从旧的Axis 205206型号到Axis M1011型号不等。这些摄像头允许家长登录网站,全天查看孩子的教室。IP CAM位于本地网络上,在端口80上进行流式传输。每个学校都有一个公共ip地址,上面有一个反向代理HTTP服务器。我们直接从Axis网络摄像头为MJPEG提供服务,基本上是通过URL重写来允许客户端查看应用程序通过Axis HTTP API直接访问cam

多年来,这项技术一直运行良好,甚至在iPhone上也能运行,直到最近。事实上,它仍然可以在iPhone上使用,但只有在连接了Wifi的情况下才能使用。当iPhone通过3G连接时,MJPEG流不再工作。航空公司是美国电话电报公司

在过去的几天里,我做了大量的研究,我知道我必须转向苹果设备的HTTP实时流媒体,所以我只是想了解我必须解决的难题的各个部分,以使其发挥作用

我的Axis凸轮组合可能有问题。轴205和206仅为MJPEG,但M1011可以服务于h.264,但显然只能通过RTSP。如果需要或有助于整体解决方案,我愿意将旧的轴凸轮更换为M1011

据我目前的理解,我首先要整理的是将我的30到40轴M1011 h.264流(重新)编码/分块为MPEG-2(.m3u8和.ts文件)

问题1

是否可以和/或可行设置一台计算机,使用VLC命令行的“批处理”文件,启动来自Axis网络摄像头的30到40个输入流,并将其编码为MPEG-2,以供iPhone使用?我想知道处理这么多网络摄像头的稳定性、硬件要求等。这台计算机将有一个HTTP服务器(可能是IIS)和一个公共IP地址,因此无需获取比本地计算机更远的MPEG-2文件

问题2

对于仅为MJPEG服务的旧Axis型号(205206),是否也可以使用VLC将其编码为MPEG-2?我是否正确地假设(重新)编码或重新打包.h264到MPEG-2比将MJPEG编码到MPEG-2要少很多“工作”,或者它的CPU量差不多,等等?我已经安装了最新版本的Videolan,通过它的RTSP URL连接到Axis M1011.h264流非常容易,所以我知道很多工作都很有效

问题#3

任何人都可以共享任何特定的VLC命令行或配置,用于我给定配置的任意一侧:作为输入的轴M1011.h264和/或轴MJPEG,以及作为输出的MPEG-2(.m3u8和.ts文件),“分块”成苹果iPhone所需的大小,特别是在连接3G时

问题4


最后,如果有人有其他建议的方法(不同的编码器、工作更好的媒体服务器等),我也想听听这些建议。

可能是您的一个可能选择。它基于命令行,跨平台,您将能够控制质量、格式以及流。编码/重新编码质量基本上控制了应用程序的处理速度,并获得了从循环中获取数据所需的吞吐量。

如果您有足够的网络能力来接收输入流,并且有足够的CPU功率和RAM来编码,这是可能的。对vlc或ffmpeg的多个实例使用一台机器没有固有的限制

如果您有一个摄像头,输入512kbps,用于30个流,那么您需要30x512=15Mbps的网络能力,这对于现代机器来说应该很好

困难的部分是为iPhone输出获得30个转码。输出是MPEG2 TS容器,但在内部必须具有mpeg4或h.264编码的内容。H.264编码价格昂贵,但在MPEG4条件下需要较少的输出带宽才能获得相同的质量[大概减少30%]

假设您可以查看320x240,对于mpeg4来说,它的输出质量应该是256kbps。 对于h.264,您可以达到192 kbps[3GS及以下的基线]

现在的问题是你是否有足够的马力来进行代码转换。这是你检查的方式

取一个代表您输入的视频文件。检查输入帧速率。将其转换为所需的输出。检查您从ffmpeg获得的fps以进行编码。注意输入速率的倍数。对于同时处理多个流,去除5-10%。这是您在机器上获得的最大值

ffmpeg可以从http或rtsp源获取输入,并创建分段的输出。请参阅以了解如何使用ffmpeg创建片段。我想您仍然需要编写一个小程序来生成m3u8文件

这不是一件小事,但你会喜欢的。这是可以做到的

编辑:另一件事是你只需要转码发生时,有人正在查看它。因此,在给定的时间内,如果有人看不到10台摄像机,你不必进行这些转码。所以,也许你应该首先从统计上找出在给定的时间内有多少个摄像头被观看。看看你的历史。那么你需要一台功率较小的机器


编辑:如果您可以处理一些编程而不是命令行,请查看:

您可以发布一些规范吗。分辨率、比特深度和帧率。是否可以在同一台计算机上运行30到40个ffmpeg实例?当然有很多变量,但总的来说,假设一个现代化的CPU,RAM的负载,等等。。有一个合理的预期,这么多的相机会好吗?也许我的假设是错误的——我假设IP cam和ffmpeg(或VLC)之间存在1:1的关系。当你说“循环”时,你的意思是我可以配置35个IP摄像头在一个ffmpeg实例中进行编码,并且它将