C# LibVLCSharp:MediaPlayer.TimeChanged-Event 的更新速度
C# LibVLCSharp: Update speed of MediaPlayer.TimeChanged-Event
有没有办法改变 LibVLCSharp MediaPlayer TimeChanged-Event 的更新速度?
我使用此事件来更新我的视频的剩余播放时间。但这对我的目的来说太慢了。我想每 10 毫秒更新一次剩余时间。这可能吗?
我的代码:
private void InitMediaPlayer()
{
vlc = new LibVLC(true, "");
videoClipMediaPlayer = new MediaPlayer(vlc);
videoClipMediaPlayer.TimeChanged += MediaPlayerTimeChanged;
}
private void MediaPlayerTimeChanged(object sender, MediaPlayerTimeChangedEventArgs e)
{
long RemainingTimeMS = videoClipMediaPlayer.Media.Duration - e.Time;
RemainingPlayTime = new TimeSpan(0, 0, 0, 0, Convert.ToInt32(RemainingTimeMS));
// this is only called every 250 milliseconds
}
不可能提高回调率,因为 libvlc 不允许您这样做。事件在播放线程上同步触发,回调时间过长会使视频卡顿。
相反,您可以拥有自己的计时器并插入视频时间,并在每次 TimeChanged 时重新同步计数器。您需要将视频的时间与当前计算机时间一起保存,并且在每个计时器的回调中,newVideoTime = lastVideoSyncTime + (now - lastSyncTime)
有没有办法改变 LibVLCSharp MediaPlayer TimeChanged-Event 的更新速度?
我使用此事件来更新我的视频的剩余播放时间。但这对我的目的来说太慢了。我想每 10 毫秒更新一次剩余时间。这可能吗?
我的代码:
private void InitMediaPlayer()
{
vlc = new LibVLC(true, "");
videoClipMediaPlayer = new MediaPlayer(vlc);
videoClipMediaPlayer.TimeChanged += MediaPlayerTimeChanged;
}
private void MediaPlayerTimeChanged(object sender, MediaPlayerTimeChangedEventArgs e)
{
long RemainingTimeMS = videoClipMediaPlayer.Media.Duration - e.Time;
RemainingPlayTime = new TimeSpan(0, 0, 0, 0, Convert.ToInt32(RemainingTimeMS));
// this is only called every 250 milliseconds
}
不可能提高回调率,因为 libvlc 不允许您这样做。事件在播放线程上同步触发,回调时间过长会使视频卡顿。
相反,您可以拥有自己的计时器并插入视频时间,并在每次 TimeChanged 时重新同步计数器。您需要将视频的时间与当前计算机时间一起保存,并且在每个计时器的回调中,newVideoTime = lastVideoSyncTime + (now - lastSyncTime)