2013-08-21 69 views
1

我有自定義Windows Phone中8的相機應用,我需要一個水印圖像添​​加到從攝像頭捕捉每一幀,然後記錄到視頻。如何寫入文件(編碼)變形照相機幀的Windows Phone 8

我可以用下面的代碼定製從預覽每個幀:

INT [] PixelData取出=新INT [(INT)(camera.PreviewResolution.Width * camera.PreviewResolution.Height)];

camera.GetPreviewBufferArgb32(PixelData取出);

回報PixelData取出;

,並把它寫回預覽。

我的問題是,雖然我可以在屏幕上顯示的幀,而用戶使用相機錄製的電影我不能找到WP8來編碼幀和音頻保存到文件中的工作方案。

我已經嘗試opencv,libav和其他沒有成功, 如果任何人都可以指向我正確的方向,將不勝感激。

+0

你真的不希望這樣做,將在託管代碼運行時的水印是一個非常糟糕的主意。即使您要將其添加到文件流接收器中的每一幀,仍然無法將視頻保存到任何有用的位置,因爲您無權訪問MediaLibrary視頻。 –

+0

我會給新的諾基亞Lumia Imaging API一個鏡頭。那件事有可笑的圖書館。適用於所有的Windows手機。 –

+0

你有沒有找到解決方案? – prakash

回答

-2

你可以這樣做。

private void GetCameraPicture_Click(object sender, RoutedEventArgs e) 
{ 
    Microsoft.Phone.Tasks.CameraCaptureTask cameraCaptureTask = new Microsoft.Phone.Tasks.CameraCaptureTask(); 
    cameraCaptureTask.Completed += cct_Completed; 
    cameraCaptureTask.Show(); 
} 

try 
{ 
    if (e.TaskResult == Microsoft.Phone.Tasks.TaskResult.OK) 
    { 
     var imageStream = e.ChosenPhoto; 
     var name = e.OriginalFileName; 
     using (MemoryStream mem = new MemoryStream()) 
     { 
      TextBlock tb = new TextBlock() { Text = DateTime.Now.ToString("dd MMM yyyy, HH:mm"), Foreground = new SolidColorBrush(Color.FromArgb(128, 0, 0, 0)), FontSize = 40 }; 
      BitmapImage finalImage = new BitmapImage(); 
      finalImage.SetSource(imageStream); 
      WriteableBitmap wbFinal = new WriteableBitmap(finalImage); 
      wbFinal.Render(tb, null); 
      wbFinal.Invalidate(); 
      wbFinal.SaveJpeg(mem, wbFinal.PixelWidth, wbFinal.PixelHeight, 0, 100); 
      mem.Seek(0, System.IO.SeekOrigin.Begin); 
      MediaLibrary lib = new MediaLibrary(); 
      lib.SavePictureToCameraRoll("Copy" + name, mem.ToArray()); 
     } 
    } 
} 
catch (Exception exp) { MessageBox.Show(exp.Message); } 

希望它可以幫助你。

+1

他的問題是視頻,而不是音頻。第三方應用程序無法將視頻寫入MediaLibrary。 –

相關問題