Такие чудеса - во всех броузерах кроме хрома работает.
В хроме - возвращает 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;}
}
}