Получить данные из локального хранилища (SD-карты) камеры onvif
Я разрабатываю приложение WPF для Onvif
Камера. Следуя Onvif SDK
Я успешно подключил камеру для получения видеопотока и управления PTZ... Теперь я хочу работать с SD card
, локальное хранилище на камеру, но у меня нет информации об этом. Кто-нибудь может дать мне идею, как использовать Onvif library
подключиться к SD card
и получить записанные данные от этого.
Спасибо за вашу помощь.
3 ответа
Я не уверен, что это идеально подходит для ваших нужд, но я думаю, что это может вам помочь. Этот код можно использовать для подключения к IP-камере Onvif и для записи потока в формат 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();
}
}
}
Здесь вы можете найти видео объяснение о том, как осуществить запись видео.
Вы должны иметь возможность копировать видео с SD-карты в сетевое хранилище, используя http://www.onvif.org/onvif/ver10/recording.wsdl и метод ExportRecordedData().
Отсюда: http://www.onvif.org/onvif/ver10/recording.wsdl
Вам нужно позвонить: GetRecordingJobs
Найти работу записи.
Отсюда: http://www.onvif.org/ver10/replay.wsdl
Вам нужно позвонить: GetReplayUri