示例#1
0
 public MediaPlayInfo(string session, string url, STREAM_TYPE stream, ushort port)
 {
     mediaType     = MEDIA_TYPE.STREAMING;
     serverSession = session;
     mediaURL      = url;
     streamType    = stream;
     serverPort    = port;
 }
示例#2
0
 public DISK_GEOMETRY(long c, MEDIA_TYPE t, uint tpc, uint spt, uint bps)
 {
     Cylinders         = c;
     MediaType         = t;
     TracksPerCylinder = tpc;
     SectorsPerTrack   = spt;
     BytesPerSector    = bps;
 }
示例#3
0
        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);
        }
示例#4
0
 public MediaPlayInfo(MEDIA_TYPE type, string url, STREAM_TYPE stream)
 {
     mediaType  = type;
     mediaURL   = url;
     streamType = stream;
 }
示例#5
0
        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);
                    }
                }
            }
        }
示例#6
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;
        }
示例#7
0
        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));
        }
示例#8
0
        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));
        }
示例#9
0
        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);
        }
示例#10
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);
示例#11
0
        /// <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);
        }
示例#12
0
 private int RealProSourceCallBack(EASY_CALLBACK_TYPE_ENUM callbackType, int channelId, IntPtr userPtr, MEDIA_TYPE mediaType, IntPtr pBuf, ref EASY_FRAME_INFO _frameInfo)
 {
     return(0);
 }
示例#13
0
 public MediaPlayInfo(string session, string url, STREAM_TYPE stream, ushort port)
 {
     mediaType = MEDIA_TYPE.STREAMING;
     serverSession = session;
     mediaURL = url;
     streamType = stream;
     serverPort = port;
 }
示例#14
0
 public MediaPlayInfo(MEDIA_TYPE type, string url, STREAM_TYPE stream)
 {
     mediaType = type;
     mediaURL = url;
     streamType = stream;
 }