C# 我使用以下代码从相机中捕获图像。但是我不能用这个来录制视频

C# 我使用以下代码从相机中捕获图像。但是我不能用这个来录制视频,c#,uwp,cameracapturetask,C#,Uwp,Cameracapturetask,只需使用标准样本从中录制视频 您还可以使用MediaCapture录制视频,这是我参与的一个项目的摘录(其中一些是我刚刚从内存中写的,如果需要,我回家后会更正): 你应该更详细地描述一下你的问题。代码中的注释也有助于更好更快地理解代码。(这部分代码应该做什么,为什么会在那里)否则人们会对你的问题投反对票,甚至会把它作为离题题来结束 CameraCaptureUI capture = new CameraCaptureUI(); capture.PhotoSettings.Format = Ca

只需使用标准样本从中录制视频


您还可以使用MediaCapture录制视频,这是我参与的一个项目的摘录(其中一些是我刚刚从内存中写的,如果需要,我回家后会更正):


你应该更详细地描述一下你的问题。代码中的注释也有助于更好更快地理解代码。(这部分代码应该做什么,为什么会在那里)否则人们会对你的问题投反对票,甚至会把它作为离题题来结束
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);
CameraCaptureUI captureUI = new CameraCaptureUI();
captureUI.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4;

StorageFile videoFile = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Video);

if (videoFile == null)
{
// User cancelled photo capture
return;
}
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
    }
}