標籤:style class blog code java http
Windows Phone 8.1 多媒體(1):相片
Windows Phone 8.1 多媒體(2):視頻
Windows Phone 8.1 多媒體(3):音樂
(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;}