PDA

Просмотр полной версии : Виснет загруженое видео - помогите разобраться..


Killer_13
08.12.2009, 01:42
Вот уже много времени сушу голову, почему у меня виснет видео при загрузке, иногда проигрывается 5, иногда 10, иногд вообще на первом кадре останавливается, пробовал разными способами: Кодировал разными кодеками, пробовал на разных ПС и на разных Маках:

Вот из справки Адобе!

Загрузка видеофайлов
Загрузка видеофайлов с помощью классов NetStream и NetConnection выполняется в несколько этапов.
1 Создайте новый объект NetConnection. Если необходимо подключиться к локальному видеофайлу или
файлу, не использующему сервер, такой как Adobe Flash Media Server 2, передайте значение null методу
connect() для воспроизведения видеофайлов в HTTP-адреса или локального диска. При подключении к
серверу установите для этого параметра URI-адрес приложения, в котором содержится видеофайл на
сервере.
var nc:NetConnection = new NetConnection();
nc.connect(null);
2 Создайте объект NetStream, который принимает в качестве параметра объект NetConnection, и укажите
видеофайл для загрузки. Следующий код подключает объект NetStream к указанному экземпляру
NetConnection и загружает видеофайл с именем video.mp4 в тот же каталог, где находится SWF-файл.

var ns:NetStream = new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video.mp4");
function asyncErrorHandler(event:AsyncErrorEvent):void
{
// ignore error
}
3 Создайте новый объект Video и присоедините к нему созданный ранее объект NetStream с помощью метода
attachNetStream() класса Video. Затем этот объект Video можно добавить в список отображения с
помощью метода addChild(), как показано в следующем примере.
var vid:Video = new Video();
vid.attachNetStream(ns);
addChild(vid);
По мере выполнения этого кода проигрыватель

вот мой код
package {

import flash.net.NetStream;
import flash.net.NetConnection;
import flash.events.*;
import flash.display.*;
import flash.media.Video;

public class VideoLoader extends Sprite {

public var vid:Video = new Video();

public function VideoLoader (){

var nc:NetConnection = new NetConnection ();
nc.connect(null);

var ns:NetStream = new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("girl.flv");

function asyncErrorHandler(event:AsyncErrorEvent):void{
// ignore error
}

vid.attachNetStream(ns);
vid.x = 70;
vid.y = 120;
addChild(vid);
}

}

}

в главном main.as
package {

import flash.display.*;
import flash.events.*;
import VideoLoader;


public class main extends Sprite{

public var v:VideoLoader = new VideoLoader;

public function main(){

this.addChild(cVideo);
cVideo.addChild(v.vid);
}

}
}
}

Сборник рецептов Лотта, Шалла, Питерса параграф 16.1 гласит делать вот так.

package {

import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.media.Video;

public class VideoLoader extends Sprite {

public var vid:Video;

public function VideoLoader (){

var nc:NetConnection = new NetConnection ();
nc.connect(null);

var ns:NetStream = new NetStream(nc);
var video:Video = new Video();
addChild(vid);
vid.attachNetStream(ns);
ns.play("Soviet.flv");
trace("vid");
vid.x = 80;
vid.y = 20;
vid = video;

}

}

}

Подскажите, кто сталкивался с подобным!

Что не так..
Спасибо большое!!!

vitalFriend
08.12.2009, 12:57
попробуй использовать кодировку для файлов flv, а для проигрывания компонент FLVPlayback - очень просто и удобно

Killer_13
08.12.2009, 12:59
кодировку эт как понять, не понямаю - можно поподробней...
Компонент для проигрывания мне не нужен... мне нужно просто видео, без кнопок управления.
Спасибо.

vitalFriend
09.12.2009, 13:37
Имел ввиду использовать файлы с расширением flv (например Soviet.flv) и для проигрывания этих фалов компонент FLVPlayback. В параметрах можно указать skin -> None - и не будет никаких кнопок управления - делайте свои или не делайте