public MediaPlayInfo(string session, string url, STREAM_TYPE stream, ushort port) { mediaType = MEDIA_TYPE.STREAMING; serverSession = session; mediaURL = url; streamType = stream; serverPort = port; }
public DISK_GEOMETRY(long c, MEDIA_TYPE t, uint tpc, uint spt, uint bps) { Cylinders = c; MediaType = t; TracksPerCylinder = tpc; SectorsPerTrack = spt; BytesPerSector = bps; }
public static string f_get_uriProxy(string mediaId, MEDIA_TYPE type) { string key = string.Format("{0}{1}", type, mediaId); if (m_dicProxy.ContainsKey(key)) { return(string.Format("http://localhost:{0}/?key={1}", m_port, key)); } return(string.Empty); }
public MediaPlayInfo(MEDIA_TYPE type, string url, STREAM_TYPE stream) { mediaType = type; mediaURL = url; streamType = stream; }
private async void _open_files(Boolean clear_playlist_and_start_playback, MEDIA_TYPE media_type, params String[] filenames) { /* Bring window to front. This is relevant when opening via file association */ if (!mainwindow_root.IsActive) { mainwindow_root.Activate(); } if (filenames != null) { Task<String[]> get_files_task; switch (media_type) { case MEDIA_TYPE.ALL: get_files_task = new Task<String[]>(() => _get_all_mediafiles(filenames)); break; case MEDIA_TYPE.AUDIO: get_files_task = new Task<String[]>(() => _get_all_audiofiles(filenames)); break; case MEDIA_TYPE.AUDIO_AND_VIDEO: get_files_task = new Task<String[]>(() => _get_all_avfiles(filenames)); break; case MEDIA_TYPE.IMAGE: get_files_task = new Task<String[]>(() => _get_all_imagefiles(filenames)); break; case MEDIA_TYPE.VIDEO: get_files_task = new Task<String[]>(() => _get_all_videofiles(filenames)); break; default: get_files_task = new Task<String[]>(() => _get_all_videofiles(filenames)); break; } get_files_task.Start(); await get_files_task; filenames = get_files_task.Result; _current_media_type = media_type; if (filenames.Length < 1) { MessageBox.Show("No playable media found", "Error", MessageBoxButton.OK, MessageBoxImage.Asterisk); } else { if (clear_playlist_and_start_playback) { _playlist_clear(); } Task populate = new Task(() => _playlist_populate(filenames)); populate.Start(); await populate; if (clear_playlist_and_start_playback) { _play(0); } else { _playlist_update(0); } } } }
private void _init_rest() { lbl_title.Content = lbl_title.Content as string + " v" + GetRunningVersion(); _is_expanded = main_context_view_expanded.IsChecked; _is_fullscreen = false; _player_state = PLAYER_STATE.NOT_LOADED; _progress_state = DURATION_LABEL.ELAPSED; _current_media_type = MEDIA_TYPE.VIDEO; _ml_main_background = border_media_element.Background; _resize_mode_default = this.ResizeMode; _temp_position = TimeSpan.MinValue; _playlist_history = new Stack<MyMediaFile>(100); _timer = new DispatcherTimer(); _timer.Interval = new TimeSpan(0, 0, 1); _timer.Tick += new EventHandler((sender, e) => { if (!_is_slider_dragging && _player_state == PLAYER_STATE.PLAYING) { sl_progress.Value = ml_main.Position.TotalSeconds; this.TaskbarItemInfo.ProgressValue = ml_main.NaturalDuration.HasTimeSpan ? sl_progress.Value / ml_main.NaturalDuration.TimeSpan.TotalSeconds : 0; } }); _timer.Start(); _components_visible_timer = new DispatcherTimer(); _components_visible_timer.Interval = new TimeSpan(0, 0, CONSTANT_HIDE_COMPONENTS_DELAY); _components_visible_timer.Tick += new EventHandler((sender, e) => { if (_is_expanded || _is_fullscreen && _player_state == PLAYER_STATE.PLAYING && !main_context.IsOpen) { _components_state(Visibility.Hidden); } }); _components_visible_timer.Start(); _timer_dragmove = new DispatcherTimer(); _timer_dragmove.Interval = new TimeSpan(0, 0, 0, 0, DRAGMOVE_TIME_MS); _timer_dragmove.Tick += new EventHandler((t_sender, t_e) => { if (Mouse.LeftButton == MouseButtonState.Pressed) { DragMove(); } _timer_dragmove.Stop(); }); /* Subscribe to custome eventhandler for external application launch */ App.ExternelApplicationLauncy += mainwindow_root_loaded; }
private void OpenStreamingSession(string session, string strURL, STREAM_TYPE streamType, ushort port) { ClosePlayer(); string username = "", passwd = "", url = ""; if (ParseURL(strURL, ref username, ref passwd, ref url) == false) { MessageBox.Show("잘못된 URL 입니다", "에러"); return; } dxPlayer.Test(0x9635371); int ret = dxPlayer.OpenLiveServerSession(session, strURL, (int)streamType, 2); if (ret == -9) { LoginWindow login = new LoginWindow(); login.Owner = this; if (login.ShowDialog() == true) { strURL = "rtsp://" + login.txtBoxID.Text + ":" + login.passwd.Password + "@" + url; OpenStreamingSession(session, strURL, streamType, port); } return; } if (ret < 0) { MessageBox.Show(strURL + " 을(를) 열지 못했습니다", "에러"); return; } ret = dxPlayer.Play(0.0); if (ret < 0) { ClosePlayer(); MessageBox.Show(strURL + " 을(를) 열지 못했습니다", "에러"); return; } ret = dxPlayer.StartServer(port); if (ret < 0) { ClosePlayer(); MessageBox.Show(strURL + "서버를 시작하지 못했습니다", "에러"); return; } sliderTimeline.Value = 0; sliderTimeline.IsEnabled = false; mediaInfo.Reset(); this.mediaType = MEDIA_TYPE.STREAMING; this.strURI = strURL; this.serverSession = session; this.streamType = streamType; State = PLAYER_STATE.STATE_PLAYING; AddRecentMediaList(new MediaPlayInfo(session, strURI, streamType, port)); }
private void OpenFile(string filepath) { ClosePlayer(); dxPlayer.SetTimer(1); int ret = dxPlayer.OpenFile(filepath); if (ret < 0) { MessageBox.Show(filepath + " 을(를) 열지 못했습니다", "에러"); return; } if (ParseMediaInfo(dxPlayer.GetStringInfo("mediainfo")) == true) { sliderTimeline.Minimum = 0; sliderTimeline.Maximum = mediaInfo.totalTime; sliderTimeline.IsEnabled = true; if (mediaInfo.startTime != 0 && mediaInfo.endTime != 0) { startTime = new DateTime(1970, 1, 1).AddMilliseconds(mediaInfo.startTime); startTime += TimeZone.CurrentTimeZone.GetUtcOffset(startTime); endTime = new DateTime(1970, 1, 1).AddMilliseconds(mediaInfo.endTime); endTime += TimeZone.CurrentTimeZone.GetUtcOffset(endTime); } else { startTime = DateTime.MinValue; endTime = DateTime.MinValue; } } ret = dxPlayer.Play(0.0); if (ret < 0) { ClosePlayer(); MessageBox.Show(filepath + " 을(를) 열지 못했습니다", "에러"); return; } mediaType = MEDIA_TYPE.FILE; strURI = filepath; State = PLAYER_STATE.STATE_PLAYING; AddRecentMediaList(new MediaPlayInfo(MEDIA_TYPE.FILE, strURI, STREAM_TYPE.TCP)); }
private int RealProSourceCallBack(EASY_CALLBACK_TYPE_ENUM callbackType, int channelId, IntPtr userPtr, MEDIA_TYPE mediaType, IntPtr pBuf, IntPtr _frameInfo) { if (EasyPlayerProSDK.EASY_CALLBACK_TYPE_ENUM.EASY_TYPE_CODEC_DATA == callbackType) { EASY_FRAME_INFO frameInfo = new EASY_FRAME_INFO(); byte[] pByte = new byte[512]; if (_frameInfo != IntPtr.Zero) { Marshal.Copy(_frameInfo, pByte, 0, Marshal.SizeOf(typeof(EASY_FRAME_INFO))); frameInfo = (EASY_FRAME_INFO)BytesToStruct(pByte, frameInfo.GetType()); } if (mediaType == EasyPlayerProSDK.MEDIA_TYPE.MEDIA_TYPE_VIDEO) { Console.WriteLine("FrameInfo: 视频==========分辨率:[" + frameInfo.width + "," + frameInfo.height + "]====Fps: " + frameInfo.fps + "====码率:" + frameInfo.bitrate); } else if (mediaType == EasyPlayerProSDK.MEDIA_TYPE.MEDIA_TYPE_AUDIO) { Console.WriteLine("FrameInfo: 音频==========采样率:[" + frameInfo.sample_rate + "]====通道数: " + frameInfo.channels + "====采样位宽:" + frameInfo.bits_per_sample); } } return(0); }
private static extern int LibEasyPlayerPro_OpenStream(IntPtr playerHandle, EASY_CHANNEL_SOURCE_TYPE_ENUM channelType, string streamURI, byte rtpOverTcp, MEDIA_TYPE mediaType, EasyPlayerProCallBack callback, IntPtr userPtr, uint reconnection, uint heartbeatType, uint queueSize, uint multiplex);
/// <summary> /// 打开一路码流,返回一个可用的通道 ID /// </summary> /// <param name="playerHandle">PLAYER_HANDLE句柄.</param> /// <param name="channelType">通道源类型.</param> /// <param name="streamURI">有效的源地址.</param> /// <param name="mediaType">媒体类型【媒体类型 MEDIA_TYPE_VIDEO | MEDIA_TYPE_AUDIO | MEDIA_TYPE_EVENT)】 暂保留.</param> /// <param name="callback">回调函数.</param> /// <param name="userPtr">用户自定义指针.</param> /// <param name="reconnection">是否重连【1表示无限次重连,0表示不重连,大于1表示指定次数重连(需小于1000)】默认1.</param> /// <param name="queueSize">缓冲队列大小, 需大于1024*512.默认1024 * 512 * 2</param> /// <param name="rtpOverTcp">true 为tcp,否则为udp.默认1</param> /// <param name="multiplex">true:复用源,即打开同一个url时,到前端的连接只有一个;false:不复用, 打开多少个url,就有多少个连接*默认true /// <returns>可用的通道 ID.</returns> public static int LibEasyPlayerPro_OpenStream(IntPtr playerHandle, EASY_CHANNEL_SOURCE_TYPE_ENUM channelType, string streamURI, MEDIA_TYPE mediaType, EasyPlayerProCallBack callback, IntPtr userPtr, uint reconnection = 1, uint queueSize = 1024 * 512 * 2, bool overTcp = true, bool multiplex = true) { int ret = LibEasyPlayerPro_OpenStream(playerHandle, channelType, streamURI, overTcp ? (byte)1 : (byte)0, mediaType, callback, userPtr, reconnection, 0, queueSize, multiplex ? (uint)1 : (uint)0); return(ret); }
private int RealProSourceCallBack(EASY_CALLBACK_TYPE_ENUM callbackType, int channelId, IntPtr userPtr, MEDIA_TYPE mediaType, IntPtr pBuf, ref EASY_FRAME_INFO _frameInfo) { return(0); }