从onvif相机的本地存储(SD卡)中获取数据



我正在为Onvif相机开发一个WPF应用程序。通过遵循Onvif SDK,我成功地连接了摄像机以获取视频流并控制ptz。。。现在我想使用SD card,相机上的本地存储,但我还没有这方面的信息。任何人都可以告诉我如何使用Onvif library连接到SD card并从中获取记录数据。

谢谢你的帮助。

从这里开始:http://www.onvif.org/onvif/ver10/recording.wsdl

您需要调用:GetRecordingJobs

查找录制作业。

从这里:http://www.onvif.org/ver10/replay.wsdl

您需要调用:GetReplayUri

我不确定这是否完全适合您的需求,但我认为它可能会对您有所帮助。此代码可用于连接到Onvif IP摄像机,并将流记录为MPEG4格式。使用此代码,录制文件将自动存储在计算机上。

namespace Basic_CameraViewer
{
    public partial class MainWindow : Window
    {
        private VideoViewerWPF _videoViewerWpf;
        private BitmapSourceProvider _provider;
        private IIPCamera _ipCamera;
        private WebCamera _webCamera;
        private MediaConnector _connector;
        private MPEG4Recorder _recorder;
        private IVideoSender _videoSender;
        public MainWindow()
        {
            InitializeComponent();
            _connector = new MediaConnector();
            _provider = new BitmapSourceProvider();
            SetVideoViewer();
        }
        private void SetVideoViewer()
        {
            _videoViewerWpf = new VideoViewerWPF
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment = VerticalAlignment.Stretch,
                Background = Brushes.Black
            };
            CameraBox.Children.Add(_videoViewerWpf);
            _videoViewerWpf.SetImageProvider(_provider);
        }
        private void ConnectIPCamera_Click(object sender, RoutedEventArgs e)
        {
            var host = HostTextBox.Text;
            var user = UserTextBox.Text;
            var pass = Password.Password;
            _ipCamera = IPCameraFactory.GetCamera(host, user, pass);
            if (_ipCamera == null) return;
            _connector.Connect(_ipCamera.VideoChannel, _provider);
            _videoSender = _ipCamera.VideoChannel;
            _ipCamera.Start();
            _videoViewerWpf.Start();
        }
        private void DisconnectIPCamera_Click(object sender, RoutedEventArgs e)
        {
            _videoViewerWpf.Stop();
            _ipCamera.Disconnect();
            _ipCamera.Dispose();
            _connector.Disconnect(_ipCamera.VideoChannel, _provider);
        }
        private void StartCapture_Click(object sender, RoutedEventArgs e)
        {
            if (_videoSender == null) return;
            var date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" +
                        DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second;
            var currentpath = AppDomain.CurrentDomain.BaseDirectory + date + ".mpeg4";
            _recorder = new MPEG4Recorder(currentpath);
            _recorder.MultiplexFinished += _recorder_MultiplexFinished;
            _connector.Connect(_videoSender, _recorder.VideoRecorder);
        }
        void _recorder_MultiplexFinished(object sender, Ozeki.VoIP.VoIPEventArgs<bool> e)
        {
            _recorder.MultiplexFinished -= _recorder_MultiplexFinished;
            _recorder.Dispose();
        }
        private void StopCapture_Click(object sender, RoutedEventArgs e)
        {
            if (_videoSender == null) return;
            _connector.Disconnect(_videoSender, _recorder.VideoRecorder);
            _recorder.Multiplex();
        }
    }
}

在这里,您可以找到关于如何实现视频录制的视频说明。

您应该能够使用http://www.onvif.org/onvif/ver10/recording.wsdl和ExportRecordedData()方法。

最新更新