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

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

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

Регистрация: Nov 2008
Сообщений: 78
По умолчанию mpeg video, проблема в хроме

Такие чудеса - во всех броузерах кроме хрома работает.
В хроме - возвращает 200 статус а потом 2032 ошибку...
Код AS3:
package ru.kyzi007.media
{
	import flash.display.Loader;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.HTTPStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLRequest;
	import flash.net.URLRequestHeader;
	import flash.net.URLStream;
	import flash.utils.ByteArray;
 
	import ru.kyzi007.events.TrackEvent;
	import ru.kyzi007.log.Log;
 
	/**
	 * Created by IntelliJ IDEA kyzi007@rambler.ru
	 * Date: 04.07.12
	 * Time: 21:59
	 */
 
	public class VideoMpeg extends EventDispatcher
	{
		private var _loader : Loader = new Loader();
		private var _stream : URLStream = new URLStream();
		private var _buffer : ByteArray;
		private var _write : Boolean = false;
		private var _markerDetection : Boolean = false;
		private var _request : URLRequest;
		private var _isInit : Boolean;
 
		public function VideoMpeg ()
		{
		}
 
		public function close () : void
		{
			Log.log('VideoMpeg::close', Log.METHODS);
			_stream.close();
		}
 
		public function load (url : String, header : String) : void
		{
			_request = new URLRequest(url);
			if (header) _request.requestHeaders = new Array(new URLRequestHeader("Authorization", header));
			_stream.load(_request);
			_stream.addEventListener(ProgressEvent.PROGRESS, onProgress);
			_stream.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatus)
			_stream.addEventListener(IOErrorEvent.IO_ERROR, ioError);
			_stream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, sertError);
			Log.log('VideoMpeg::load '+ url, Log.METHODS);
		}
 
		private function sertError (event : SecurityErrorEvent) : void
		{
			Log.log('VideoMpeg::sertError',event, Log.CRIRICAL)
		}
 
		private function ioError (event : IOErrorEvent) : void
		{
			Log.log('VideoMpeg::ioError',event)
		}
 
		private function httpStatus (event : Event) : void
		{
			Log.log('VideoMpeg::httpStatus',event)
		}
 
		private function onProgress (event : ProgressEvent) : void
		{
			Log.log('onProgress' + _stream.bytesAvailable, Log.DATA);
 
			var byte : int;
			while (_stream.bytesAvailable > 0)
			{
				byte = _stream.readUnsignedByte();
				if (_write) _buffer.writeByte(byte);
				if (_markerDetection)
				{
					switch (byte)
					{
						case 0xD8:
							_write = true;
							_buffer = new ByteArray();
							_buffer.writeByte(0xFF);
							_buffer.writeByte(0xD8);
							break;
						case 0xD9:
							_write = false;
							_buffer.writeByte(0xD9);
							_loader.loadBytes(_buffer);
							break;
					}
				}
				_markerDetection = (byte == 0xFF);
			}
			if (_loader.width != 0 && _loader.height != 0 && !_isInit) {
				_isInit = true;
				dispatchEvent(new TrackEvent(TrackEvent.INIT));
			}
		}
 
		public function get video () : Loader
		{
			return _loader;
		}
 
		public function get video_width () : int {return  _loader.content ? _loader.content.width : 0;}
 
		public function get video_height () : int {return _loader.content ? _loader.content.height : 0;}
	}
}

Старый 04.08.2012, 13:41
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 2  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Видео, урл - для теста какое?

Старый 04.08.2012, 14:09
kyzi007 вне форума Посмотреть профиль Отправить личное сообщение для kyzi007 Найти все сообщения от kyzi007
  № 3  
Ответить с цитированием
kyzi007

Регистрация: Nov 2008
Сообщений: 78
http://wut911.dyndns.org:8111/stream

Старый 04.08.2012, 15:04
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А что такое ошибка 2032? Это что-то связанное с настройками безопасности?
Это загружаются картинки так из motion JPEG? Там же по-идее в файле должна быть записана длина, чтобы по одному байту не считывать.
Я формат наизусть не знаю, но в любом случае искал бы более гуманный способ загрузки.
__________________
Hell is the possibility of sanity

Старый 04.08.2012, 15:27
kyzi007 вне форума Посмотреть профиль Отправить личное сообщение для kyzi007 Найти все сообщения от kyzi007
  № 5  
Ответить с цитированием
kyzi007

Регистрация: Nov 2008
Сообщений: 78
Там с камер по другому транслировать не могут.
2032 - поток не найден. IO Error.
В консоли хромовской видно что доступ дал сбой (отменено!).


Последний раз редактировалось kyzi007; 04.08.2012 в 15:48.
Старый 05.08.2012, 12:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не, я имел в виду более гуманный способ - это найти то место где в файле указано размер картинки (длину в байтах) и byteArray.copyBytes() вместо того, чтобы по одному байту копировать, так, ну как минимум будет быстрее. Даже если такого в самом формате нет (в чем я сильно сомневаюсь), то прочитать по байту, а потом все за один раз скопировать - все равно лучше, т.как память под новый массив будет выделятся всего один раз вместо того, чтобы все время нарасчивать.

А ошибка возникает во врема чтения, или еще до того? Возможно, ради эксперимента есть смысл подождать немного и потом начать считывать? Ну и в конце концов, а кто выдает эту ошибку, URLStream или Loader? Может байты не правильно прочитаны и Loader не видит весь файл / там появляются какие-то артифакты?
__________________
Hell is the possibility of sanity

Старый 05.08.2012, 22:23
kyzi007 вне форума Посмотреть профиль Отправить личное сообщение для kyzi007 Найти все сообщения от kyzi007
  № 7  
Ответить с цитированием
kyzi007

Регистрация: Nov 2008
Сообщений: 78
Там консоль броузера говорит что "отменено" и красит красненьким запрос.
Выдает ошибку URLStream.

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

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

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


 


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


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