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;
    }
  • 相关阅读:
    CGO入门和OCR文字识别(非第三方API,有源码,效果好)实战
    Golang中如何正确的使用sarama包操作Kafka?
    音量强度转分贝db
    ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG
    小鱼提问3 static方法中可以访问某个类的私有变量吗(不通过反射的其他非正常手段)?什么情况下可以?
    “-="的陷阱
    c++ 从一个BYTE[] *filePtr 追加二进制文件
    Android解决程序切换后台被干掉,恢复状态问题
    Cookie
    dede后台搜索标签
  • 原文地址:https://www.cnblogs.com/xiaoshi3003/p/3784167.html
Copyright © 2011-2022 走看看