/// <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); } }
public static MediaStatistics ToMediaStatistics(this libvlc_media_stats_t stats) { MediaStatistics ms = new MediaStatistics(); ms.DecodedAudio = stats.i_decoded_audio; ms.DecodedVideo = stats.i_decoded_video; ms.DemuxBitrate = stats.f_demux_bitrate; ms.DemuxCorrupted = stats.i_demux_corrupted; ms.DemuxDiscontinuity = stats.i_demux_discontinuity; ms.DemuxReadBytes = stats.i_demux_read_bytes; ms.DisplayedPictures = stats.i_displayed_pictures; ms.InputBitrate = stats.f_input_bitrate; ms.LostAbuffers = stats.i_lost_abuffers; ms.LostPictures = stats.i_lost_pictures; ms.PlayedAbuffers = stats.i_played_abuffers; ms.ReadBytes = stats.i_read_bytes; ms.SendBitrate = stats.f_send_bitrate; ms.SentBytes = stats.i_sent_bytes; ms.SentPackets = stats.i_sent_packets; return(ms); }
public static VLCMediaStats GetStats(IVLCObject Object) { //IntPtr StatsPtr = Transform.StructDefToPtr<libvlc_media_stats_t>(); var SizeOf = Marshal.SizeOf(typeof(libvlc_media_stats_t)); var structs = new libvlc_media_stats_t(); var StatsPtr = Marshal.AllocHGlobal(SizeOf); Marshal.StructureToPtr(structs, StatsPtr, false); Boolean Success = NativeMethods.libvlc_media_get_stats(Object.Handle, StatsPtr) > 0; if (Success) { Success = false; libvlc_media_stats_t MediaStats; try { MediaStats = Transform.ToStructure <libvlc_media_stats_t>(StatsPtr); Success = true; } finally { Transform.Free(StatsPtr); } return((Success) ? new VLCMediaStats(MediaStats) : null); } return(null); }
internal static extern int libvlc_media_get_stats(libvlc_media_t libvlc_media, ref libvlc_media_stats_t lib_vlc_media_stats);
public static extern bool libvlc_media_get_stats(IntPtr libvlc_media_t, ref libvlc_media_stats_t p_stats);
internal VLCMediaStats(libvlc_media_stats_t StatsStruct) { this.stats = StatsStruct; Demux = new VLCStatsDemux(StatsStruct); }
internal VLCStatsDemux(libvlc_media_stats_t StatsStruct) { this.stats = StatsStruct; }