Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.03.2013, 14:35
bumblebee вне форума Посмотреть профиль Отправить личное сообщение для bumblebee Найти все сообщения от bumblebee
  № 1  
Ответить с цитированием
bumblebee

Регистрация: Jul 2008
Адрес: Design, Flash
Сообщений: 22
Отправить сообщение для bumblebee с помощью ICQ Отправить сообщение для bumblebee с помощью Skype™
По умолчанию OSMF.Воспроизведение и переподключение HLS-видео

Всем привет!
Прощу помощи, сейчас работаю на видео плеером воспроизводящим HLS-видео(HTTP Live Streaming), т.е файлы с форматом *.m3u8
Вопрос в следующем, видео играет, но при разрыве связи я не могу понять когда соединение с интернетом восстановилось.
Код AS3:
import at.matthew.httpstreaming.M3U8Element;
import at.matthew.httpstreaming.M3U8Loader;
 
...
 
private function connectStream():void 
		{
			//
			var netLoader:M3U8Loader = new M3U8Loader()
 
			//
			var urlResource:DynamicStreamingResource = new DynamicStreamingResource("http://rtmp.galargo.tv:1935/videoondemand/mp4:suva/suva/2012/12/13/10555/video_360p.f4v/playlist.m3u8");
 
			//
			var videoElement:M3U8Element = new M3U8Element(urlResource, netLoader);
 
 
			//
			var mediaplayer:MediaPlayer = new MediaPlayer();
				mediaplayer.media = videoElement
				mediaplayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, onState)
 
			//
			var mediaPlayerSprite:MediaPlayerSprite = new MediaPlayerSprite(mediaplayer);
            addChild(mediaPlayerSprite);
		}
 
private function onState(e:MediaPlayerStateChangeEvent):void 
		{
			trace("onState.e: " + e.state)
 
			switch(e.state) { 
				case "playbackError":
					//reconnectTimer.start();
					break
			}
		}
Допустим играет видео, в процессе воспроизведения я выдергиваю сетевой кабель. Приходит событие в методе: onState -> playbackError, означает связь потеряна.
После этого как я вставляю обратно кабель, никаких событий не приходит, как узнать что соединение восстановлено?

Тут можно почитать про HLS
Коротко, от сервера приходят пакеты по 15 сек видео, как только эти 15 сек проиграли, клиент запрашивает следующие 15 сек видео.

Все возможные варианты "погуглил", но в большинстве случаев видео не воспроизводится

Библиотеки M3U8 качал отдельно, входят в пакет OSMF

Старый 26.03.2013, 04:44
Simplifier вне форума Посмотреть профиль Отправить личное сообщение для Simplifier Найти все сообщения от Simplifier
  № 2  
Ответить с цитированием
Simplifier

Регистрация: Jun 2011
Сообщений: 60
Цитата:
как узнать что соединение восстановлено?
А кто сказал, что оно восстанавливается после того как обратно воткнул кабель? Соединение разорвалось и все. Заново подключаться надо. Вероятнее так. Хотя, может и иначе, раз клиент не постоянно подключен, а регулярно перезапрашивает данные

Старый 26.03.2013, 15:31
bumblebee вне форума Посмотреть профиль Отправить личное сообщение для bumblebee Найти все сообщения от bumblebee
  № 3  
Ответить с цитированием
bumblebee

Регистрация: Jul 2008
Адрес: Design, Flash
Сообщений: 22
Отправить сообщение для bumblebee с помощью ICQ Отправить сообщение для bumblebee с помощью Skype™
Цитата:
Сообщение от Simplifier Посмотреть сообщение
А кто сказал, что оно восстанавливается после того как обратно воткнул кабель? Соединение разорвалось и все. Заново подключаться надо. Вероятнее так. Хотя, может и иначе, раз клиент не постоянно подключен, а регулярно перезапрашивает данные
Я согласен.
Как это сделать средствами OSMF?
Если я создаю:
Код AS3:
connection = new NetConnection();
			connection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
			connection.connect(null); 
...
 
private function onNetStatus(e:NetStatusEvent):void
		{
			trace("onNetStatus.code: " + e.info.code);
			switch (e.info.code)
			{
				case "NetConnection.Connect.Success": 
					setStream();
					break;
			}
		}
Если устанавливать соединение с null, то все время приходит в методе onNetStatus-> "NetConnection.Connect.Success".
Если же указывать путь http://..., то выводит NetConnection.Connect.Error в независимости от того, есть интернет или нету.

Старый 26.03.2013, 16:11
Simplifier вне форума Посмотреть профиль Отправить личное сообщение для Simplifier Найти все сообщения от Simplifier
  № 4  
Ответить с цитированием
Simplifier

Регистрация: Jun 2011
Сообщений: 60
Не совсем понимаю суть проблемы. Просто подключаешься как в первый раз и все. Если требуется NetConnection подключать к null, то естественно такое подключение всегда будет успешным, вне зависимости от наличия доступа к интернету. Значит этот этап можно пропустить по идее в последующие разы. Но на каком-то же этапе высыпется ошибка из-за того, что интернет не подключен. Там и устанавливай какой-то таймаут, чтобы делать следующую попытку подключения.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
hls , http live stream , m3u8 , reconnect
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:10.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.