CameraCaptureUI capture = new CameraCaptureUI();
capture.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
capture.PhotoSettings.CroppedAspectRatio = new Size(1, 2);
capture.PhotoSettings.MaxResolution=CameraCaptureUIMaxPhotoResolution.HighestAvailable
StorageFile storeFile=await capture.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (storeFile != null)
{
var stream = await storeFile.OpenAsync(FileAccessMode.Read);
BitmapImage bimage = new BitmapImage();
bimage.SetSource(stream);
Image imageitem = new Image();
imageitem.Source = bimage;
my_canvas.Children.Add(imageitem);
问问题
358 次
2 回答
0
您还可以使用 MediaCapture 录制视频,这是我从事的项目的摘录(其中一些是我刚刚从记忆中写的,如果需要,我会在回家时更正):
public class CameraController
{
private MediaCapture _mediaCap;
private bool _isInitialised;
public async Task InitialiseWebCam()
{
if (!_isInitialised)
{
var settings = ApplicationData.Current.LocalSettings;
string preferredDeviceName = $"{settings.Values["PreferredDeviceName"]}";
var videoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
DeviceInformation device = videoDevices.FirstOrDefault(x => x.Name == preferredDeviceName);
if (device == null)
device = videoDevices.FirstOrDefault();
if (device == null)
throw new Exception("Cannot find a camera device");
else
{
//initialize the WebCam via MediaCapture object
_mediaCap = new MediaCapture();
var initSettings = new MediaCaptureInitializationSettings { VideoDeviceId = device.Id };
await _mediaCap.InitializeAsync(initSettings);
_mediaCap.Failed += new MediaCaptureFailedEventHandler(MediaCaptureFailed);
_isInitialised = true;
}
}
}
public async StorageFile RecordVideo(TimeSpan duration)
{
if (!_isInitialised)
await InitialiseWebCam();
StorageFile videoFile = await KnownFolders.VideosLibrary.CreateFileAsync(
$"video_{DateTime.Now.ToString("yyyyMMddHHmmss")}.mp4", CreationCollisionOption.GenerateUniqueName);
var mediaEncoding = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga);
await _mediaCap.StartRecordToStorageFileAsync(mediaEncoding, videoFile);
await Task.Delay(duration);
await _mediaCap.StopRecordAsync();
return videoFile;
}
private void MediaCaptureFailed(MediaCapture sender, MediaCaptureFailedEventArgs errorEventArgs)
{
//TODO: Implement this
}
}
于 2016-06-09T15:19:22.473 回答
0
只需使用标准示例从使用 CameraCaptureUI 捕获照片和视频中录制视频
CameraCaptureUI captureUI = new CameraCaptureUI();
captureUI.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4;
StorageFile videoFile = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Video);
if (videoFile == null)
{
// User cancelled photo capture
return;
}
于 2016-06-09T06:56:24.600 回答