我正在尝试在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中有一些无效数据。虽然我将它绑定到图像控件上,但它显示了一些恼人的图像。 有人请帮帮我。
答案 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);