无法在 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)
我正在用 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)