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

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

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

Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
По умолчанию NetStream не может открыть относительный URLв некоторых браузерах

Приветствую.

Ситуация: movie.swf находится на шаре: \\server_name\share_name\dir_name\
Там же - папка data в которой 1.mp4

Открываю в браузере index.html, который лежит на шаре рядом movie.swf. В него и встроен объект с movie.swf.

Если предать в play() NetStream'а прямой урл типа file:////server_name/share_name/dir_name/data/1.mp4 - всё ОК!

Если же передать относительный "data/1.mp4" - то откроется только под Chrome.

MSIE и Firefox что-то передают так, что в NetStrem получается StremNotFound.

Если я примонтирую шару как сетевой диск, то URL будет формировать уже по-другому и всё нормально будет в случае относительного URL

Но мне ОЧЕНЬ нужно именно напрямую с шарой.

Как быть? Эта ситуация характерна только для NetStream. URLLoader нормально подгружает xml-ники и звуки независимо от того, как был осуществлен доступ к html-файлу movie.html

Сталкивался кто-то?

Абсолютный путь использовать не могу.
Передавать из javascript location.href в movie.swf и его обрабатывать тоже не могу. ExternalInterface будет не доступен, поскольку песочница SWF-ки - "local-width-filesystem"

Старый 26.07.2013, 10:55
bookworm вне форума Посмотреть профиль Отправить личное сообщение для bookworm Найти все сообщения от bookworm
  № 2  
Ответить с цитированием
bookworm

Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
Насчет кода - согласен, но мне сперва нужно вычистить оттуда незначительные фрагменты, прежде чем вываливать на форум

А насчет логов - что имеется ввиду? Какие логи соединения? Максимум смотрю трафик SMB снифером

Старый 26.07.2013, 18:26
bookworm вне форума Посмотреть профиль Отправить личное сообщение для bookworm Найти все сообщения от bookworm
  № 3  
Ответить с цитированием
bookworm

Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
Собственно, ниже представлен вычищенный от лишнего кусок кода, на котором проблема видна.

Итак, на \\server_name\share_name в папку test кладу:
Цитата:
index.html
index.swf
data/001.mp4
Если использовать абсолютный URL - будет проигрываться.

Если использовать относительный, то:

FireFox:
Ввожу в адресную строку браузера: \\server_name\share_name\test\index.html
Браузер преобразует в file://///server_name//share_name/test/index.html
Всё, StreamNotFound

MSIE9:
Ввожу в адресную строку браузера: \\server_name\share_name\test\index.html
Браузер не преобразует, остаётся так.
Опять-таки, StreamNotFound

Chrome28
Ввожу в адресную строку браузера: \\server_name\share_name\test\index.html
Браузер преобразует в file://server_name/share_name/test/index.html
РАБОТАЕТ

Наконец, монтирую шару как диск

FireFox:
Ввожу в адресную строку браузера: z:\test\index.html
Браузер преобразует в file:///z:/test/index.html
РАБОТАЕТ

MSIE9:
Ввожу в адресную строку браузера: z:\test\index.html
Браузер не преобразует, остаётся так.
РАБОТАЕТ


Вывод - NetConnection или NetStream не могу переварить URL, которые формируюся в ошибочных случаях
По снифферу видно, что в этих случаях ДАЖЕ ОБРАЩЕНИЯ НЕТ

Я не смотрел события ошибок NetConnection - сейчас буду...
Мне не удалось найти свойство в NetStream, которое показывает конечный URL

Код:



Код AS3:
package  {
 
	import flash.display.*;
	import flash.media.Video;
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import flash.events.NetStatusEvent;
 
	public class Main extends Sprite {
 
	////////////////////////////////////////// 
 
	public function Main() {
 
		var videoScreen:Video = new Video();
		addChild(videoScreen);
		var nc:NetConnection = new NetConnection();
		nc.connect(null);
		var ns:NetStream = new NetStream(nc);
		ns.client = this;
		ns.addEventListener(NetStatusEvent.NET_STATUS, onNSStatus);
 
		videoScreen.attachNetStream(ns);
 
		// абсолютный URL
		//var videoFileName:String = 'file:////server_name/share_name/test/data/001.mp4';
 
		// относительный URL
		var videoFileName:String = 'data/001.mp4';
 
		ns.play(videoFileName);		
 
	}
 
	////////////////////////////////////////// 
 
	private function onNSStatus(e: NetStatusEvent)
	{
		log.appendText(e.info.code + "\n");
	}
 
	public function onMetaData(metaData:Object)	
	{
 
	}
}
 
}
Добавлено через 21 минуту
Хм! Пришла мысль - собирать абсолютный URL самостоятельно, корректируя, опираясь на this.loaderInfo.loaderURL


Последний раз редактировалось bookworm; 26.07.2013 в 18:48.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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