我正在寻找网络IP摄像头接口,更准确地说我买了一台Neo Coolcam IP摄像头型号:NIP-02BGPW3A2.我正在寻找它的API \接口来玩它.
我开始跟踪它的请求和响应,但遗憾的是我还无法控制它,也无法找到所有命令(此模型具有移动和灯光选项).
我正在寻找样本和/或命令列表,任何帮助表示赞赏.
我目前正在从事一个智能家居项目,该项目连接传感器之类的东西。主服务器运行在 Raspberry Pi 上,并使用 Node JS 设计。在本地网络上,您可以访问系统网页并查看日志、用户和管理传感器。
我还想添加一个摄像头流。我有一个 IP 摄像机,我想将它连接到同一个网络,并且能够在网页上实时看到它。我不介意有一些延迟或延迟,而且我不需要访问家庭网络之外的服务。
我搜索了一下,但找不到任何简单的解决方案。我阅读了 RTSP 和 RTMP 协议,它们在这些情况下可能会有所帮助。我也读到有一些插件可用,例如 VLC 和 Quick Time,但我更喜欢不需要它们的解决方案。显然,HTML5 支持这一点,但我无法继续前进。浏览器支持应该不是问题,因为我假装只使用 Google Chrome 及其最新版本。因此,如果有任何易于集成并与 Chrome 兼容的插件,那应该没问题!
我还发现了一些这样的服务:
他们似乎提供了一些免费服务,但我不确定这是否是最好的解决方案。
那么,任何人都可以帮助解决这种情况吗?如何轻松地将视频从 IP 摄像机流式传输到本地网络中的 Web 浏览器(即使存在延迟或延迟)?
谢谢,伊戈尔!
我只是想从IP摄像机(Basler BIP-1280c)中读取视频流.我想要的流保存在相机的缓冲区中,长度为40秒,并在MJPEG中解码.
现在,如果我通过我的webbrowser访问流,它会向我显示40秒没有任何问题.但实际上我需要一个能够自行下载和保存流的应用程序.
相机是通过http访问的,所以我libcurl
用来访问它.这工作正常,我也可以下载流没有任何麻烦.我选择将流数据保存到*.avi文件中(希望这是正确的......?).
但现在问题是:我可以打开视频(尝试使用图腾视频播放器和VLC)并查看所有已录制的视频 - 但它太快了.整个视频持续5秒(而不是40秒).MJPEG中是否有任何标题可以放置总视频长度或fps等信息?我的意思是视频播放器必须缺少一些信息,以便它们能够快速播放?
更新:
正如答案中所建议的那样,我用hexeditor打开文件,我发现的是:
--myboundary..Content-Type: image/jpeg..Content-Length: 39050.........*Exif..II*...............V...........................2...................0210................FrameNr=000398732
6.AOI=(0800x0720)@(0240,0060)/(1280x0720).Motion=00000 (no)
[00000 | 00000 | 00000 | 00000 | 00000].Alarm=0000 (no) .IO
=000.RtTrigger=0...Basler..BIP2-1280c..1970:01:05 23:08:10.8
98286......JFIF.....
............................. ....&"((
此标头在文件中重新出现(后面跟着很多二进制数据字节).这实际上没问题,因为我在相机手册中读到所有MJPEG图片都有这个标题.
更有趣的JFIF
是在最后一行.在建议的答案中,这可能是文件格式的指标.但afaik JFIF是一种像jpg一样的单一图片格式.那么这甚至可能意味着整个视频文件只是一些"无脑"的链式图片?而我的播放器只是假设他应该一个接一个地展示这些图片,而不知道帧率?
嘿我正在尝试使用FFMPEG记录IP摄像机流.但它给我输入/输出错误.这是命令
ffmpeg -i http://admin:@ip:81/livestream.cgi E:\Video\my.h264
Run Code Online (Sandbox Code Playgroud)
我的相机是H264编码的.现在请帮助如何删除此错误.任何帮助,将不胜感激 .
我有两个 IP 摄像头和一台计算机,ffmpeg
可以将它们重新流式传输到 YouTube。
第一凸轮
它有视频和音频。我可以使用此命令成功地重新流式传输到 YouTube。
ffmpeg -re -rtsp_transport tcp -i rtsp://192.168.aaa.bbb:554/ch0_1.h264 -acodec libmp3lame -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv rtmp://a.rtmp.youtube.com/live2/<YouTube_key>
第二个凸轮
它只有视频。但是,使用下面的两个命令,我无法流式传输到 YouTube。(虽然ffmpeg
进程运行良好)
ffmpeg -re -rtsp_transport tcp -i rtsp://192.168.aaa.ccc/Streaming/Channels/102 -an -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 …
是否可以通过 FFMPEG 将带有直播(即 ip-camera)的网站流式传输到 Twitch?如果是,有人知道如何实现这一目标吗?
我正在做一个向 IP 摄像机发出 HTTP 请求的应用程序。每次我执行 HTTP 请求时,我都会收到一张在屏幕上绘制的图片。所有这些过程都是这样完成的:
所以很有可能当定时器被调用时,http请求没有完全完成,这样就可以了。
问题是,有时出于未知原因,我收到异常“操作已超时”。所以我做了一个操作日志。我记录了 http 请求之前的时间和之后的时间。它总是在 300-400 毫秒左右。我还记录了异常情况,令我大吃一惊的是,记录的时间大约是 24 或 76 毫秒。我的超时设置为 5000 毫秒,所以它永远不会超时!
在我所有的测试中,我从来没有发现超过 800 毫秒的记录时间,而且这远远低于设置的超时时间。
是否还有其他原因可以解释“操作已超时”错误?我也尝试过,ServicePointManager.DefaultConnectionLimit = 200;
但它不会改变任何东西。
非常感谢!
这是线程化的代码。ListTest 是记录器,然后将每一行打印到一个文件中。
StructTakePicture structTP = (StructTakePicture)structTakePicture;
ServicePointManager.DefaultConnectionLimit = 200;
string strFileName = structTP.FolderGUID + "input" + GetNumeroPhoto(structTP.Cam.ID, structTP.NumPhoto) + ".jpg";
DateTime dateDebut = DateTime.Now;
try
{
ListTest.Add(strFileName + " --- BEGIN : " + dateDebut.ToString());
WebRequest WebRequestObject = HttpWebRequest.Create(String.Format("http://{0}/mjpg/snapshot.cgi?camera={1}", structTP.Cam.TotalIP, structTP.Cam.View));
WebRequestObject.Timeout = 5000;
WebRequestObject.Credentials = …
Run Code Online (Sandbox Code Playgroud) 我有一个 ONVIF 网络摄像机。
我想从相机捕获图像,以便可以处理该图像并将其保存到文件系统。
我发现有一个 onvif api,它提供了一种GetSnapshotUri
应该为我提供图像快照的方法:
http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl
我设法通过添加服务引用来在 Visual Studio 中导入此 api:
如何构建一个客户端以GetSnapshotUri
从此服务进行调用?