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;
    }
  • 相关阅读:
    四个好看的CSS样式表格
    POJ 2255 Tree Recovery
    黑马程序猿_2014 7月 我使用多线程体验
    Dos命令将合并两个文本文件的内容
    栈和堆之间的差(他转身无数的文章)
    【Espruino】NO.12 加速度计演示
    MySQL进口.sql文件和常用命令
    typedef和define具体的具体差异
    muduo网络图书馆评测
    Web采矿技术
  • 原文地址:https://www.cnblogs.com/xiaoshi3003/p/3784167.html
Copyright © 2011-2022 走看看