uwp简单的播放器

要求:

建立一个简单的媒体播放器,

允许用户选择文件——只能选择MP3或mp4文件

播放文件

第一部分

在基本功能部分主要参考了

https://msdn.microsoft.com/zh-cn/library/windows/apps/mt187272.aspx

,在这里面比较复杂的是关于添加文件的部分,代码如下:

private async void openFile_click(object sender, RoutedEventArgs e)
        {
            await SetLocalMedia();
        }

        async private System.Threading.Tasks.Task SetLocalMedia()
        {
            var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

            openPicker.FileTypeFilter.Add(".wmv");
            openPicker.FileTypeFilter.Add(".mp4");
            openPicker.FileTypeFilter.Add(".wma");
            openPicker.FileTypeFilter.Add(".mp3");

            var file = await openPicker.PickSingleFileAsync();

            // mediaPlayer is a MediaElement defined in XAML
            if (file != null)
            {
                var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
                mediaplayer.SetSource(stream, file.ContentType);

                mediaplayer.Play();
            }
        }

  

这部分需要回去再看一下文件添加里的具体的东西,不然可能讲不清楚

然后一个基本符合要求的音乐视频播放器大概是这个样子——能够打开文件,播放mp3,

Mp4,有暂停/播放按钮

 

第二部分

 

面要做的是——拖动时间进度条,全屏、空格键暂停,左右方向键进退十秒,音量控制。

全屏:

在全屏中遇到了一点小小的问题,就是全屏后全屏按钮消失了,无法退出全屏

用slider绑定时间进度条

https://www.cnblogs.com/wpali/p/5657389.html

在这里我们通过sliderchange事件使mediaelement.potion=slider.value使视频跳到我们点到的value值,这时候我们就需要视频的长度和slider.Maximum保持相同。

用mediaopened事件先获取视频文件的长度(秒)赋值给slider的最大值以保持进度条的值和视频的总长度一致。

private void gettime(object sender, RoutedEventArgs e)
        {
            sliderposition.Maximum = mediaplayer.NaturalDuration.TimeSpan.TotalSeconds;

        }

用slider中的valuechange使在拖动进度条时视频进度随之变化

private void sliderposition_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
        {
            mediaplayer.Position = TimeSpan.FromSeconds(sliderposition.Value);
        }

到这里,进度条的功能还不完善,进度并不会随着视频的进度移动,也没有时间显示。

 

用slider绑定音量

这个和上面的音量基本相同,但是在写的时候还是遇到了一点小问题。Mediaelement的音量valume值大小为0到1,但是slider的值value(不管Minimum和Maximum、smallchange和largechange怎么设),value只能是整数。

private void slidervolume_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
        {
            mediaplayer.Volume = slidervolume.Value/10;
        }



<Slider x:Name="slidervolume" Margin="1016,880,0,0" VerticalAlignment="Top" Orientation="Vertical" Minimum="0" Maximum="10" Header="音量" ValueChanged="slidervolume_ValueChanged" Height="76"  Value="{Binding Element Name=mediaplayer,Path=Volume}"/>

  

 

 第三部分

 

做完以上,突然找到了一个至强的AreTransportControlsEnabled,它能实现的功能包括:调节音量,完整的进度条功能,全屏,暂停/播放,把我做过的还没做的全做了。

 但是还是把我写过的一点小东西挂上了。

下面简单的对上面的控件进行了排布,并把视频播放窗口设置为随着窗口大小变化,把我自己写的暂停/播放合二为一。

代码:https://github.com/eggchai/SimplePalyer

转载于:https://www.cnblogs.com/eggchai/p/8698668.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值