Silverligh简单视频播放器,废话就不多说了。额就直接开始了。

    第一步:新建silverlight项目,命名为lianxi

    第二步:在MainPage.xaml中添加视图界面的代码

1 <Grid x:Name="LayoutRoot" Background="White" BindingValidationError="LayoutRoot_BindingValidationError">
2         <MediaElement Height="367" Source="1.mp4" AutoPlay="False"  HorizontalAlignment="Left" Margin="12,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="450" MediaOpened="mediaElement1_MediaOpened_1" />
3         <Button Content="播放" Height="23" HorizontalAlignment="Left" Margin="479,147,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
4         <Button Content="停止" Height="23" HorizontalAlignment="Left" Margin="479,284,0,0" Name="button3" VerticalAlignment="Top" Width="75" Click="button3_Click" />
5         <Slider Height="23" HorizontalAlignment="Left" Margin="14,402,0,0" Name="slider1" VerticalAlignment="Top" Width="448" Minimum="0" ValueChanged="slider1_ValueChanged" />
6         <ProgressBar Height="26" HorizontalAlignment="Left" Margin="12,447,0,0" Name="progressBar1" VerticalAlignment="Top" Width="450" Minimum="0" />
7         <Button Content="快进&gt;&gt;" Height="23" HorizontalAlignment="Left" Margin="479,189,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" />
8         <Button Content="快退&lt;&lt;" Height="23" HorizontalAlignment="Left" Margin="479,239,0,0" Name="button4" VerticalAlignment="Top" Width="75" Click="button4_Click" />
9     </Grid>

    在代码中,由于在加载完页面后不需要自动播放视频,所以需要加上属性“AutoPlay='False'”

    第三步:在MediaElement的Opened事件中添加代码,使Slider获得视频长度。

slider1.Maximum = mediaElement1.NaturalDuration.TimeSpan.TotalMilliseconds;

    第四步:添加播放/暂停事件代码

            if (button1.Content.ToString() == "播放")
            {
                mediaElement1.Play();
                button1.Content = "暂停";
                DispatcherTimer dtimer = new DispatcherTimer();
                dtimer.Interval = TimeSpan.FromMilliseconds(500);
                dtimer.Tick += new EventHandler(dtimer_Tick);
                dtimer.Start();
                button1.Content.ToString();
            }
            else if (button1.Content.ToString() == "暂停") {
                mediaElement1.Pause();
                button1.Content = "播放";
            }

      由于播放时需要改变slider的值,所以还需要根据定时器添加Tick事件。

if (this.mediaElement1.CurrentState == MediaElementState.Playing) {
                //去除事件,slider拖动时会触发下面的事件,所以此时需要去除
                slider1.ValueChanged -= new RoutedPropertyChangedEventHandler<double>(slider1_ValueChanged);
                slider1.Value = mediaElement1.Position.TotalMilliseconds;
                progressBar1.Value = mediaElement1.Position.TotalMilliseconds;
                //重新注册事件,因为拖动触发的事件已经完成了,所以要重新注册一下事件。
                slider1.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(slider1_ValueChanged);
            }

    拖动slider的代码就简单多了:

 mediaElement1.Position = TimeSpan.FromMilliseconds(Convert.ToDouble(slider1.Value));

    第五步:快进与快退,

    这两步就比较简单了,我这里就不判断播放的时间了,直接贴代码了。

   

//快进代码 
mediaElement1.Position = mediaElement1.Position +TimeSpan.FromSeconds(10);
//快退代码           
mediaElement1.Position
= mediaElement1.Position -TimeSpan.FromSeconds(10);

    第六步:基啥东西了,就剩一停止了。然后就可以运行程序了。

   mediaElement1.Stop();

  运行效果如下图:

     

OK了。!!!Silverlight万岁!

posted on 2012-08-25 00:00  honsty  阅读(161)  评论(0)    收藏  举报