测试C#调用Aplayer播放视频(3:编写简易播放器)

编程入门 行业动态 更新时间:2024-10-07 08:29:36

测试C#调用Aplayer播放视频(3:编写简易<a href=https://www.elefans.com/category/jswz/34/1769718.html style=播放器)"/>

测试C#调用Aplayer播放视频(3:编写简易播放器)

  学习了参考文献1中的示例代码,也找出了前一篇文章中自己测试控件但无法播放视频的问题(没有将解码库文件复制到可执行程序所在的codecs文件夹内),本文基于APlayer组件编写简单的视频播放器,主要实现以下功能:

序号功能说明
1自定义logo调用SetCustomLogo函数设置未播放视频时的显示图片,图片来自参考文献2
2打开文件调用Open函数打开并播放视频文件
3定时刷新播放信息参照参考文献1中的demo,使用定时器定时刷新当前播放进度,调用GetDuration获取视频总时长,调用GetPosition获取当前播放时间,同时在OnOpenSucceeded中启动定时器,在OnStateChanged事件中停止定时器
4暂停/播放/停止调用Pause/Play/Close函数暂停/播放/停止视频
5设置音量调用SetVolume设置音量,尽在0-100范围内调节音量,并未使用APlayer的10倍放大
6拖拽时间条调用SetPosition函数在Trackbar的Scroll事件中重新设置播放时间
7快进/快退调用SetPosition函数快进/快退10秒

  最后是程序界面、播放视频截图及主要代码:

public Form1()
{this.axPlayer1.SetCustomLogo(((Bitmap)Bitmap.FromFile("gundam.jpg")).GetHbitmap().ToInt32());axPlayer1.OnOpenSucceeded += new EventHandler(OnOpenSucceeded);axPlayer1.OnStateChanged += new _IPlayerEvents_OnStateChangedEventHandler(OnStateChanged);
}string TimeToString(TimeSpan span)
{return span.Hours.ToString("00") + ":" +span.Minutes.ToString("00") + ":" +span.Seconds.ToString("00");
}void OnOpenSucceeded(object sender, EventArgs e)
{lblProgress.Text= "00:00:00/"+TimeToString(TimeSpan.FromMilliseconds(axPlayer1.GetDuration()));            tbTimeline.Maximum = axPlayer1.GetDuration();timer1.Start();
}private void UpdatePlayInfo(object sender, EventArgs e)
{lblProgress.Text = TimeToString(TimeSpan.FromMilliseconds(axPlayer1.GetPosition()))+"/" + TimeToString(TimeSpan.FromMilliseconds(axPlayer1.GetDuration()));tbTimeline.Value = axPlayer1.GetPosition() < 0 ? 0 : axPlayer1.GetPosition();
}private void tbVolumn_ValueChanged(object sender, EventArgs e)
{axPlayer1.SetVolume(tbVolumn.Value);
}private void btnForward_Click(object sender, EventArgs e)
{axPlayer1.SetPosition(axPlayer1.GetPosition() + 10000);
}private void btnBack_Click(object sender, EventArgs e)
{int timeLine = axPlayer1.GetPosition() - 10000;axPlayer1.SetPosition(timeLine < 0 ? 0 : timeLine);
}private void btnClose_Click(object sender, EventArgs e)
{axPlayer1.Close();
}private void btnPlay_Click(object sender, EventArgs e)
{axPlayer1.Play();
}private void btnPause_Click(object sender, EventArgs e)
{axPlayer1.Pause();
}void OnStateChanged(object sender, _IPlayerEvents_OnStateChangedEvent e)
{switch (e.nNewState){case 0:tbTimeline.Value = 0;lblProgress.Text = "00:00:00/00:00:00" ;   timer1.Stop();break;                }
}private void btnOpen_Click(object sender, EventArgs e)
{using (OpenFileDialog ofd = new OpenFileDialog()){ofd.Filter = "mp4|*.mp4|avi|*.avi|rm|*.rm|rmvb|*.rmvb|flv|*.flv|xr|*.xr|所有文件|*.*";ofd.Multiselect = false;if (ofd.ShowDialog() == DialogResult.OK){axPlayer1.Open(ofd.FileName);}}
}private void tbTimeline_Scroll(object sender, EventArgs e)
{axPlayer1.SetPosition(tbTimeline.Value);lblProgress.Text = TimeToString(TimeSpan.FromMilliseconds(axPlayer1.GetPosition())) + "/" + TimeToString(TimeSpan.FromMilliseconds(axPlayer1.GetDuration()));
}

参考文献:
[1]
[2]

更多推荐

测试C#调用Aplayer播放视频(3:编写简易播放器)

本文发布于:2024-02-28 09:11:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769136.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:播放器   简易   测试   视频   Aplayer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!