WPF 媒體播放器(MediaElement)執行個體,實現進度和音量控制

來源:互聯網
上載者:User

標籤:

WPF 視頻音頻播放控制項MediaElement實現進度控制,音量控制執行個體

說明:

1.Volume控制音量的大小,double類型,並且實現了屬性依賴,可以用來雙向繫結;在 0 和 1. 之間的線性層表示媒體的數量。預設值為 0.5。

2.Position 擷取或設定當前播放的位置,TimeSpan類型,沒有實現屬性依賴,不能用於雙向繫結。

3.擷取媒體檔案的時間總長度,需要在MediaOpended事件設定

需要注意的是MSDN中有對NaturalDuration的備忘: 在引發 MediaOpened 事件之前,NaturalDuration 是不正確的。

所以 mePlayer.NaturalDuration.TimeSpan.TotalSeconds 不能在建構函式或者其他在MediaOpened事件前的方法中調用。

Xaml代碼

<Grid>    <Grid.RowDefinitions>        <RowDefinition Height="180*"/>        <RowDefinition Height="89*"/>    </Grid.RowDefinitions>    <MediaElement x:Name="mediaElement" LoadedBehavior="Manual"                    Volume="{Binding ElementName=sliderVolume,Path=Value}"                    Source="F:\MyDocument\視頻\COOLUI理念篇.mp4"                    MediaOpened="mediaElement_MediaOpened"                    HorizontalAlignment="Left" Height="175" Margin="7,20,0,0"                    VerticalAlignment="Top" Width="275" Grid.RowSpan="2"/>            <Button x:Name="button" Content="播放" HorizontalAlignment="Left" Margin="10,31,0,0" Grid.Row="1" VerticalAlignment="Top" Width="45" RenderTransformOrigin="0.333,-0.526" Height="35" Click="button_Click"/>    <Label x:Name="label" Content="音量:" HorizontalAlignment="Left" Margin="73,50,0,0" Grid.Row="1" VerticalAlignment="Top" Height="25" Width="46"/>    <Slider x:Name="sliderVolume" Minimum="0" Maximum="1" Value="0.5"            HorizontalAlignment="Left" Margin="119,52,0,0" Grid.Row="1" VerticalAlignment="Top" Width="164" Height="18"/>    <Label x:Name="label1" Content="進度:" HorizontalAlignment="Left" Margin="73,21,0,0" Grid.Row="1" VerticalAlignment="Top" Height="25" Width="46"/>    <Slider x:Name="sliderPosition"             ValueChanged="sliderPosition_ValueChanged"            HorizontalAlignment="Left"             Margin="119,23,0,0" Grid.Row="1"             VerticalAlignment="Top" Width="164" Height="18"/>    <Label x:Name="label2"             Content="{Binding ElementName=sliderPosition,Path=Value}"             HorizontalAlignment="Left" Margin="140,6,0,0"            VerticalAlignment="Top" Height="22" Width="70" Grid.Row="1"/></Grid>

C#後台代碼:

如果需要介面修改Position,使用定時器控制媒體檔案的狀態

//播放按鈕private void button_Click(object sender, RoutedEventArgs e){    if (button.Content.ToString() == "播放")    {        button.Content = "暫停";        mediaElement.Play();    }    else    {        button.Content = "播放";        mediaElement.Pause();    }}DispatcherTimer timer = null;private void mediaElement_MediaOpened(object sender, RoutedEventArgs e){    sliderPosition.Maximum = mediaElement.NaturalDuration.TimeSpan.TotalSeconds;    //媒體檔案開啟成功    timer = new DispatcherTimer();    timer.Interval = TimeSpan.FromSeconds(1);    timer.Tick += new EventHandler(timer_tick);    timer.Start();}private void timer_tick(object sender, EventArgs e){    sliderPosition.Value = mediaElement.Position.TotalSeconds;}//控制視頻的位置private void sliderPosition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){    //mediaElement.Stop();    mediaElement.Position = TimeSpan.FromSeconds(sliderPosition.Value);    //mediaElement.Play();}

 

WPF 媒體播放器(MediaElement)執行個體,實現進度和音量控制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.