界面
增加一个TextBlock用于时间显示
<TextBlock
Name="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开发播放器-时间进度显示