【发布时间】:2015-12-02 06:51:17
【问题描述】:
我正在用 C# 编写一个使用相机拍摄视频的 UWP 应用。
我的测试应用很简单:开始录制,等待五秒钟,然后停止录制。它会将录音保存为 mp4。
但是,在我运行此应用程序后,我无法使用 Windows 10 应用程序电影和电视播放 mp4。当我双击该文件时,什么都不会发生。我什至无法打开电影和电视;当我从“开始”菜单双击它时,也没有任何反应。
但是,我能够使用 Windows Media Player(一个非 Windows 商店应用程序)“打开方式...”mp4。在阅读this 问题以及如果您没有正确清理代码中的 MediaCapture 对象后,其他应用程序可能会挂起;我的理论是我没有正确清理 MediaCapture; Windows 商店应用 Movies & TV 受到影响,但非 Windows 商店应用 Windows Media Player 仍然可以播放视频。
以下是代码的重要部分:
网络摄像头类:
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 中,屏幕上有一个名为 startRecording 的按钮。这是单击该按钮时发生的情况:
WebCam camera = new WebCam();
camera.InitVideo();
camera.RecordVideo("file.mp4");
await Task.Delay(TimeSpan.FromSeconds(5));
await camera.StopVideo();
camera.Reset();
我的理论是正确的还是别的什么?
【问题讨论】:
标签: c# video uwp windows-media-player