-1
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);
4

2 回答 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 回答