使用C#64bit的Axis Camera视频流

时间:2012-11-20 19:53:56

标签: c# wpf directshow rtsp ms-media-foundation

我正在寻找一种从AXIS M10 IP摄像机流式传输视频的方法,并使用Windows窗体(或更好的,wpf)显示源。但是,它需要在 64位 平台上运行。

这意味着我无法使用AXIS Media Control ActiveX组件。 此外,我发现这些方法有效,但仅适用于32位环境:

1。Using MediaElement Class for WPF

2。Using embedded media player

3.VlcLib(for dotnet

到目前为止,看起来我唯一的选择是直接实现RTSP协议并使用Media Foundation(用于.net)解码给定的RTP / AVP流并以某种方式显示它。 (我能够使用RTSP调用将摄像头传输到UDP端口。)

我对RTSP /流媒体很新,所以我担心我可能会忽略大局 - 我是否可以使用媒体基础在winform / wpf上渲染/显示视频,或者我是否需要看看其他地方的功能?(从我的研究看起来它可以解码H.264流,但我没有看到任何视频播放功能)。我也遇到了DirectShow - 我应该在Media Foundation上使用DirectShow吗?

或者更好的是,是否有一个能够处理64位运行的RTSP流的库?

4 个答案:

答案 0 :(得分:3)

例如

VisioForge Video Capture SDK .Net(但是商业),包括WPF控件。 使用FFMPEG解码,使用DirectShow引擎。真的,我在这里看不到任何媒体基金会的优势。

使用FFMPEG的任何其他方式。

或者,您可以编写RTSP源滤波器(基于DirectShow Push Source示例),其中H264输出引脚用于视频,G726 / G711 / AAC用于音频。您还可以制作虚拟视频捕获源过滤器并在MF或DirectShow中使用它。您可以使用live555库来实现RTSP。

所以,如果从零开始,这里没有简单的方法。

答案 1 :(得分:1)

如果你只需要视频,我宁愿只显示相机的MJPEG流。没有DirectShow或MediaFoundation的复杂性,这很容易完成。我在我的应用程序中使用WPF中的这个小库同时显示12个摄像头:MJPEG Decoder。您也可以在WinForms中使用它。它解码MJPEG流并为您提供要显示的图像。

答案 2 :(得分:0)

64位Axis Media Control SDK现已上市,但需要在Axis网站上下载帐户。

答案 3 :(得分:0)

我找到了一种在没有ActiveX DLL的情况下以64位使用VLC的方法:

VLCSharp Library由多个NuGet组成,可以在多个平台(WPF,Winforms,Xamarion,TvOS)上使用VLC Player。

在Onvif相机上工作正常