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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.12.2013, 22:28
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 1  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
По умолчанию Потоковое видео: доступ к данным на сервере

Всем здравия, с наступающим.

Делаю проигрыватель для воспроизведения потока с сервера Unreal Media. C их средствами показа (включая Flash Player) работает хорошо, но мой проигрыватель не хочет открывать (flash.net.NetConnection) соединение. В локальной сети поток воспроизводится, в глобальной не хочет.

swf-файл проигрывателя лежит рядом с html-страницей на IIS-сервере, который работает по тому же адресу, и в той же операционке, что и сервер UMS.

Код стандартный: создаются стандартные объекты, открывается сетевое соединение и запускается поток:

Код AS3:
package stream
{
    import flash.events.NetStatusEvent;
    import flash.events.SecurityErrorEvent;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.Event;
    import flash.events.AsyncErrorEvent;
    import flash.display.Stage;
    import flash.display.Sprite;
    import flash.display.DisplayObjectContainer;
    import stream.CControls;
    import org.osmf.net.StreamingItem;
    import flash.system.Security;
 
    public class Player extends Sprite
    {
        private var sServerApp:String;
		private var sFileName:String;
        private var _connection:NetConnection;
		private var _conpol:NetConnection;
        private var _stream:NetStream;
        private var _video:Video;
		private var _container:DisplayObjectContainer
		private var _controls:CControls;
 
        // здесь sa = rtmp://domain:5119/vod/MediaRoot,
        // fn = str_name.f4v
        // если domain == IP-адрес в локальной сети, всё фацает как положено, если этот адрес в 
        // глобальной сети - connection failed
		public function PlayRemote(sa:String, fn:String, vid:Video, cont:DisplayObjectContainer)
		{
			sServerApp = sa;
			sFileName = fn;
			_container = cont;
			_video = vid;
            _connection = new NetConnection();
            _connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            _connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			_connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, OnAsyncError);
            _connection.client = new CustomClient(_container, _video, _stream);
            _connection.connect(sServerApp);
        }
 
        private function netStatusHandler(event:NetStatusEvent):void 
		{
            switch (event.info.code)
			{
                case "NetConnection.Connect.Success":
					trace("cвязь в сети установлена");
                    connectStream();
                    break;
                case "NetStream.Play.StreamNotFound":
                    trace("Поток не найден: " + sServerApp + "/" + sFileName);
                    break;
            	case "NetStream.Play.Start":
					_controls.OnStart();
					break;
/*				case "NetStream.Play.Stop":
					break;
				case "NetStream.Buffer.Full":
					break;*/
				case "NetStream.Buffer.Empty":
					_controls.OnStop();
					break;
/*				case "NetStream.Buffer.Flush":
					break;*/
				default:
					trace("событие в сети: " + event.info.code);
					break;
			}
        }
 
		private function OnAsyncError(e:AsyncErrorEvent):void
		{
			trace("асинхронная ошибка типа " +  e.type + ": " + e.text);
		}
 
        private function securityErrorHandler(event:SecurityErrorEvent):void 
		{
            trace("securityErrorHandler: " + event);
        }
 
        private function connectStream():void 
		{
			var cc:CustomClient;
            _container.addChildAt(_video, 0);
            _stream = new NetStream(_connection);
            _stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
			_stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, OnAsyncError);
            cc = new CustomClient(_container, _video, _stream);
			_controls = new CControls(_container, _stream);
			cc.Controls = _controls;
			_stream.client = cc;
            _video.attachNetStream(_stream);
            _stream.play(sFileName); // начинает загрузку потока
		}
    }
}
Вероятно, проблема с политикой, т.к. областью файла политики становится сервер, если этот файл лежит в корне. Он у меня на всякий случай стандартный, разрешает всё.

Возникает подозрение, что Flash Player вообще нельзя заставить работать со сторонними серверами, не FMS. В справке попалось, что у FMS собственный AS-интерфейс есть - классы вроде DynamicStream.

Старый 28.12.2013, 04:25
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 2  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Вы уверены что тут (rtmp://domain:5119/vod/MediaRoot) нужно порт указывать ?
Что в трэйсах ?
Какие события NetConnection рассылает ?

_connection.client может быть обычным объектом (который, к слову "отлавливает" события, например onMetaData или onBWCheck итд).

Добавлено через 5 минут
Цитата:
Сообщение от _иван Посмотреть сообщение
Возникает подозрение, что Flash Player вообще нельзя заставить работать со сторонними серверами
неверно
Флэш плеер воспроизводить rtmp поток, а кто этот поток транслирует второстепенно.

Старый 28.12.2013, 15:01
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 3  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
Порт указывать обязательно. Повторюсь, в локальной сети всё работает как нужно, если обращаюсь по глобальному адресу - NetConnection.Connect.Failed.

Насколько мне известно, ф-ции клиента оповещают о событиях в сети после соединения. У меня проблема возникает до соединения.

Нужно, чтобы посмотрел кто то, у кого опыт работы с сетями есть. По-моему вопрос больше касается настройки сервера, межсерверного общения и взаимодействия Flash Player'а с обозревателем/сервером...

Добавлено через 26 часов 30 минут
Цитата:
неверно
Флэш плеер воспроизводить rtmp поток...
Звучит оптимистично, но что то у этого "Флэш плеер"а интер-Фейс совсем не дружественный в вопросе между... сетевого общения.


Последний раз редактировалось mooncar; 30.12.2013 в 22:21. Причина: флуд и сомнительные словообразования
Старый 30.12.2013, 01:13
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 4  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
По умолчанию порты...

Адрес сейчас выложу, только приготовлюсь к приходу гостей.

Порты в раутере открыл (как виртуальные серверы) 80, 8080, 843, 443 и 5119, в корне сервера IIS лежит файл политики, в котором всё разрешено
Цитата:
<?xml version="1.0"?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>
Заглянул в firewall, где сервера работают. Во время воспроизведения по локальной сети обмен происходит через порты 445, 3389, 80 и 5119. Из них 445 и 3389 у меня не открыты. В этом наверное проблема-то. Ща заценю.

Добавлено через 14 минут
Неправильно, 3389 - это порт для "удалённого рабочего стола". И 445 - тоже примерно для того же.

okouser, сюда пожалуйста загляните. Заранее благодарю.

Добавлено через 25 минут
Сейчас заметил, что во время запроса извне, UMS открывает ненадолго входящее соединение через свой порт, но проигрыватель ничего не показывает. Соединение быстро закрывается. Видимо, дело в политике всё же. Для чтения файла политики я открыл порт 843.

Старый 30.12.2013, 20:32
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 5  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
Несколько раз пытался воспроизвести с удалённого адреса, не получалось вообще. Нужно ещё раз-другой попытаться.

Специфические настройки имеете в виду на UMS?

Имя потока: mjes.f4v

Старый 31.12.2013, 01:25
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 6  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
FMS читает командную строку с дополнительными параметрами. UMS, похоже, только имя файла. Я ещё не добрался до потоков в реальном времени (live streaming), не знаю как там, но для воспроизведения файла UMS берёт только его имя. Для открытия соединения, обязательно нужно указывать протокол://домен:порт/vod/ и имя открытой папки.

Что касается тестирования на других машинах, то только в локальной сети. Тут вообще всё нормально. Проблема возникает именно при обращении снаружи. Я во вложение поместил оба swf-файла, если проверите их у себя, будет хорошо. Но код там стандартный. Отличаются они только адресами в ссылках.

Цитата:
При попытке подключиться с помощью целой кучи других плееров выдается, что файла на сервере нет.
Здесь к UMS разрешён анонимный доступ, без всяких паролей и отпечатков пальцев...

Скорее всего, исходя из ваших наблюдений, проблема в операционке, в которой сервера работают. Нужно попробовать поместить UMS в серверную операционку.

Я только приступил к AS, когда ошибку эту увидел, подумал было, что со сторонними серверами адобы не благословляют общаться. Может, к этому всё и идёт?
Вложения
Тип файла: swf shared.swf (24.6 Кб, 34 просмотров)
Тип файла: swf local.swf (24.5 Кб, 29 просмотров)

Старый 03.01.2014, 12:17
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 7  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
Всех с новым годом, и большое спасибо okouser за поддержку. Всегда буду рад содействовать в меру возможностей.

Добавлено через 25 часов 54 минуты
Заглянул в журналы серверов. Здесь запись от 30.12.2013 сервера IIS:
Код:
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2013-12-30 01:57:34
#Fields: time c-ip cs-method cs-uri-stem sc-status 
01:57:34 188.162.15.87 GET /Default.htm 200
01:57:34 188.162.15.87 GET /favicon.ico 404
02:44:14 91.188.124.225 GET /search 404
02:46:51 91.188.124.225 GET /search 404
02:49:52 91.188.124.225 GET /search 404
02:53:04 91.188.124.225 GET /search 404
02:53:14 91.188.124.225 GET /search 404
02:56:52 91.188.124.225 GET /search 404
03:01:05 91.188.124.225 GET /search 404
03:01:13 91.188.124.225 GET /search 404
03:05:53 91.188.124.225 GET /search 404
03:11:04 91.188.124.225 GET /search 404
03:11:26 91.188.124.225 GET /search 404
03:17:51 91.188.124.225 GET /search 404
03:20:12 82.208.70.191 GET /Default.htm 200
03:20:12 82.208.70.191 GET /favicon.ico 404
03:20:24 82.208.70.191 GET /flash_test/local.html 200
03:20:24 82.208.70.191 GET /flash_test/local.swf 200
03:20:41 82.208.70.191 GET /flash_test/shared.html 200
03:20:41 82.208.70.191 GET /flash_test/shared.swf 200
03:20:51 82.208.70.191 GET /flash_test/mixed.html 200
03:20:51 82.208.70.191 GET /flash_test/shared.swf 304
03:20:51 82.208.70.191 GET /flash_test/local.swf 304
03:24:52 91.188.124.225 GET /search 404
03:31:38 91.188.124.225 GET /search 404
03:37:39 91.188.124.225 GET /search 404
03:42:05 82.208.70.191 GET /Default.htm 304
03:42:05 82.208.70.191 GET /favicon.ico 404
03:42:31 127.0.0.1 GET /iishelp/iis/htm/core/iiabtlg.htm 200
03:43:39 91.188.124.225 GET /search 404
03:58:31 82.208.70.191 GET /flash_test/mixed.html 304
03:58:31 82.208.70.191 GET /flash_test/shared.swf 304
03:58:31 82.208.70.191 GET /flash_test/local.swf 304
04:10:36 82.208.70.191 GET /vod/MediaRoot/str_name.f4v 404
04:28:41 66.249.74.25 GET /robots.txt 404
04:28:43 66.249.74.25 GET /Default.htm 200
04:38:33 66.249.74.25 GET /flash_test/local.html 200
04:43:24 66.249.74.25 GET /flash_test/mixed.html 200
04:45:52 66.249.74.25 GET /flash_test/shared.html 200
04:48:41 66.249.74.25 GET /flash_test/shared.swf 200
04:48:49 66.249.74.25 GET /flash_test/local.swf 200
05:48:59 85.159.33.81 HEAD /Default.htm 200
06:33:42 180.86.192.1 HEAD /Default.htm 200
11:23:50 188.115.186.197 GET /Default.htm 200
11:23:52 188.115.186.197 GET /favicon.ico 404
11:24:11 188.115.186.197 GET /flash_test/local.html 200
11:24:13 188.115.186.197 GET /flash_test/local.swf 200
11:24:15 188.115.186.197 GET /flash_test/local.swf 200
11:24:40 188.115.186.197 GET /flash_test/mixed.html 200
11:24:41 188.115.186.197 GET /flash_test/shared.swf 200
11:34:02 188.115.186.197 GET /flash_test/mixed.html 304
11:34:04 188.115.186.197 GET /flash_test/shared.swf 304
11:34:04 188.115.186.197 GET /flash_test/local.swf 304
13:11:00 37.229.135.69 GET /Default.htm 200
13:11:00 37.229.135.69 GET /favicon.ico 404
13:11:07 37.229.135.69 GET /flash_test/local.html 200
13:11:07 37.229.135.69 GET /flash_test/local.swf 200
13:11:27 37.229.135.69 GET /flash_test/mixed.html 200
13:11:27 37.229.135.69 GET /flash_test/shared.swf 200
13:12:09 37.229.135.69 GET /flash_test/mixed.html 304
13:13:44 37.229.135.69 GET /flash_test/shared.html 200
16:17:27 66.249.76.101 GET /robots.txt 404
16:17:28 66.249.76.101 GET /Default.htm 200
16:24:03 66.249.76.101 GET /flash_test/shared.html 200
16:24:04 66.249.76.101 GET /flash_test/mixed.html 200
16:30:06 66.249.76.101 GET /flash_test/local.html 200
16:35:02 66.249.76.101 GET /flash_test/shared.swf 200
16:35:03 66.249.76.101 GET /flash_test/local.swf 200
16:57:53 5.34.91.45 GET /Default.htm 200
16:57:53 5.34.91.45 GET /ncsi.txt 404
16:57:53 5.34.91.45 GET /HNAP1/ 404
17:16:37 188.115.186.197 GET /Default.htm 200
17:16:42 188.115.186.197 GET /flash_test/shared.html 200
17:16:43 188.115.186.197 GET /flash_test/shared.swf 200
17:16:55 188.115.186.197 GET /flash_test/shared.swf 200
17:16:58 188.115.186.197 GET /flash_test/shared.swf 200
21:07:38 5.45.75.10 GET /Default.htm 200
Здесь запись журнала сервера UMS от того же 30.12.2013:
Код:
LogIn	User: Anonymous-ID:1096; IP Address: 188.115.186.197; Delivery: RTMP TCP Unicast; Time: 17:24:43 30 December 2013; Resource: mediaroot\mjes.f4v
LogOut	User: Anonymous-ID:1096; Time: 17:34:03 30 December 2013; KBytes transfered: 47454
LogIn	User: Anonymous-ID:1288; IP Address: 188.115.186.197; Delivery: RTMP TCP Unicast; Time: 17:34:07 30 December 2013; Resource: mediaroot\mjes.f4v
LogOut	User: Anonymous-ID:1288; Time: 17:34:32 30 December 2013; KBytes transfered: 3996
LogIn	User: Anonymous-ID:1352; IP Address: 192.168.0.77; Delivery: RTMP TCP Unicast; Time: 21:34:03 30 December 2013; Resource: mediaroot\mjes.f4v
LogOut	User: Anonymous-ID:1352; Time: 21:41:17 30 December 2013; KBytes transfered: 53010
LogIn	User: Anonymous-ID:1116; IP Address: 188.115.186.197; Delivery: RTMP TCP Unicast; Time: 23:16:59 30 December 2013; Resource: mediaroot\mjes.f4v
LogIn	User: Anonymous-ID:1472; IP Address: 188.115.186.197; Delivery: RTMP TCP Unicast; Time: 23:28:02 30 December 2013; Resource: mediaroot\mjes.f4v
LogOut	User: Anonymous-ID:1472; Time: 23:28:26 30 December 2013; KBytes transfered: 460
LogIn	User: Anonymous-ID:1452; IP Address: 188.115.186.197; Delivery: RTMP TCP Unicast; Time: 23:28:32 30 December 2013; Resource: mediaroot\mjes.f4v
LogOut	User: Anonymous-ID:1452; Time: 23:29:58 30 December 2013; KBytes transfered: 478
LogOut	User: Anonymous-ID:1116; Time: 23:47:26 30 December 2013; KBytes transfered: 790
В следующей записи журнала IIS видно, как я (178.91.225.202) пытаюсь попасть на сервер UMS с удалённого адреса и ничего не выходит: сервер UMS не реагирует. Наверное, потому что до него запрос не доходит. Как бы то ни было, он не оставляет никаких записей в своём журнале.
Код:
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2014-01-03 01:30:39
#Fields: time c-ip cs-method cs-uri-stem sc-status 
01:30:39 174.140.166.236 HEAD /Default.htm 200
06:26:06 5.45.75.10 GET /Default.htm 200
12:29:47 178.91.225.202 GET /favicon.ico 404
12:29:51 178.91.225.202 GET /Default.htm 200
12:29:57 178.91.225.202 GET /flash_test/mixed.html 200
12:29:57 178.91.225.202 GET /flash_test/shared.swf 200
12:29:57 178.91.225.202 GET /flash_test/local.swf 200
12:30:16 178.91.225.202 GET /flash_test/shared.html 200
12:30:40 178.91.225.202 GET /flash_test/local.html 200
12:38:39 178.91.225.202 GET /Default.htm 200
12:38:39 178.91.225.202 GET /favicon.ico 404
12:38:45 178.91.225.202 GET /flash_test/local.html 200
12:38:45 178.91.225.202 GET /flash_test/local.swf 200
12:38:53 178.91.225.202 GET /flash_test/shared.html 200
12:38:53 178.91.225.202 GET /flash_test/shared.swf 200
12:39:01 178.91.225.202 GET /flash_test/mixed.html 200
19:51:06 89.136.120.205 GET /cgi-bin/php 404
19:51:06 89.136.120.205 GET /cgi-bin/php4 404
19:51:09 89.136.120.205 GET /cgi-bin/php5 404
19:51:10 89.136.120.205 GET /cgi-bin/php-cgi 404
19:51:11 89.136.120.205 GET /cgi-bin/php.cgi 404
23:05:48 5.45.75.10 GET /Default.htm 200
04:50:27 5.45.75.10 GET /Default.htm 200
Т.е., okouser как то смог получить поток у UMS и то не совсем стабильный, но другим это не дано.

Ещё момент такой наблюдается: файл политики, который лежит в корне IIS проигрыватель не читает, как видно в журнале IIS - нет такого обращения. Это может быть следствием неверных действий в ActionScript.

Добавлено через 26 часов 0 минут
Хотя в справке сообщается, что файл политики читается проигрывателем самостоятельно, без каких то специальных действий в AS-3.

Добавлено через 26 часов 5 минут
Цитата:
Я лично могу посоветовать, где можно, иметь про запас альтернативные варианты трансляции.
Даже если пользоваться адобовским сервером?

Старый 10.01.2014, 14:58
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 8  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Ну, фмс, безусловно, надежнее и не так часто падает, это факт.
Хотя, я за бесплатное решение, в частности, red5
Если нужно знать что сервак отвалился и как-то отреагировать решите это cron-ом.

Старый 12.01.2014, 14:14
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 9  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
Цитата:
тут столько вариантов для сбоя имеется...
Сбой по моему тут не причём, вопрос в том, почему из локальной сети доступ нормальный, а из глобальной - ограниченный?

Добавлено через 30 секунд
И как с этим бороться?

Старый 17.01.2014, 22:15
_иван вне форума Посмотреть профиль Отправить личное сообщение для _иван Найти все сообщения от _иван
  № 10  
Ответить с цитированием
_иван
[+4 30.12.13]

Регистрация: Dec 2013
Сообщений: 9
Firewall показывает кратковременное соединение с сервером, где то 2-3 секунды, после оно закрывается, а сервер ничего в журнал не записывает. Если он что то отправляет, обычно пишет, что отправил. В этом случае - ничего.

Попробую установить red5. IIS уже поменял на Apache.

Адобы воздвигли множество проблем на пути к счастью запускать в мир и созерцать потоковое видео обыкновенным гражданам, не желающим платить буржуям и стяжателям большие средства за услуги потоковых серверов. В этом явная дискриминация. Нужно написать собственный сервер и проигрыватель, назвать его как-нибудь Shalf Player, а лучше по-русски - на кириллице и запустить в мир. Встречал rtmp-сервер написанный на 'С', но он не для Windows. Есть мнение, что протокол rtmp вообще не приемлемый - это детище Adobe и только им предназначен. Кроме того, говорят, что red5 и подобные для trmp - медленные и требуют много ресурсов.

Нужно сделать свой протокол на С++ максимально производительный. Есть желающие этим заняться?

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

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

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


 


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


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