/// <summary> /// 获取信息 /// </summary> /// <param name="libvlc_media_player"></param> /// <returns></returns> private bool GetMedia(libvlc_media_player_t libvlc_media_player) { libvlc_media_t media = IntPtr.Zero; try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } media = SafeNativeMethods.libvlc_media_player_get_media(libvlc_media_player); if (media == IntPtr.Zero || media == null) { return(false); } else { return(true); } } catch (Exception) { return(false); } }
/// <summary> /// 暂停或恢复视频 /// </summary> /// <param name="libvlc_media_player">VLC MediaPlayer变量</param> /// <returns></returns> private bool MediaPlayer_Pause(libvlc_media_player_t libvlc_media_player) { try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } if (SafeNativeMethods.libvlc_media_player_can_pause(libvlc_media_player)) { SafeNativeMethods.libvlc_media_player_pause(libvlc_media_player); return(true); } else { return(false); } } catch (Exception) { return(false); } }
/// <summary> /// 录制快照 /// </summary> /// <param name="libvlc_media_player">VLC MediaPlayer变量</param> /// <param name="path">快照要存放的路径</param> /// <param name="name">快照保存的文件名称</param> /// <returns></returns> private bool TakeSnapShot(libvlc_media_player_t libvlc_media_player, string path, string name) { try { string snap_shot_path = null; if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } snap_shot_path = path + "\\" + name; if (0 == SafeNativeMethods.libvlc_video_take_snapshot(libvlc_media_player, 0, snap_shot_path.ToCharArray(), 0, 0)) { return(true); } else { return(false); } } catch (Exception) { return(false); } }
/// <summary> /// 视频存储开始 /// </summary> /// <param name="libvlc_media_player"></param> /// <param name="url"></param> public void Save_MediaPlayer(libvlc_media_player_t libvlc_media_player, string url) { IntPtr pMrl = IntPtr.Zero; try { if (url == null || libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return; } pMrl = StrToIntPtr(url); if (pMrl == null || pMrl == IntPtr.Zero) { return; } SafeNativeMethods.libvlc_media_player_recorder_start(libvlc_media_player, pMrl); } catch (Exception) { } }
/// <summary> /// 创建VLC播放器 /// </summary> /// <param name="libvlc_instance">VLC 全局变量</param> /// <param name="handle">VLC MediaPlayer需要绑定显示的窗体句柄</param> /// <returns></returns> private libvlc_media_player_t Create_MediaPlayer(libvlc_instance_t libvlc_instance, IntPtr handle) { libvlc_media_player_t libvlc_media_player = IntPtr.Zero; try { if (libvlc_instance == IntPtr.Zero || libvlc_instance == null || handle == IntPtr.Zero || handle == null) { return(IntPtr.Zero); } //创建播放器 libvlc_media_player = SafeNativeMethods.libvlc_media_player_new(libvlc_instance); if (libvlc_media_player == null || libvlc_media_player == IntPtr.Zero) { return(IntPtr.Zero); } //设置播放窗口 SafeNativeMethods.libvlc_media_player_set_hwnd(libvlc_media_player, (int)handle); return(libvlc_media_player); } catch { SafeNativeMethods.libvlc_media_player_release(libvlc_media_player); return(IntPtr.Zero); } }
/// <summary> /// 快进 /// </summary> /// <param name="libvlc_media_player">VLC MediaPlayer变量</param> /// <returns></returns> public bool MediaPlayer_Forward(libvlc_media_player_t libvlc_media_player) { double time = 0; try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } if (SafeNativeMethods.libvlc_media_player_is_seekable(libvlc_media_player)) { time = SafeNativeMethods.libvlc_media_player_get_time(libvlc_media_player) / 1000.0; if (time == -1) { return(false); } SafeNativeMethods.libvlc_media_player_set_time(libvlc_media_player, (Int64)((time + 30) * 1000)); return(true); } else { return(false); } } catch (Exception) { return(false); } }
/// <summary> /// 获取已经显示的图片数 /// </summary> /// <param name="libvlc_media_player"></param> /// <returns></returns> private int GetDisplayedPictures(libvlc_media_player_t libvlc_media_player) { libvlc_media_t media = IntPtr.Zero; libvlc_media_stats_t media_stats = new libvlc_media_stats_t(); try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(0); } media = SafeNativeMethods.libvlc_media_player_get_media(libvlc_media_player); if (media == IntPtr.Zero || media == null) { return(0); } if (1 == SafeNativeMethods.libvlc_media_get_stats(media, ref media_stats)) { return(media_stats.i_displayed_pictures); } else { return(0); } } catch (Exception) { return(0); } }
/// <summary> /// 播放本地视频 /// </summary> /// <param name="libvlc_instance"></param> /// <param name="libvlc_media_player"></param> /// <param name="url"></param> /// <returns></returns> private bool Local_Media_Play(libvlc_instance_t libvlc_instance, libvlc_media_player_t libvlc_media_player, string url) { IntPtr pMrl = IntPtr.Zero; libvlc_media_t libvlc_media = IntPtr.Zero; try { if (url == null || libvlc_instance == IntPtr.Zero || libvlc_instance == null || libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } pMrl = StrToIntPtr(url); if (pMrl == null || pMrl == IntPtr.Zero) { return(false); } //播放本地视频 libvlc_media = SafeNativeMethods.libvlc_media_new_path(libvlc_instance, pMrl); if (libvlc_media == null || libvlc_media == IntPtr.Zero) { return(false); } //将Media绑定到播放器上 SafeNativeMethods.libvlc_media_player_set_media(libvlc_media_player, libvlc_media); //释放libvlc_media资源 SafeNativeMethods.libvlc_media_release(libvlc_media); libvlc_media = IntPtr.Zero; if (0 != SafeNativeMethods.libvlc_media_player_play(libvlc_media_player)) { return(false); } //休眠指定时间 Thread.Sleep(500); return(true); } catch (Exception) { //释放libvlc_media资源 if (libvlc_media != IntPtr.Zero) { SafeNativeMethods.libvlc_media_release(libvlc_media); } libvlc_media = IntPtr.Zero; return(false); } }
private bool NetWork_Media_Play(libvlc_instance_t libvlc_instance, libvlc_media_player_t libvlc_media_player, string url) { IntPtr pMrl = IntPtr.Zero; libvlc_media_t libvlc_media = IntPtr.Zero; try { if (url == null || libvlc_instance == IntPtr.Zero || libvlc_instance == null || libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } pMrl = StrToIntPtr(url); if (pMrl == null || pMrl == IntPtr.Zero) { return(false); } libvlc_media = SafeNativeMethods.libvlc_media_new_location(libvlc_instance, pMrl); if (libvlc_media == null || libvlc_media == IntPtr.Zero) { return(false); } SafeNativeMethods.libvlc_media_player_set_media(libvlc_media_player, libvlc_media); SafeNativeMethods.libvlc_media_release(libvlc_media); libvlc_media = IntPtr.Zero; if (0 != SafeNativeMethods.libvlc_media_player_play(libvlc_media_player)) { return(false); } Thread.Sleep(500); return(true); } catch (Exception) { if (libvlc_media != IntPtr.Zero) { SafeNativeMethods.libvlc_media_release(libvlc_media); } libvlc_media = IntPtr.Zero; return(false); } }
/// <summary> /// 停止录像功能,存储 /// </summary> /// <param name="libvlc_media_player"></param> public void UnSave_MediaPlayer(libvlc_media_player_t libvlc_media_player) { try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return; } SafeNativeMethods.libvlc_media_player_recorder_stop(libvlc_media_player); } catch (Exception) { throw; } }
/// <summary> /// VLC MediaPlayer是否在播放 /// </summary> /// <param name="libvlc_media_player">VLC MediaPlayer变量</param> /// <returns></returns> private bool MediaPlayer_IsPlaying(libvlc_media_player_t libvlc_media_player) { try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } return(SafeNativeMethods.libvlc_media_player_is_playing(libvlc_media_player)); } catch (Exception) { return(false); } }
/// <summary> /// 停止播放 /// </summary> /// <param name="libvlc_media_player">VLC MediaPlayer变量</param> /// <returns></returns> private bool MediaPlayer_Stop(libvlc_media_player_t libvlc_media_player) { try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } SafeNativeMethods.libvlc_media_player_stop(libvlc_media_player); return(true); } catch (Exception) { return(false); } }
/// <summary> /// 设置全屏 /// </summary> /// <param name="libvlc_media_player"></param> /// <param name="isFullScreen"></param> private bool SetFullScreen(libvlc_media_player_t libvlc_media_player, int isFullScreen) { try { if (libvlc_media_player == IntPtr.Zero || libvlc_media_player == null) { return(false); } SafeNativeMethods.libvlc_set_fullscreen(libvlc_media_player, isFullScreen); return(true); } catch (Exception) { return(false); } }
/// <summary> /// 释放媒体播放器 /// </summary> /// <param name="libvlc_media_player">VLC MediaPlayer变量</param> private void Release_MediaPlayer(libvlc_media_player_t libvlc_media_player) { try { if (libvlc_media_player != IntPtr.Zero || libvlc_media_player != null) { if (SafeNativeMethods.libvlc_media_player_is_playing(libvlc_media_player)) { SafeNativeMethods.libvlc_media_player_stop(libvlc_media_player); } SafeNativeMethods.libvlc_media_player_release(libvlc_media_player); } libvlc_media_player = IntPtr.Zero; } catch (Exception) { libvlc_media_player = IntPtr.Zero; } }
internal static extern bool libvlc_media_player_can_pause(libvlc_media_player_t libvlc_media_player);
internal static extern bool libvlc_media_player_is_seekable(libvlc_media_player_t libvlc_media_player);
internal static extern bool libvlc_media_player_is_playing(libvlc_media_player_t libvlc_media_player);
internal static extern void libvlc_toggle_fullscreen(libvlc_media_player_t libvlc_media_player);
internal static extern int libvlc_get_fullscreen(libvlc_media_player_t libvlc_media_player);
internal static extern void libvlc_set_fullscreen(libvlc_media_player_t libvlc_media_player, int isFullScreen);
internal static extern void libvlc_audio_set_volume(libvlc_media_player_t libvlc_media_player, int volume);
internal static extern int libvlc_audio_get_volume(libvlc_media_player_t libvlc_media_player);
internal static extern void libvlc_media_player_set_time(libvlc_media_player_t libvlc_mediaplayer, Int64 time);
internal static extern Int64 libvlc_media_player_get_time(libvlc_media_player_t libvlc_mediaplayer);
internal static extern libvlc_media_t libvlc_media_player_get_media(libvlc_media_player_t libvlc_media_player);
internal static extern int libvlc_media_player_will_play(libvlc_media_player_t libvlc_media_player);
internal static extern int libvlc_video_take_snapshot(libvlc_media_player_t libvlc_media_player, int num, char[] filepath, int i_width, int i_height);
internal static extern void libvlc_media_player_pause(libvlc_media_player_t libvlc_mediaplayer);
/// <summary> /// 播放网络视频流 /// </summary> /// <param name="url">url地址</param> /// <param name="handle">显示控件句柄</param> /// <returns>true:播放成功;false:播放失败</returns> public bool playUrl(string url, IntPtr handle) { lit = Create_Media_Instance(); lmpt = Create_MediaPlayer(lit, handle); return(NetWork_Media_Play(lit, lmpt, url)); }
internal static extern void libvlc_media_player_stop(libvlc_media_player_t libvlc_mediaplayer);