WPF MediaElement 截取一段播放
我在使用WPF中的MediaElement进行视频或音频的播放,现在我有两个变量,分别是start和end,单位是毫秒,代表我要播放的视频或音频的区段,现在如何让medi...
我在使用WPF中的MediaElement进行视频或音频的播放,
现在我有两个变量,分别是start和end,单位是毫秒,代表我要播放的视频或音频的区段,现在如何让mediaelement来播放这个由start和end代表的区段呢? 展开
现在我有两个变量,分别是start和end,单位是毫秒,代表我要播放的视频或音频的区段,现在如何让mediaelement来播放这个由start和end代表的区段呢? 展开
展开全部
自己写个Timer来计时吧
private DispatcherTimer _playTimer = null;
private double _startTime = 2000;
private double _endTime = 8000;
public MainWindow()
{
InitializeComponent();
_playTimer = new DispatcherTimer();
// 这里的检测时间是1毫秒,
// 如果要求不是那么严格,
// 考虑节约资源,可以设置为100毫秒
_playTimer.Interval = TimeSpan.FromMilliseconds(1);
_playTimer.Tick += new EventHandler(PlayTimerOnTick);
}
private void PlayTimerOnTick(object sender, EventArgs e)
{
if (me_Video.Position.TotalMilliseconds >= _endTime)
{
me_Video.Stop();
_playTimer.Stop();
}
}
然后当需要播放的时候
me_Video.Position = TimeSpan.FromMilliseconds(_startTime);
me_Video.Play();
_playTimer.Start();
private DispatcherTimer _playTimer = null;
private double _startTime = 2000;
private double _endTime = 8000;
public MainWindow()
{
InitializeComponent();
_playTimer = new DispatcherTimer();
// 这里的检测时间是1毫秒,
// 如果要求不是那么严格,
// 考虑节约资源,可以设置为100毫秒
_playTimer.Interval = TimeSpan.FromMilliseconds(1);
_playTimer.Tick += new EventHandler(PlayTimerOnTick);
}
private void PlayTimerOnTick(object sender, EventArgs e)
{
if (me_Video.Position.TotalMilliseconds >= _endTime)
{
me_Video.Stop();
_playTimer.Stop();
}
}
然后当需要播放的时候
me_Video.Position = TimeSpan.FromMilliseconds(_startTime);
me_Video.Play();
_playTimer.Start();
追问
我试过你的方法,我播放的视频格式是wmv,会出现很严重的延时和缓冲现象,造成Position定位和播放长度的不准确,有没有方法解决呢?
如果是mp4,上述方法可行
追答
你是远程的文件?我这边用本地的没有问题
或者你在BufferingEnded事件里去设置Position和启动Timer
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询