我正在寻找一种从AXIS M10 IP摄像机流式传输视频的方法,并使用Windows窗体(或更好的,wpf)显示源。但是,它需要在 64位 平台上运行。
这意味着我无法使用AXIS Media Control ActiveX组件。 此外,我发现这些方法有效,但仅适用于32位环境:
1。Using MediaElement Class for WPF
3.VlcLib(for dotnet)
到目前为止,看起来我唯一的选择是直接实现RTSP协议并使用Media Foundation(用于.net)解码给定的RTP / AVP流并以某种方式显示它。 (我能够使用RTSP调用将摄像头传输到UDP端口。)
我对RTSP /流媒体很新,所以我担心我可能会忽略大局 - 我是否可以使用媒体基础在winform / wpf上渲染/显示视频,或者我是否需要看看其他地方的功能?(从我的研究看起来它可以解码H.264流,但我没有看到任何视频播放功能)。我也遇到了DirectShow - 我应该在Media Foundation上使用DirectShow吗?
或者更好的是,是否有一个能够处理64位运行的RTSP流的库?
答案 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相机上工作正常