2013-12-13 4 views
0

Я создаю приложение, которое сэмплирует фотографии во время записи видео.Получить кадры изображения во время записи видео

Есть ли какие-либо события, на которые я могу подписаться, чтобы получить кадр каждые х раз?

В Android есть метод OnPreviewCallback (или что-то вроде этого)

ответ

4

Вы должны использовать фотоаппарат класс

класс фотоаппарата содержит метод GetPreviewBufferArgb32, чтобы получить предварительный просмотр кадра в массив байт для Furthur манипуляций ,

так, скажем, 5 кадров в секунду, вам нужно будет сделать таймер и тикеры таймера, вы должны вызвать метод.

См эти ссылки, это поможет вам много

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202956(v=vs.105).aspx

http://msdn.microsoft.com/en-us/magazine/hh708750.aspx

http://msdn.microsoft.com/en-US/library/windowsphone/develop/microsoft.devices.photocamera(v=vs.105).aspx

+0

Спасибо это помогло! – user3099571

+0

приветствуются ... – Archana

0

Я использовал код ниже для одного из моих проектов (QRcode сканирования)


private static readonly ManualResetEvent _pauseFramesEvent = new ManualResetEvent(true); 
     private PhotoCamera _cam; 
    private Thread _yFramesThread; 
private Dictionary<object, object> _hintDictionary; 

protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      this._cam = new PhotoCamera(); 
      this._cam.Initialized += _cam_Initialized; 
       this._pumpYFrames = true; 
       this._isScanning = true; 
      } 


      CreateStandByTimer(); 
      this._yFramesThread = new Thread((PumpYFrames)); 
      this._yFramesThread.Start(); 
      base.OnNavigatedTo(e); 

     } 

    private void PumpYFrames() 
      { 
       var array = new byte[307200]; 
       while (_pumpYFrames) 
       { 
        _pauseFramesEvent.WaitOne(); 
        if (this._isScanning) 
        { 
         bool flag; 
         try 
         { 
          this._cam.GetPreviewBufferY(array); 
          flag = true; 
         } 
         catch 
         { 
          flag = false; 
         } 
         if (flag) 
         { 
          var source = new RGBLuminanceSource(array, 640, 480, false); 
          var binarizer = new HybridBinarizer(source); 
          var image = new BinaryBitmap(binarizer); 
          Reader reader = new QRCodeReader(); 
          try 
          { 
           var results = reader.decode(image, _hintDictionary); 
           ProcessScan(results); 

          } 
          catch (Exception ex) 
          {//catch logic 

          } 
         } 
        } 
       } 
      } 
Смежные вопросы