0

我正在尝试在 Windows phone 8 中创建一个带有“缩略图”图像的视频捕获应用程序商店视频文件。我从以下链接中得到了一些提示: 如何获取录制视频的缩略图 - 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 中有一些无效数据。当我将它绑定到图像控件时,它显示了一些烦人的图像。任何人请帮助我。

4

1 回答 1

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);
于 2013-10-22T03:54:32.170 回答