1. 程式人生 > 其它 >WPF 使用 VideoDrawing 播放視訊

WPF 使用 VideoDrawing 播放視訊

本文告訴大家如何在 WPF 使用 VideoDrawing 進行視訊播放

本文告訴大家如何在 WPF 使用 VideoDrawing 進行視訊播放

用這個方法有什麼優勢?其實只是想作為某個控制元件的背景,某個控制元件的背景使用視訊而已

控制元件的背景使用 DrawingBrush 傳入,在 DrawingBrush 傳入 VideoDrawing 即可。建立 VideoDrawing 需要一個 MediaPlayer 和給定視訊的寬度和高度

如以下程式碼,實現拖入一個視訊檔案,就作為背景進行播放。在 XAML 的程式碼如下

    <Grid Background="Transparent" AllowDrop="True" Drop="Grid_OnDrop">

    </Grid>

給 Grid 加上 Background 只是為了讓 Grid 能收到拖入檔案的事件而已,在 Grid_OnDrop 方法裡面,加上拖入檔案播放的邏輯

        private MediaPlayer? MediaPlayer { set; get; }

        private void Grid_OnDrop(object sender, DragEventArgs e)
        {
            MediaPlayer?.Close();

            var fileList = (string[]?) e.Data.GetData(DataFormats.FileDrop);

            if (fileList is not null && fileList.Length > 0)
            {
                var mediaPlayer = MediaPlayer = new MediaPlayer();
                mediaPlayer.Open(new Uri(fileList[0]));

                var videoDrawing = new VideoDrawing()
                {
                    Player = mediaPlayer,
                    Rect = new Rect(new Size(Width, Height))
                };
                var drawingBrush = new DrawingBrush(videoDrawing);
                Background = drawingBrush;
                mediaPlayer.Play();
            }
        }

以上就是所有的程式碼

有哪些視訊能播放?系統解碼器能解的大部分的視訊

可以使用上面的程式碼用來測試在 WPF 應用播放視訊的效能哦,記得切換到 Release 釋出版本,且不要在 VisualStudio 進行除錯

本文所有程式碼放在githubgitee 歡迎訪問

可以通過如下方式獲取本文的原始碼,先建立一個空資料夾,接著使用命令列 cd 命令進入此空資料夾,在命令列裡面輸入以下程式碼,即可獲取到本文的程式碼

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin b3ff420fdce51e05d2c097a20145380766512fdb

以上使用的是 gitee 的源,如果 gitee 不能訪問,請替換為 github 的源

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git

獲取程式碼之後,進入 ChairjuchiwhiRinehawwheago 資料夾

部落格園部落格只做備份,部落格釋出就不再更新,如果想看最新部落格,請到 https://blog.lindexi.com/


本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含連結:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我[聯絡](mailto:[email protected])。