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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию NetStream.seek & appendBytes

Всем доброго время суток.
Гружу локальный flv и атачу его в нетстрим через appendBytes но ни как не могу перематывать видео. Получается только воспроизвести заново. Гугл изучил и перепробовал все до китайских ссылок. Уверен кто-то из Вас работал или хотя бы понимает в чем проблема. Привожу код и видеоролик во вложении для хороших людей которые хотят помочь.
Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.utils.ByteArray;
	import flash.media.Video;
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import flash.events.NetStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.NetStreamAppendBytesAction;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite {
 
 
		public function Main() {
 
 
			var _loader:URLLoader = new URLLoader();
				_loader.dataFormat = URLLoaderDataFormat.BINARY;
				_loader.addEventListener(Event.COMPLETE, onResultDownload);
				_loader.load(new URLRequest("c:\\1.flv"));
 
			stage.addEventListener(MouseEvent.MOUSE_DOWN, click );
		}
 
		private function click(eve:Event):void {
			ns.seek(3);
		}
 
		private var ns:NetStream;
		private var _client: Object = new Object();
		private var _bytes:ByteArray;
		private function onResultDownload(event:Event):void {
 
			var video:Video = new Video();
				addChild(video);
 
			var nc:NetConnection = new NetConnection();
				nc.connect(null);
 
			ns = new NetStream(nc);
			ns.client = _client;
 
			_client.onMetaData = metaDataHandler;
 
			video.attachNetStream(ns);
 
			ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
			ns.addEventListener(IOErrorEvent.IO_ERROR, function(event:Event) { trace(event) } );
			ns.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(event:Event) { trace(event) } );
 
			_bytes = event.target.data;
 
			ns.play(null);
 
			addChild(video);
 
			ns.appendBytesAction(NetStreamAppendBytesAction.END_SEQUENCE);
			ns.appendBytes(_bytes);
 
		}
 
		private function metaDataHandler(info:Object):void 
		{
			for ( var i in info) {
				trace(i+" >> "+info[i]);
			}
		}
 
		private function netStatusHandler(e:NetStatusEvent):void 
		{
 
			trace(e.info.code);
			switch (e.info.code) 
			{
                case "NetStream.Seek.InvalidTime" :
 
                    break;
			  	case "NetStream.Play.Stop" :
 
                    break;
				case "NetStream.Seek.Notify":
 
					ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
					ns.appendBytes(_bytes);
 
 
					break;
            }
		}
 
	}
 
}
Вложения
Тип файла: rar 1.rar (8.30 Мб, 26 просмотров)
__________________
return this...

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от okouser Посмотреть сообщение
У appendBytes, конечно, есть масса подводных камней.
Но к чему флаг RESET_BEGIN при перемотке?! Вот здесь и осуществляется перемотка в начало.
Используйте флаг RESET_SEEK.
Если использовать другую структуру тогда видео просто "зависает" а скорей всего просто останавливается
__________________
return this...

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Дело в том что я пытался и так поступить, но видео к примеру данное не давало метаданный keyframes. То-есть уже трабла еще до сего начатия.

Добавлено через 1 минуту
Я уже готов резать видео на куски, задача вообще была не тривиальная и в такой ступор ввела, аж дико если честно.

Добавлено через 2 минуты
+ по задаче мне нужно перемотка с рандомного места (то-есть оперделять место совсем не важно). Мне хоть как то объясните, а лучше покажите как перемотать и начать воспроизведение с любого места кроме начала при скармливании appendBytes
__________________
return this...

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от okouser Посмотреть сообщение
А не всегда их можно таким образом получить.
Поэтому для надежности нужно распарсить исходный байтовый массив на flv-теги.
Это как мне кажеться не имеет смысла для решения данной задачи, мне нужно просто воспроизвести с случайного места.

Добавлено через 40 секунд
Цитата:
Сообщение от okouser Посмотреть сообщение
Куда бы вы не перематывали, вам нужно определять место (в исходном массиве), куда вы перемотали.
Вот тут и нужно ручной парсинг тегов, чтобы найти тэг с временной меткой, наиболее близкой к перемотанному времени.
научите
__________________
return this...

Старый 21.08.2013, 21:11
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
я уверен, что в скором будущем столкнусь с подобными проблемами и чтобы не создавать похожую, просто вежливо попрошу здесь - если кто то знает хорошие ссылки, на создание хорошего плеера ( видео ), поделитесь пожалуйста! ( чтобы там и перемотка была и все ). Может статьи какие то.

Старый 21.08.2013, 23:55
Vasya Pupkin вне форума Посмотреть профиль Отправить личное сообщение для Vasya Pupkin Найти все сообщения от Vasya Pupkin
  № 6  
Ответить с цитированием
Vasya Pupkin

Регистрация: Dec 2011
Сообщений: 17
А зачем грузить из байтмассива если можно тупо просто грузить. Если файл локальный он быстро загрузится и как бы будет доступна перемотка по всему фильму. А если из инета надо грузить видео так там я так понимаю без серверных приблуд типа FMS или http dinamic hren' не обойтись .

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Vasya Pupkin Посмотреть сообщение
А зачем грузить из байтмассива если можно тупо просто грузить. Если файл локальный он быстро загрузится и как бы будет доступна перемотка по всему фильму. А если из инета надо грузить видео так там я так понимаю без серверных приблуд типа FMS или http dinamic hren' не обойтись .
Тут несколько не так. Задача стоит в том что мы грузим удалённый видеофайл через URLLoader байтарей, потом его шифруем ( добавляем пару байт в начало файла ( защита лёгкая но не даст воспроизводить файл из другого плеера )) после чего полученный зашифрованный байтеррей сохраняем на устройство пользователя с названием file.dat. И теперь загруженное видео доступно для просмотра только через специально декодируемый плеер. Все остальные будут ругаться на некорректный файл.

Добавлено через 5 минут
Подкиньте ссылку на побайтовый парсинг видео файлов
__________________
return this...

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Нашел порезчик флв https://code.google.com/p/flvslicer/ который указываешь с какой милисек по какую обрезать. Но чет он не хочет работать как надо. Буду дальше юзать.
__________________
return this...

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

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

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


 


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


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