播放时间显示
- 界面
- 代码
- 相关属性介绍
- 实现
- 实现效果
- 视频教程
界面
增加一个TextBlock用于时间显示
<TextBlockName="TimeText"Grid.Row="1"Margin="131,0,0,9"HorizontalAlignment="Left"VerticalAlignment="Bottom"Text="TextBlock"TextWrapping="Wrap" />
代码
给MediaPlayer
增加一个时间变化事件TimeChanged
public partial class MainWindow : Window
{private LibVLC _libVLC;private MediaPlayer _player;public MainWindow(){InitializeComponent();Core.Initialize();_libVLC = new LibVLC();_player = new MediaPlayer(_libVLC);//时间变化事件_player.TimeChanged += Player_TimeChanged;videoView.MediaPlayer = _player;}}private void Player_TimeChanged(object? sender, MediaPlayerTimeChangedEventArgs e){}
相关属性介绍
Time
属性,获取当前播放时间- 类型:long
- 单位:ms
- 设置Time属性可以修改当前播放进度
Length
属性,当前视频总的时长- 类型:long
- 单位:ms
- 只读
实现
通过TimeSpan.FromMilliseconds
对time和length属性进行转换,然后转成对应的string格式
需要注意的是这个事件是线程中调用,修改控件需要跨线程调用,需要this.Dispatcher.Invoke
来处理
private void Player_TimeChanged(object? sender, MediaPlayerTimeChangedEventArgs e){Dispatcher.Invoke(new Action(() =>{TimeText.Text =TimeSpan.FromMilliseconds(_player.Time).ToString(@"hh\:mm\:ss")+ "/"+ TimeSpan.FromMilliseconds(_player.Length).ToString(@"hh\:mm\:ss");//总长}));}
实现效果
视频教程
WPF+LibVLC开发播放器-时间进度显示