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="快进>>" Height="23" HorizontalAlignment="Left" Margin="479,189,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" /> 8 <Button Content="快退<<" 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万岁!
浙公网安备 33010602011771号