开源小工具—MyVLCMediaPlayer
请阅读文章
·
开发背景
工作中遇到媒体播放模块,就研究了下,Vlc播放器。昂,这个小玩意就诞生了
简短介绍下,不做过多赘述,相信会阅这篇文章的人,对于基础性的都掌握了 😃 若是没掌握,随你咯
开发流程
框架选型
- 因是WPF程序,这里选用
DotNet Core3.1
- 为什么没有选用
DotNet5
个中缘由懂的都懂哈
Nugget 包
- 这里我们使用 Vlc 官方包
- 首先是 Windows 平台的目标包
VideoLAN.LibVLC.Windows
- Vlv 的 C# 核心包
LibVLCSharp
- WPF 开发包
LibVLCSharp.WPF
- Vlc官方开源地址
开发包的用法说明都在Vlc的官方开源地址中
效果
VS诊断工具资源使用分析
1.8GB的视频文件进行播放内存使用率稳定在400MB到450MB之间;
11.0GB的视频文件进行播放内存使用率稳定在1.3GB到1.4GB之间。
CPU资源使用率几乎可以忽略。
代码实例
播放器内核初始化
/// <summary>
/// 播放器内核初始化
/// </summary>
private void Init()
{
Dispatcher.Invoke(() =>
{
Core.Initialize();
VLCMediaPlayer.MediaPlayer = new MediaPlayer(VLCMedia);
VLCMediaPlayer.MediaPlayer.Stop();
});
}
导入播放列表
/// <summary>
/// 播放列表
/// </summary>
private string[] PlayList { get; set; }
/// <summary>
/// 播放序列
/// </summary>
private int PlayerIndex { get; set; } = 0;
/// <summary>
/// 导入播放列表
/// </summary>
/// <param name="list"></param>
private void ImportPlayerList(string[] filelist, string[] nameList)
{
PlayList = filelist;
TitleList = nameList;
PlayerIndex = 0;
VLCMediaPlayer.MediaPlayer.Play(new Media(_libvlc, PlayList[PlayerIndex], FromType.FromPath));
LabelTitle.Content = string.Format("{0} - VLCMediaPlayer", TitleList[PlayerIndex]);
VLCMediaPlayer.MediaPlayer.EndReached += MediaPlayer_EndReached;
}
是否循环播放
/// <summary>
/// 播放列表
/// </summary>
private string[] PlayList { get; set; }
/// <summary>
/// 播放序列
/// </summary>
private int PlayerIndex { get; set; } = 0;
/// <summary>
/// 是否循环播放
/// </summary>
private bool IsLoop { get; set; } = false;
/// <summary>
/// 是否循环播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MediaPlayer_EndReached(object sender, EventArgs e)
{
Dispatcher.BeginInvoke(new Action(() =>
{
// 单文件定义是否循环播放
if (PlayList.Length is 1 && IsLoop is true)
{
PlayerIndex = ++PlayerIndex % PlayList.Length;
VLCMediaPlayer.MediaPlayer.Play(new Media(_libvlc, PlayList[PlayerIndex], FromType.FromPath));
LabelTitle.Content = string.Format("{0} - VLCMediaPlayer", TitleList[PlayerIndex]);
return;
}
#region 多文件播放模式
if (IsLoop)
{
PlayerIndex = ++PlayerIndex % PlayList.Length;
VLCMediaPlayer.MediaPlayer.Play(new Media(_libvlc, PlayList[PlayerIndex], FromType.FromPath));
LabelTitle.Content = string.Format("{0} - VLCMediaPlayer", TitleList[PlayerIndex]);
return;
}
PlayerIndex++;
if (PlayerIndex < PlayList.Length)
{
VLCMediaPlayer.MediaPlayer.Play(new Media(_libvlc, PlayList[PlayerIndex], FromType.FromPath));
LabelTitle.Content = string.Format("{0} - VLCMediaPlayer", TitleList[PlayerIndex]);
}
#endregion
}));
}
快捷键
- 方向键 ⬆ 加声音
- 方向键 ⬇ 减声音
- 方向键 ➡ 快进
- 方向键 ⬅ 快退
- 全屏 鼠标右键双击 或 焦点锁定 按 Enter 键
- 退出全屏 鼠标右键双击 或 焦点锁定 按 Enter 键 或 焦点锁定 按 Esc 键
发布包下载地址
- 以作独立运行处理
https://download.csdn.net/download/qq_43562262/27244421
源码包就不发了,需要的可以私信哦 😃😃😃
更多推荐
已为社区贡献2条内容
所有评论(0)