无法在 C# UWP 应用程序中打开由 MediaCapture 制作的 mp4

Cannot open mp4's made from MediaCapture in C# UWP app

我正在用 C# 编写一个 UWP 应用程序,它使用相机拍摄视频。

我的测试应用很简单:开始录制,等待五秒钟,然后停止录制。它会将录音保存为 mp4。

但是,在我 运行 这个应用程序之后,我无法使用 Windows 10 应用程序电影和电视播放 mp4。当我双击该文件时,什么也不会发生。我什至无法打开电影和电视;当我从“开始”菜单中双击它时,也没有任何反应。

但是,我能够 "Open with..." 使用 Windows 媒体播放器,一个非 Windows 商店应用程序播放 mp4。阅读 this 问题后,如果您没有正确清理代码中的 MediaCapture 对象,其他应用程序可能会挂起;我的理论是我没有正确清理 MediaCapture; Windows 商店应用电影和电视因此受到影响,但非 Windows 商店应用 Windows 媒体播放器仍然可以播放视频。

以下是代码的重要部分:

网络摄像头class:

    public async void InitVideo()
    {
        mediaCapture = new MediaCapture();
        await mediaCapture.InitializeAsync();
    }

    public async void RecordVideo(string fileName)
    {
        recordStorageFile = await Windows.Storage.KnownFolders.VideosLibrary.CreateFileAsync(fileName, Windows.Storage.CreationCollisionOption.GenerateUniqueName);

        MediaEncodingProfile recordProfile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Auto);

        await mediaCapture.StartRecordToStorageFileAsync(recordProfile, recordStorageFile);

        recording = true;
    }

    public async Task StopVideo()
    {
        await mediaCapture.StopRecordAsync();

        recording = false;
    }

    public void Reset()
    {
        mediaCapture.Dispose();
        mediaCapture = null;
    }

在 MainPage.xaml 中,屏幕上有一个名为开始录制的按钮。这是单击该按钮时发生的情况:

        WebCam camera = new WebCam();

        camera.InitVideo();
        camera.RecordVideo("file.mp4");

        await Task.Delay(TimeSpan.FromSeconds(5));

        await camera.StopVideo();

        camera.Reset();

我的理论是正确的还是另有原因?

从基本的视频捕获角度来看,您已在此处正确完成所有操作。如果您发现视频在 Windows Media Player 但在 Windows Film/TV 应用程序中打开正常,则可能是这些应用程序的问题。

我附上了我在自己的相机应用程序中使用的助手 class,您可以在这里获取一些信息:CameraCapture.cs - WindowsAppCodeSnippets (GitHub)