Windows phone 8 如何获取录制视频的缩略图-windows phone 8?

Windows phone 8 如何获取录制视频的缩略图-windows phone 8?,windows-phone-8,thumbnails,video-capture,Windows Phone 8,Thumbnails,Video Capture,我用CaptureSource()录制了本主题中的视频,但无法获取录制视频的缩略图 以下是解决方案: [……] [……] 更新:允许用户在需要时获取缩略图 将点击事件添加到viewfinderRectangle <Rectangle x:Name="viewfinderRectangle" [...] Tap="viewfinderRectangle_Tap" /> 你可以试试这个。如果您使用的是AudioVideoCaptureDeviceAPI。以下

我用
CaptureSource()
录制了本主题中的视频,但无法获取录制视频的缩略图

以下是解决方案:

[……]

[……]



更新:允许用户在需要时获取缩略图

将点击事件添加到
viewfinderRectangle

<Rectangle 
    x:Name="viewfinderRectangle"
    [...]
    Tap="viewfinderRectangle_Tap" />

你可以试试这个。如果您使用的是AudioVideoCaptureDeviceAPI。以下事件在每次帧捕获后调用。您可以选择您需要的任何帧。就拿第一个来说吧

private AudioVideoCaptureDevice VideoRecordingDevice;
VideoRecordingDevice.PreviewFrameAvailable += previewThumbnail;
bool DisablePreviewFrame = false;

private void previewThumbnail(ICameraCaptureDevice a, object b)
{
    if (!DisablePreviewFrame)
    {
        DisablePreviewFrame = true;
        int frameWidth = (int)VideoRecordingDevice.PreviewResolution.Width;
        int frameHeight = (int)VideoRecordingDevice.PreviewResolution.Height;
    }
    int[] buf = new int[frameWidth * frameHeight];
    VideoRecordingDevice.GetPreviewBufferArgb(buf);
    using (IsolatedStorageFile isoStoreFile = IsolatedStorageFile.GetUserStoreForApplication())
    {
        var fileName = "temp.jpg";

        if (isoStoreFile.FileExists(fileName))
            isoStoreFile.DeleteFile(fileName);
        using (IsolatedStorageFileStream isostream = isoStoreFile.CreateFile(fileName))
        {
            WriteableBitmap wb = new WriteableBitmap(frameWidth, frameWidth);
            Array.Copy(buf, wb.Pixels, buf.Length);
            wb.SaveJpeg(isostream, 120, 120, 0, 60);
            isostream.Close();
        }
    }
}

如何在录制时获得视频的大小?我不知道是否可以在录制任何ide时获得视频的大小如何更改分辨率?你看到了吗:我正在使用音频视频捕获设备。有没有办法从中获取缩略图
void captureSource_CaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
{
 using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
  {
    System.Windows.Media.Imaging.WriteableBitmap wb = e.Result;

     string fileName = "CameraMovie.jpg";
     if (isoStore.FileExists(fileName))
         isoStore.DeleteFile(fileName); 

     IsolatedStorageFileStream file = isoStore.CreateFile(fileName);

     System.Windows.Media.Imaging.Extensions.SaveJpeg(wb, file, wb.PixelWidth, wb.PixelHeight, 0, 85);

     file.Close();
 }
}
<Rectangle 
    x:Name="viewfinderRectangle"
    [...]
    Tap="viewfinderRectangle_Tap" />
private void viewfinderRectangle_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
 captureSource.CaptureImageAsync();
}
private AudioVideoCaptureDevice VideoRecordingDevice;
VideoRecordingDevice.PreviewFrameAvailable += previewThumbnail;
bool DisablePreviewFrame = false;

private void previewThumbnail(ICameraCaptureDevice a, object b)
{
    if (!DisablePreviewFrame)
    {
        DisablePreviewFrame = true;
        int frameWidth = (int)VideoRecordingDevice.PreviewResolution.Width;
        int frameHeight = (int)VideoRecordingDevice.PreviewResolution.Height;
    }
    int[] buf = new int[frameWidth * frameHeight];
    VideoRecordingDevice.GetPreviewBufferArgb(buf);
    using (IsolatedStorageFile isoStoreFile = IsolatedStorageFile.GetUserStoreForApplication())
    {
        var fileName = "temp.jpg";

        if (isoStoreFile.FileExists(fileName))
            isoStoreFile.DeleteFile(fileName);
        using (IsolatedStorageFileStream isostream = isoStoreFile.CreateFile(fileName))
        {
            WriteableBitmap wb = new WriteableBitmap(frameWidth, frameWidth);
            Array.Copy(buf, wb.Pixels, buf.Length);
            wb.SaveJpeg(isostream, 120, 120, 0, 60);
            isostream.Close();
        }
    }
}