vlcPlayer是一款免费开源的播放器项目,可以播放几乎所有的视频格式。
第一步:获取dll
安装vlcplayer视频播放器,在安装目录下面获取所需的dll。
dll文件夹:plugins
还有2个dll:libvlc.dll,libvlccore.dll
第二步:获取播放器对象基类VlcPlayerBase
using System; using System.Runtime.InteropServices; using System.Security; using System.Text; namespace VlcPlayer { public class VlcPlayerBase { private IntPtr libvlc_instance_; private IntPtr libvlc_media_player_; /// <summary> /// 视频时长 /// </summary> private double duration_; /// <summary> /// VLC 播放器。 /// </summary> /// <param name="pluginPath"></param> public VlcPlayerBase(string pluginPath) { //string pluginPath = Environment.CurrentDirectory + "\\vlc\\plugins\\"; //插件目录 string plugin_arg = "--plugin-path=" + pluginPath; string[] arguments = { "-I", "dummy", "--ignore-config", "--no-video-title", plugin_arg }; libvlc_instance_ = LibVlcAPI.libvlc_new(arguments); libvlc_media_player_ = LibVlcAPI.libvlc_media_player_new(libvlc_instance_); //创建 libvlc_media_player 播放核心 } /// <summary> /// 设置播放容器 /// </summary> /// <param name="wndHandle">播放容器句柄</param> public void SetRenderWindow(int wndHandle) { if (libvlc_instance_ != IntPtr.Zero && wndHandle != 0) { LibVlcAPI.libvlc_media_player_set_hwnd(libvlc_media_player_, wndHandle); //设置播放容器 } } /// <summary> /// 播放指定媒体文件 /// </summary> /// <param name="filePath"></param> public void LoadFile(string filePath) { IntPtr libvlc_media = LibVlcAPI.libvlc_media_new_path(libvlc_instance_, filePath); //创建 libvlc_media_player 播放核心 if (libvlc_media != IntPtr.Zero) { LibVlcAPI.libvlc_media_parse(libvlc_media); duration_ = LibVlcAPI.libvlc_media_get_duration(libvlc_media) / 1000.0; //获取视频时长 LibVlcAPI.libvlc_media_player_set_media(libvlc_media_player_, libvlc_media); //将视频绑定到播放器去 LibVlcAPI.libvlc_media_release(libvlc_media); //LibVlcAPI.libvlc_media_player_play(libvlc_media_player_); //播放 } } /// <summary> /// 播放 /// </summary> public void Play() { if (libvlc_media_player_ != IntPtr.Zero) { LibVlcAPI.libvlc_media_player_play(libvlc_media_player_); } } /// <summary> /// 暂停播放 /// </summary> public void Pause() { if (libvlc_media_player_ != IntPtr.Zero) { LibVlcAPI.libvlc_media_player_pause(libvlc_media_player_); } } /// <summary> /// 停止播放 /// </summary> public void Stop() { if (libvlc_media_player_ != IntPtr.Zero) { LibVlcAPI.libvlc_media_player_stop(libvlc_media_player_); } } public void Release() { if (libvlc_media_player_ != IntPtr.Zero) { LibVlcAPI.libvlc_media_release(libvlc_media_player_); } } /// <summary> /// 获取播放时间进度 /// </summary> /// <returns></returns> public double GetPlayTime() { return LibVlcAPI.libvlc_media_player_get_time(libvlc_media_player_) / 1000.0; } /// <summary> /// 设置播放时间 ///<