原文:
Windows Phone 8.1 多媒体(2):视频
Windows Phone 8.1 多媒体(2):视频
(1)拍摄视频
拍摄视频和拍摄相片的方法是基本一致的:
MediaCapture mediaCapture; MediaEncodingProfile videoEncodingProperties; protected override async void OnNavigatedTo(NavigationEventArgs e) { HardwareButtons.CameraHalfPressed += HardwareButtons_CameraHalfPressed; HardwareButtons.CameraReleased += HardwareButtons_CameraReleased; videoCaptrueElement.Source = await Initialize(); await mediaCapture.StartPreviewAsync(); } async void HardwareButtons_CameraHalfPressed(object sender, CameraEventArgs e) { if( mediaCapture != null ) { var video = await KnownFolders.VideosLibrary.CreateFileAsync("video.mp4", CreationCollisionOption.GenerateUniqueName); await mediaCapture.StartRecordToStorageFileAsync(videoEncodingProperties, video); } } async void HardwareButtons_CameraReleased(object sender, CameraEventArgs e) { if( mediaCapture != null ) { await mediaCapture.StopRecordAsync(); } } private async Task<MediaCapture> Initialize() { mediaCapture = new MediaCapture(); await mediaCapture.InitializeAsync(); mediaCapture.VideoDeviceController.PrimaryUse = CaptureUse.Video; videoEncodingProperties = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga); return mediaCapture; } protected override void OnNavigatedFrom(NavigationEventArgs e) { if( mediaCapture != null ) { mediaCapture.Dispose(); mediaCapture = null; } }
(2)编辑视频
视频编辑的 API 在 Windows.Media.Editing 命名空间下,具体可看 MSDN:链接
简单的说就是把某些视频实例化为 MediaClip,然后将这些视频添加到 MediaComposition.Clips 中去,最后将这些视频拼接到一起或添加个 BackgroundAudioTrack 什么的:
MediaClip video = await MediaClip.CreateFromFileAsync(
await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///thanks.mp4"))); MediaComposition videos = new MediaComposition(); videos.Clips.Add(video); BackgroundAudioTrack bgm = await BackgroundAudioTrack.CreateFromFileAsync(
await StorageFile.GetFileFromApplicationUriAsync(new Uri("Above Your Hand.mp3"))); videos.BackgroundAudioTracks.Clear(); videos.BackgroundAudioTracks.Add(bgm); await videos.SaveAsync(await ApplicationData.Current.LocalFolder.CreateFileAsync("video.mp4", CreationCollisionOption.ReplaceExisting));
(3)录制手机屏幕视频
录制手机屏幕视频是 WP8.1 新加的 API,使用方法和拍摄视频差不多,只需将录制对象设为屏幕即可:
var screenCapture = ScreenCapture.GetForCurrentView(); mediaCapture = new MediaCapture(); await mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings { VideoSource = screenCapture.VideoSource, AudioSource = screenCapture.AudioSource, }); var file = await KnownFolders.VideosLibrary.CreateFileAsync("screenrecording.mp4", CreationCollisionOption.ReplaceExisting); await mediaCapture.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto), file);
停止录制:
if( mediaCapture != null ) { await mediaCapture.StopRecordAsync(); mediaCapture.Dispose(); mediaCapture = null; }