kyzi007
21.03.2010, 01:12
Вопрос - КАК??????
Сервер отдает как положенно (http://video.flv?start=12002)
Флоплеер играет - с серверной частью все ок!
Качаю с ключегого кадра, запускаю, картинка появляется и дергается(проигрывается секунду) и все...
Загрузка видео продолжается, буффер заполнен - запустить проигрыванеи никак не получается!!!
Зы - все 14 страниц поиска по форуму просмотрела...
package ru.kyzi007.media {
import flash.display.MovieClip;
import flash.media.SoundTransform;
import flash.events.AsyncErrorEvent;
import flash.events.Event;
import flash.events.SecurityErrorEvent;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.display.Sprite;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
public class myVideoNew extends EventDispatcher implements myMedia {
public var _is_init : Boolean = false;
public var is_play : Boolean = false;
private var _duration : Number = 0;
public var video : Video = new Video();
public static const CLOSE : String = "CLOSE";
public static const INIT : String = "INIT";
public static const ERROR : String = "ERROR";
private var _stream : NetStream;
private var _connection : NetConnection;
private var _url : String;
public var base_url : * = null;
public var _closed : Boolean;
private var _position : *;
public var _rewind_url : String;
private var metaData : Object = null;
private var timer : MovieClip = new MovieClip();
public function myVideoNew() {
trace(' myVideoNew');
}
public function load(url : String, rewind_url : String = '') : void {
trace(' myVideoNew load');
if(_is_init) {
close();
}
_rewind_url = rewind_url;
_closed = false;
_url = url;
if(_connection == null) {
_connection = new NetConnection();
_connection.addEventListener(NetStatusEvent.NET_STATUS, connectFun);
_connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errFun);
}
_connection.connect(null);
}
public function play(second : Number) : void {
_position = second;
if(closed) {
_closed = false;
load(_url);
addEventListener(INIT, initSecond);
return;
} else if(!is_init) {
addEventListener(INIT, initSecond);
return;
}
_stream.pause();
_stream.seek(_position / 1000);
_stream.resume();
}
private function connectStream() : void {
if(_stream == null)_stream = new NetStream(_connection);
_stream.bufferTime = 3;
_stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errFun);
_stream.addEventListener(NetStatusEvent.NET_STATUS, connectFun);
_stream.addEventListener('ioError', errFun);
_stream.client = new CustomClient(metaData);
_stream.client.addEventListener('ondata', getMeta);
video.attachNetStream(_stream);
if(_rewind_url != '' && metaData != null) {
_stream.play(_rewind_url);
getMeta(null);
} else if(_rewind_url != '' && metaData == null) {
_stream.client.addEventListener('ondata', playAgin);
_stream.play(_url);
} else {
_stream.play(_url);
}
_stream.pause();
}
public function connectFun(e : NetStatusEvent) : void {
trace(e.info.code);
switch (e.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Stream not found: " + _url);
dispatchEvent(new Event(ERROR));
break;
}
};
public function setVolum(value : Number) : void {
var transform : SoundTransform = new SoundTransform();
transform.volume = value;
_stream.soundTransform = transform;
}
private function initSecond(event : String) : void {
removeEventListener(INIT, initSecond);
play(_position);
}
public function close() : void {
if(_closed) return;
if(_stream == null) return;
_closed = true;
_stream.close();
}
private function errFun(e : ) : void {
dispatchEvent(new Event(ERROR));
}
private function playAgin(e : Event) : void {
metaData = _stream.client.meta;
load(_url, _rewind_url);
}
private function getMeta(e : Event) : void {
trace('init');
_is_init = true;
if(metaData == null) metaData = _stream.client.meta;
_duration = e.target['duration'];
_stream.client.removeEventListener('ondata', getMeta);
dispatchEvent(new Event(INIT));
}
public function pause() : void {
_stream.pause();
}
public function resume() : void {
_stream.resume();
}
public function get play_position() : Number {
return _stream.time 1000;
}
public function get duration() : Number {
return _duration 1000;
}
public function set duration(value : Number) : void {
}
public function get size() : Number {
return _stream.bytesTotal;
}
public function get bytesTotal() : Number {
return _stream.bytesTotal;
}
public function get bytesLoaded() : Number {
return _stream.bytesLoaded;
}
public function get loading_persent() : Number {
return _stream.bytesLoaded / _stream.bytesTotal;
}
public function get is_init() : Boolean {
return _is_init;
}
public function get closed() : Boolean {
return _closed;
}
}
}
import flash.events.EventDispatcher;
import flash.events.Event;
class CustomClient extends EventDispatcher {
public var duration : Number = 0;
public var meta : Object;
public function CustomClient(info : Object = null) {
}
public function onMetaData(info : Object) : void {
trace('META');
duration = info['duration'];
meta = info;
trace(info.keyframes.length);
for (var i : String in info.keyframes) {
trace(i + '=' + info[i]);
}
dispatchEvent(new Event('ondata'));
}
}
package {
import flash.events.Event;
import flash.events.MouseEvent;
import ru.kyzi007.media.myVideoNew;
import flash.display.MovieClip;
public class Test extends MovieClip
{
private var videoPath:String = "http://91.213.196.12/flv/russiaru.flv?start=805069"
private var media:myVideoNew = new myVideoNew();
public function Test() {
media.load(videoPath);
stage.addEventListener(MouseEvent.CLICK, onInit);
addChild(media.video);
}
private function onInit(event : Event) : void {
media.play(0);
}
}
}
Сервер отдает как положенно (http://video.flv?start=12002)
Флоплеер играет - с серверной частью все ок!
Качаю с ключегого кадра, запускаю, картинка появляется и дергается(проигрывается секунду) и все...
Загрузка видео продолжается, буффер заполнен - запустить проигрыванеи никак не получается!!!
Зы - все 14 страниц поиска по форуму просмотрела...
package ru.kyzi007.media {
import flash.display.MovieClip;
import flash.media.SoundTransform;
import flash.events.AsyncErrorEvent;
import flash.events.Event;
import flash.events.SecurityErrorEvent;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.display.Sprite;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
public class myVideoNew extends EventDispatcher implements myMedia {
public var _is_init : Boolean = false;
public var is_play : Boolean = false;
private var _duration : Number = 0;
public var video : Video = new Video();
public static const CLOSE : String = "CLOSE";
public static const INIT : String = "INIT";
public static const ERROR : String = "ERROR";
private var _stream : NetStream;
private var _connection : NetConnection;
private var _url : String;
public var base_url : * = null;
public var _closed : Boolean;
private var _position : *;
public var _rewind_url : String;
private var metaData : Object = null;
private var timer : MovieClip = new MovieClip();
public function myVideoNew() {
trace(' myVideoNew');
}
public function load(url : String, rewind_url : String = '') : void {
trace(' myVideoNew load');
if(_is_init) {
close();
}
_rewind_url = rewind_url;
_closed = false;
_url = url;
if(_connection == null) {
_connection = new NetConnection();
_connection.addEventListener(NetStatusEvent.NET_STATUS, connectFun);
_connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errFun);
}
_connection.connect(null);
}
public function play(second : Number) : void {
_position = second;
if(closed) {
_closed = false;
load(_url);
addEventListener(INIT, initSecond);
return;
} else if(!is_init) {
addEventListener(INIT, initSecond);
return;
}
_stream.pause();
_stream.seek(_position / 1000);
_stream.resume();
}
private function connectStream() : void {
if(_stream == null)_stream = new NetStream(_connection);
_stream.bufferTime = 3;
_stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errFun);
_stream.addEventListener(NetStatusEvent.NET_STATUS, connectFun);
_stream.addEventListener('ioError', errFun);
_stream.client = new CustomClient(metaData);
_stream.client.addEventListener('ondata', getMeta);
video.attachNetStream(_stream);
if(_rewind_url != '' && metaData != null) {
_stream.play(_rewind_url);
getMeta(null);
} else if(_rewind_url != '' && metaData == null) {
_stream.client.addEventListener('ondata', playAgin);
_stream.play(_url);
} else {
_stream.play(_url);
}
_stream.pause();
}
public function connectFun(e : NetStatusEvent) : void {
trace(e.info.code);
switch (e.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Stream not found: " + _url);
dispatchEvent(new Event(ERROR));
break;
}
};
public function setVolum(value : Number) : void {
var transform : SoundTransform = new SoundTransform();
transform.volume = value;
_stream.soundTransform = transform;
}
private function initSecond(event : String) : void {
removeEventListener(INIT, initSecond);
play(_position);
}
public function close() : void {
if(_closed) return;
if(_stream == null) return;
_closed = true;
_stream.close();
}
private function errFun(e : ) : void {
dispatchEvent(new Event(ERROR));
}
private function playAgin(e : Event) : void {
metaData = _stream.client.meta;
load(_url, _rewind_url);
}
private function getMeta(e : Event) : void {
trace('init');
_is_init = true;
if(metaData == null) metaData = _stream.client.meta;
_duration = e.target['duration'];
_stream.client.removeEventListener('ondata', getMeta);
dispatchEvent(new Event(INIT));
}
public function pause() : void {
_stream.pause();
}
public function resume() : void {
_stream.resume();
}
public function get play_position() : Number {
return _stream.time 1000;
}
public function get duration() : Number {
return _duration 1000;
}
public function set duration(value : Number) : void {
}
public function get size() : Number {
return _stream.bytesTotal;
}
public function get bytesTotal() : Number {
return _stream.bytesTotal;
}
public function get bytesLoaded() : Number {
return _stream.bytesLoaded;
}
public function get loading_persent() : Number {
return _stream.bytesLoaded / _stream.bytesTotal;
}
public function get is_init() : Boolean {
return _is_init;
}
public function get closed() : Boolean {
return _closed;
}
}
}
import flash.events.EventDispatcher;
import flash.events.Event;
class CustomClient extends EventDispatcher {
public var duration : Number = 0;
public var meta : Object;
public function CustomClient(info : Object = null) {
}
public function onMetaData(info : Object) : void {
trace('META');
duration = info['duration'];
meta = info;
trace(info.keyframes.length);
for (var i : String in info.keyframes) {
trace(i + '=' + info[i]);
}
dispatchEvent(new Event('ondata'));
}
}
package {
import flash.events.Event;
import flash.events.MouseEvent;
import ru.kyzi007.media.myVideoNew;
import flash.display.MovieClip;
public class Test extends MovieClip
{
private var videoPath:String = "http://91.213.196.12/flv/russiaru.flv?start=805069"
private var media:myVideoNew = new myVideoNew();
public function Test() {
media.load(videoPath);
stage.addEventListener(MouseEvent.CLICK, onInit);
addChild(media.video);
}
private function onInit(event : Event) : void {
media.play(0);
}
}
}