Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

tradakad


Принципиальный молчун

Зарегистрирован:
15 November 2007
Сообщения: 3
Примеры кода: 0
 

проигрывание файла в веб приложении

15 November 2007 12:10  


Здравствуйте все!

есть такая задача - но не уверен правильно ли я реализовал это. поэтому, если можно прочти что и как я сделал - и поправьте плз если что то не так.

есть сайт, зайдя на который можно включить на прослушивание звуковой файл лекции, во время проигрывания которого в том же окне выводиься текст леции и сменяются некоторые картинки.

раньше я писал программу windows.forms - там все это прекрасно работало, но возникла необходимость создания аналога в виде веб-сайта.

итак - для прогирывания файла я создавал экземпляр проигрывателя из wmp.dll
и пользовался его функциями и методами. приведу класс наверно (извините за кривость, но по крайней мере работает)


для веба, я так, понимаю нужен ajax. но вот насчет чего я сомневаюсь - сейчас то я проигрываю с помощью проигрывателя который создается на сервере - и локально все более менее нормально, но я вот боюсь предположить как оно будет тормозить если это будет в инете.. а нужна полная оператитвнось в плане реации на нажатия кнопок.

суть вопроса - как правильнее (лучше) это реализовать?

ксати - забыл сказать - смена текста сейчас происходит по событию таймера - и читается текст из xml расположенного на сервере.

спасибо заранее!



namespace Mplayer
{
    public class mplayer
    {
        protected WMPLib.WindowsMediaPlayer Player;
        protected String url = String.Empty;
        protected String pos = String.Empty;
        private string act = String.Empty;
        private string soundDir;
        private double currentPosition;
        private double duration;
        private string currentPositionString;
        private string durationString;

        
        private string state;

        public double CurrentPosition
        {

            get
            {
                return currentPosition;
            }
            set
            {
                currentPosition = value;
            }

        }

        public double Duration
        {
            get
            {
                return duration;

            }
            set
            {
                duration = value;
            }
        }

        public string CurrentPositionString
        {

            get
            {
                if (currentPositionString != "")
                    return currentPositionString;
                else return "00:00";
            }
            set
            {
                currentPositionString = value;
            }

        }

        public string DurationString
        {
            get
            {
                if (durationString != "")
                    return durationString;
                else return "00:00";
            }
            set
            {
                durationString = value;
            }
        }

        /*public string SoundDir
        {
            get
            {
                return soundDir;
            }
            set
            {
                soundDir = value;
            }

        }*/

        public string Url
        {
            set 
            {
                url = soundDir + value;
            }
        }

        public string State
        {
            get
            {
                return state;
            }
            set
            {
                state = value;
            }
        }

        public mplayer(String SoundDir)
        {
            Player = new WMPLib.WindowsMediaPlayer();
            Player.PlayStateChange +=
                new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
            Player.MediaError +=
                new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
            Player.PositionChange += new WMPLib._WMPOCXEvents_PositionChangeEventHandler(Player_PositionChange);
           
            soundDir = SoundDir;
            State = "stopped";
            Url = "1.mp3";
        
        }

        
        public void UpdateCurrentPosition()
        {
            CurrentPosition = Player.controls.currentPosition;
            CurrentPositionString = Player.controls.currentPositionString;
        }

        public void UpdateDuration()
        {
            if (Player.currentMedia != null)
            {
                Duration = Player.currentMedia.duration;
                DurationString = Player.currentMedia.durationString;
            }
        }


        #region Player methods

        private void Player_PlayStateChange(int NewState)
        {
            
            switch (act)
            {
                case "play":

                    if (
                        ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped) ||
                        ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsPaused) ||
                        ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsPlaying)
                        )
                    {
                        Player.controls.play();
                        
                    }
                    
                    break;
                case "pause":
                    {
                        if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsPlaying)
                        {
                            Player.controls.pause();
                            
                        }
                        break;
                    }
                case "resume":
                    {

                        if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsPaused)
                        {
                            Player.controls.play();
                        }

                        break;
                    }
                case "stop":
                    {
                        if (
                            ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsPlaying) ||
                            ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsPaused) ||
                            ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsUndefined)
                            )
                        {
                            Player.controls.stop();
                           // Player.close();
                        }
                        break;
                    }
                    
            }
            act = String.Empty;
        }

        private void Player_MediaError(object pMediaObject)
        {
            //MessageBox.Show("Cannot play media file.");
            //this.Close();
        }

        void Player_PositionChange(double oldPosition, double newPosition)
        {
            UpdateCurrentPosition();
        }

        public void PlayerClose()
        {
            Player.controls.stop();
            Player.close();
        }

        #endregion

        #region Buttons events
        
        public void Play()
        {
            Play(url);
        }
      
        public void Play(String url)
        {
            Play(url, CurrentPosition);
        }

        public void Play(double pos)
        {
            //CurrentPosition = pos;
            Play(url, pos);
        }

        public void Play(String url, double pos)
        {
            act = "play";
            Player.URL = url;
            if(System.IO.File.Exists(url))
            {
                Player_PlayStateChange((int)Player.playState);
                State = "playing";
            }
        }

        public void Kill()
        {
            Player.close();
        }

        public void Stop()
        {
            act = "stop";
            Player_PlayStateChange((int)Player.playState);
            State = "stopped";
            
        }

        public void Pause()
        {
            act = "pause";
            Player_PlayStateChange((int)Player.playState);
            State = "paused";
        }

        public void Resume()
        {
            act = "resume";
            Player_PlayStateChange((int)Player.playState);
            State = "playing";
        }

        public void FastForward()
        {
            if (State != "stopped") Player.controls.currentPosition += 10;
        }

        public void FastBackward()
        {
            //Thread thisThread = Thread.CurrentThread;
            
            
            if (State != "stopped")
            {
                if (Player.controls.currentPosition > 10)
                {
                    Player.controls.currentPosition -= 10;
                }
            }
          
        }

        public void FastForward(double seek)
        {
            Player.controls.currentPosition += seek;
        }

        public void FastBackward(double seek)
        {
            Player.controls.currentPosition -= seek;
        }
        #endregion

        public void SetVolume(int volumeLevel)
        {
            Player.settings.volume = volumeLevel;
        }

        public void SetPlayCount(int playCount)
        {
            Player.settings.playCount = playCount;
        }

        public void SetPlayerPosition(double newPos)
        {
            UpdateUrl();
            Player.controls.currentPosition  = newPos;

        }
        
        private void UpdateUrl()
        {
            Player.URL = url;
        }


    }
}



Наверх
  



Создание элементов управления

 проигрывание файла в веб приложенииtradakad  15 November 2007 12:10
 проигрывание файла в веб приложенииMiXen  25 December 2007 13:17
 RE: проигрывание файла в веб приложенииtradakad  09 January 2008 17:43
 RE: проигрывание файла в веб приложенииtradakad  09 January 2008 17:43
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта