zoukankan      html  css  js  c++  java
  • Windows Phone 8.1 多媒体(2):视频

    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;
    }
  • 相关阅读:
    Apache Spark探秘:利用Intellij IDEA构建开发环境
    Scala 安装
    Mac OS Git 安装
    Druid:一个用于大数据实时处理的开源分布式系统
    批量kill Linux环境下的任务
    Xshell如何设置,当连接断开时保留Session,保留原文字
    Superset
    mac连接Windows远程桌面
    IOS应用开发版本控制工具之Versions使用
    “不擅长编码?”-可视化编程插件来解决
  • 原文地址:https://www.cnblogs.com/xiaoshi3003/p/3784167.html
Copyright © 2011-2022 走看看