使用ffmpeg从IP Camera获取Stream并保存为jpeg(图像)文件

我如何从Ip Camera获取流,它使用RTP,流是MPEG4,我有多播地址和端口,我有ip camera的IP地址和端口号。
我无法通过http forexample(http:// ip / jpeg)到达而且我也无法通过VLC播放器访问流媒体。 例如(rtp:// ipadressofcam:port)和( rtp:// multicastaddress:port
那ffmpeg命令是什么?
我有Windows操作系统,我现在只用C#编写代码。
但是制作人创建了他们自己的ocx,用于观看凸轮,该插件可以在.net上工作,但我不想使用它,因为它没有太多的function,我的意思是你不能得到当前的图片或凸轮的快照,这就是为什么我必须自己动手吧。

您确定该流没有密码保护吗?

试着了解您的相机拒绝VLC请求的原因。 这是如何做到的:安装Wireshark,启动它,并为摄像机地址设置一个filter,如:ip.addr == camera_ip(xxxx.xxxx.xxxx.xxxx)。 然后,尝试连接VLC,并查看交换的消息。 如果你看到DROP,UNAUTH或者告诉你使用passwd的东西,请介绍它。 (VLC将首先尝试使用未经身份validation的过程进行连接,如果失败,则会要求使用passwd。)

如果失败原因有所不同,Wireshark会给你提供线索。

请记住,如果VLC无法访问它,那么找到其他方法的机会几乎为零。 除非你是video专家。

希望能帮助到你!

您可以使用VLC进行此类操作,它也可用于.NET的ActiveX控件,只需安装VLC Media Player即可在VS工具箱上设置它的控件

http://forum.videolan.org/viewtopic.php?f=32&t=54969

UPDATE

如果您准备为这些东西付费,您可以使用http://www.mainconcept.com/products/sdks/video.html此公司产品推进解码和编码,您可以在其中找到一个巨大的图书馆。

因此,您希望从相机接收video流并将单个帧转换为JPEG文件。 这听起来不错,听起来很自然:为什么不呢? 有一个video源在网络上发送,我们不需要太多,只需选择单独的帧。

原始流是MPEG-4(第2部分),期望的目标编码是JPEG。 这将任务分为获取MPEG-4video输入,将其解码为未压缩图像以及编码为JPEG的部分。 让我们从最后一个向后看这些。

JPEG是一种流行的编码,并且有各种具有不同接口的编解码器能够压缩成JPEG。 选项包括GDI + API , IJG JPEG库libjpeg ,JPEG库和用于DirectShow和其他接口的video编解码器。

MPEG-4解码器是一个复杂的组件,但幸运的是很好地标准化,并且可以在不同的接口和几个来源中使用。 特别是MPEG-4 Part 2video解码器作为DMO (以及通过)与Windows 7一起提供。解码器也可用作ffdshow,Intel Media SDK中的DirectShowfilter。

回到第一步,您需要从网络获得MPEG-4流。 首先,您表示相机在多播UDP地址上可用。 这使您打开一个套接字并放入多播组,以便开始接收RTP数据。 您将收到的数据不是纯MPEG-4,并且根据MPEG-4音频/可视流的RTP有效载荷格式进行格式化,当您收到RTP消息流时,您必须准备好接收无序片段,数据包丢失等。您应该接收可以接收的内容,检查RTP标头,并尽力重建MPEG-4馈送。

最终,您需要从您的应用程序中覆盖这些步骤(不一定是直接使用第三方库,包括其他答案中提到的那些),并构建一个管道,将网络接收和转码拼接在一起。

所以直到现在,我看到VLC无法打开它但是如果我们创建.sdp文件并使用ffplay播放它只会出现黑屏。

 vlc -vvv dshow:// --sout-keep --sout-all --sout=#rtp{dst=multicastaddress,port=portNo,sdp=file:///C:/test/my.sdp} 

当然这不是纯粹的解决方案,但没有一点希望。

但绝对的解决方案可能就是这样;
没有办法只使用c#来实现我想要的东西。 我可以使用很少的c ++库组件,但我可以将它与托管c ++一起使用来编写互操作服务并在我的c#代码中使用这些dll。这就是我需要的:

1-I需要一个RTP库, http: //research.edm.uhasselt.be/~jori/page/index.php?n = CS.Jrtplib或live555但live555有一定的局限性。
2-RTP库是从我的编码器拉出的MPEG4流的传输。 但我需要控制流的方法,那些是生产者的WSDL。
3 – 之后我需要一个解码器; Libavcodec,我可以使用libavcodec将iframe转换为.net中的jpeg图像。