0
点赞
收藏
分享

微信扫一扫

开源小工具—MyVLCMediaPlayer


开源小工具—MyVLCMediaPlayer

  • ​​开发背景​​
  • ​​开发流程​​
  • ​​框架选型​​
  • ​​Nugget 包​​
  • ​​效果​​
  • ​​代码实例​​
  • ​​播放器内核初始化​​
  • ​​导入播放列表​​
  • ​​是否循环播放​​
  • ​​快捷键​​
  • ​​发布包下载地址​​

开发背景

  工作中遇到媒体播放模块,就研究了下,Vlc播放器。昂,这个小玩意就诞生了

简短介绍下,不做过多赘述,相信会阅这篇文章的人,对于基础性的都掌握了 😃 若是没掌握,随你咯

开发流程

框架选型

  • 因是WPF程序,这里选用 ​​DotNet Core3.1​
  • 为什么没有选用 ​​DotNet5​​ 个中缘由懂的都懂哈

Nugget 包

  • 这里我们使用 Vlc 官方包
  • 首先是 Windows 平台的目标包
    ​​​VideoLAN.LibVLC.Windows​
  • Vlv 的 C# 核心包
    ​​​LibVLCSharp​
  • WPF 开发包
    ​​​LibVLCSharp.WPF​
  • ​​Vlc官方开源地址​​

开发包的用法说明都在Vlc的官方开源地址中

效果

开源小工具—MyVLCMediaPlayer_播放列表

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 键

发布包下载地址

  • 以作独立运行处理
    源码包就不发了,需要的可以私信哦 😃😃😃


举报

相关推荐

0 条评论