在Windows Phone 8中录制带有“缩略图”图像的视频文件

时间:2013-08-02 09:54:05

标签: windows-phone-8

我正在尝试在Windows Phone 8中创建一个带有“缩略图”图像的视频捕获应用程序商店视频文件。我从以下链接获得了一些提示: How to get the thumbnail of a recorded video - windows phone 8?。 但结果很烦人。我认为这个功能存在一些问题。

 void captureSource_CaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
        {
            using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
            {
                WriteableBitmap wb = e.Result;
                string fileName = "CameraMovie.jpg";
                if (isoStore.FileExists(fileName))
                    isoStore.DeleteFile(fileName);
                IsolatedStorageFileStream file = isoStore.CreateFile(fileName);
                Extensions.SaveJpeg(wb, file, wb.PixelWidth, wb.PixelHeight, 0, 85);
                file.Close();

                captureSource.Stop();
                fileSink.CaptureSource = null;
                fileSink.IsolatedStorageFileName = null;
            }
        }

e.Result中有一些无效数据。虽然我将它绑定到图像控件上,但它显示了一些恼人的图像。 有人请帮帮我。

1 个答案:

答案 0 :(得分:0)

[编辑]添加一些解释。

在录制视频时,可以随时获取正在录制的视频的快照。获取预览缓冲区为Argb像素并将其应用于可写位图。

当您必须显示视频时,请在屏幕截图图像上添加一个叠加层,其中另一个图像上面有一个光滑的播放按钮。

var videoWritableBitmap = new WriteableBitmap((int)[AudioVideoDevice].PreviewResolution.Width, (int)[AudioVideoDevice].PreviewResolution.Height);

var argbPixels = new int[(int)[AudioVideoDevice].PreviewResolution.Width * (int)[AudioVideoDevice].PreviewResolution.Height];

[AudioVideoDevice].GetPreviewBufferArgb(argbPixels);

argbPixels.CopyTo(videoWritableBitmap.Pixels, 0);

var videoThumbNailFile = await[localFolder].OpenStreamForWriteAsync([ThumbNailImageName], CreationCollisionOption.ReplaceExisting);

videoWritableBitmap.SaveJpeg(videoThumbNailFile, videoWritableBitmap.PixelWidth, videoWritableBitmap.PixelHeight, 0, 100);