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

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

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

Регистрация: Mar 2009
Сообщений: 36
Отправить сообщение для nachalnik с помощью Skype™
По умолчанию как узнать длительность по времени flv файла?

день добрый.
я совсем новичок в as3 . пробую написать flv-проигрыватель. никак не могу понять как мне узнать данные о длине видеофайла. нашел в хелпе в adobe flash cs3 professional пример, создал пустой fla файл и прописал для него базовый класс, куда добавил код из примера , который по их мнению должен вывести всю инфу.

Код AS3:
package
{
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import flash.events.NetStatusEvent;
	import flash.media.Video;
	import flash.display.Sprite;
 
	public class test extends Sprite
	{
		public function test()
		{
// из примера
			var nc:NetConnection = new NetConnection();
			nc.connect(null);
			var ns:NetStream = new NetStream(nc);
			ns.client = this;
 
			ns.play('video.flv');
			var vid:Video = new Video();
			vid.attachNetStream(ns);
			addChild(vid);
// <<< из примера
		}
 
// из примера
		function onMetaData(infoObject:Object):void
		{
			var key:String;
			for (key in infoObject)
			{
				trace(key + ": " + infoObject[key]);
			}
		}
// <<< из примера
	}
}
но он не работает и ошибок никаких не выдает. и вообще функция onMetaData не отрабоатывает. только видео проигрывается. есть может где нормальные рабочие примеры, а не левый хелп?

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

Регистрация: Nov 2008
Адрес: Казахстан
Сообщений: 204
Отправить сообщение для Fillini с помощью ICQ
Код AS3:
private var FileSrc:String = "Video.flv";
private var videoStream:NetStream;
private var nc:NetConnection;
 
private var customClient:Object = new Object();
 
private var videoTotalSec:uint;
 
public function setFlv(src:String):void
		{
			FileSrc = src;
 
			removeEventListener(Event.ADDED_TO_STAGE, onAdd);
 
 
			nc = new NetConnection();
			nc.connect(null);
			videoStream = new NetStream(nc);
			videoStream.client = customClient;
			customClient.onMetaData = onMetaDataHandler; 
 
 
 
			//trace(this.playPause);			
			this.videoObject.attachNetStream(videoStream);			
			videoStream.play(FileSrc);
			videoStream.pause();
}
 
private function onMetaDataHandler(metadata:Object):void
		{
			trace("MetaData length: " + metadata.duration);
			videoTotalSec = metadata.duration;
		}
пользуйтесь ))

Старый 12.03.2009, 13:46
nachalnik вне форума Посмотреть профиль Отправить личное сообщение для nachalnik Найти все сообщения от nachalnik
  № 3  
Ответить с цитированием
nachalnik
 
Аватар для nachalnik

Регистрация: Mar 2009
Сообщений: 36
Отправить сообщение для nachalnik с помощью Skype™
Спасибо Fillini за быстрый ответ. Перебросил бебе ваш код, закомментировал только строку removeEventListener(Event.ADDED_TO_STAGE, onAdd)- вроде лишняя. Но по прежнему в окно output ничего не выводится. и ошибок тоже нет.

Старый 12.03.2009, 13:49
Fillini вне форума Посмотреть профиль Отправить личное сообщение для Fillini Найти все сообщения от Fillini
  № 4  
Ответить с цитированием
Fillini
 
Аватар для Fillini

Регистрация: Nov 2008
Адрес: Казахстан
Сообщений: 204
Отправить сообщение для Fillini с помощью ICQ
а видео проигрывает?

Старый 12.03.2009, 13:52
nachalnik вне форума Посмотреть профиль Отправить личное сообщение для nachalnik Найти все сообщения от nachalnik
  № 5  
Ответить с цитированием
nachalnik
 
Аватар для nachalnik

Регистрация: Mar 2009
Сообщений: 36
Отправить сообщение для nachalnik с помощью Skype™
видео проигрывает

Старый 12.03.2009, 13:53
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 6  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
у меня примерно такой же код, что вы привели первым работает.


Код:
		function open (source:String) {
			videoURL = source;
            connection = new NetConnection();
            connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            connection.connect(null);
		}
        private function netStatusHandler(event:NetStatusEvent):void {
			//trace ("net status code: "+event.info.code);
            switch (event.info.code) {
				case "NetStream.Play.Stop":
					isPlay = false;
				break;
                case "NetConnection.Connect.Success":
                    connectStream();
                break;
                case "NetStream.Play.StreamNotFound":
                    trace("Unable to locate video: " + videoURL);
                break;
            }
        }

        private function connectStream():void {
            stream = new NetStream(connection);
            stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
			//stream.addEventListener(flash.net., metaDataHandler);
            stream.play(videoURL);
			//stream.client = new MetaDataClient();
			stream.client = this;
            //addChild(video);
			video = new Video();
			video.attachNetStream(stream);
			video.addEventListener (Event.ENTER_FRAME, videoEnterFrameHandler);
			addChildAt(video, 0); 
			//video.width = 400; video.height = 300;
			trace ("video.width=" + video.width + " video.height=" + video.height);
			video.width = Main.cur.realWidth; video.height = Main.cur.realHeight;
			control.x = (video.width - control.width) / 2;
			control.y = video.height - control.height - 10;
			isPlay = true;
        }

		public function onMetaData(info:Object):void {
			//trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
			duration = info.duration;
		}

Старый 12.03.2009, 14:15
nachalnik вне форума Посмотреть профиль Отправить личное сообщение для nachalnik Найти все сообщения от nachalnik
  № 7  
Ответить с цитированием
nachalnik
 
Аватар для nachalnik

Регистрация: Mar 2009
Сообщений: 36
Отправить сообщение для nachalnik с помощью Skype™
попробовал ваш код под себя переписать , но только видео проигрывается.
у меня получился вот такой код базового класса. может есть какие недоделки?
Код AS3:
package
{
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import flash.events.NetStatusEvent;
	import flash.media.Video;
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class test extends Sprite
	{
		private var FileSrc:String = "Video.flv";
		private var videoStream:NetStream;
		private var nc:NetConnection;
		private var customClient:Object = new Object();
		private var videoTotalSec:uint;
		private var videoObject:Video = new Video();
 
		public function test()
		{
			this.setFlv('video.flv');
		}
 
		public function setFlv(src:String):void
		{
			FileSrc = src;
 
			nc = new NetConnection();
			nc.connect(null);
			videoStream = new NetStream(nc);
			videoStream.client = customClient;
			customClient.onMetaData = onMetaDataHandler; 
 
			addChild(videoObject);
			videoObject.attachNetStream(videoStream);			
			videoStream.play(FileSrc);
			//videoStream.pause();
		}
 
		private function onMetaDataHandler(metadata:Object):void
		{
			trace("MetaData length: " + metadata.duration);
			videoTotalSec = metadata.duration;
		}
 
	}
}

Старый 12.03.2009, 14:23
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А в видеофайле метадата вообще есть?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 12.03.2009, 14:31
Jex вне форума Посмотреть профиль Отправить личное сообщение для Jex Найти все сообщения от Jex
  № 9  
Ответить с цитированием
Jex

Регистрация: Nov 2007
Сообщений: 61
Для кадра

Код AS3:
var nc:NetConnection = new NetConnection();
nc.connect(null);
var movie:NetStream = new NetStream(nc);
movie.play("movie.flv");
var vid:Video = new Video();
vid.attachNetStream(movie);
 
addChild(vid);
movie.client = this;
 
function onMetaData(infoObject:Object):void
{
	var key:String;
	for (key in infoObject) {
    trace(key + ": " + infoObject[key])}
 
	trace (infoObject.duration);
}

Старый 12.03.2009, 14:33
nachalnik вне форума Посмотреть профиль Отправить личное сообщение для nachalnik Найти все сообщения от nachalnik
  № 10  
Ответить с цитированием
nachalnik
 
Аватар для nachalnik

Регистрация: Mar 2009
Сообщений: 36
Отправить сообщение для nachalnik с помощью Skype™
я думал что в каждом видеофайле они полюбому быть должны. щас глянул это видео на каком-то готовом проигрывателе , а там нет бегунка на полосе времени клипа и время указано в 00:00-- получается что нет метаданных по которым, как я понимаю можно построить бегунок на шкале времени и определтить само время

Добавлено через 2 минуты
Ребята , спасибо всем за помощь . действительно метаданных не было в файлах, которые воспроизводил. скачал новых --- и пришло счастье)))) поднял я шум ни из-за чего. все работает!!!

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

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

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


 


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


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