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

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

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

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question Не работает видео через NetStream.appendBytes()

Написал свой класс загрузчик на основе URLStream, который грузит картинки, видео, json файлы, определяя их тип по байтовым сигнатурам + кэширует файлы. При достижении полной загрузки, отдает байтовый массив ByteArray. Все работает, кроме видео. Передаю полностью загруженный массив в метод appendBytes экземпляра класса NetStream.

Код AS3:
_stream.play(null);
_stream.appendBytes(_mainLoader.data);
Но ничего не происходит. Вчера весь день копался, так и не понял что не так... После многих безуспешных попыток правки кода решил попробовать скормить FLV файл - и вдруг заработал!.. Т.е. с MP4 файлами не хочет, а с FLV работает После чего наткнулся на один пост Can`t play mp4 byte array as3 , где пишут, что:

Цитата:
It is not that easy.
In very general (not very academic) terms you first need to trick Flash into thinking that it plays FLV by creating an FLV file header. Only after that you can start filling video buffer with video data. Actually this aspect is vaguely described in the appenBytes() documentation
Кто знает, как победить? Буду безмерно благодарен за любую помощь в вопросе!
__________________
кто не отвечает, того garbage collector забирает

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Судя по документации NetStream должен без проблем воспроизводить MPEG-4 формат, в доках сказано

Цитата:
Adobe AIR and Flash Player 9.0.115.0 and later versions support files derived from the standard MPEG-4 container format. These files include F4V, MP4, M4A, MOV, MP4V, 3GP, and 3G2 if they contain H.264 video, HEAAC v2 encoded audio, or both. H.264 delivers higher quality video at lower bit rates when compared to the same encoding profile in Sorenson or On2. AAC is a standard audio format defined in the MPEG-4 video standard. HE-AAC v2 is an extension of AAC that uses Spectral Band Replication (SBR) and Parametric Stereo (PS) techniques to increase coding efficiency at low bit rates.
...
Specify the stream name (in the "samples" directory) as a string with the prefix mp4: The prefix indicates to the server that the file contains H.264-encoded video and AAC-encoded audio within the MPEG-4 Part 14 container format. If the file on the server has a file extension, specify it.
Код AS3:
ns.play("mp4:samples/myvideo.mov");
Но Generation Mode поддерживает только flv. Есть такое решение на stackoverflow. И сам скрипт.
__________________
Я заклинаю вас действовать иначе.


Последний раз редактировалось Bletraut; 15.02.2023 в 14:17.
Старый 15.02.2023, 17:23
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 3  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Bletraut, спасибо огромное, на досуге поразбираюсь с этим решением!

Да, как понял appendBytes - это некий анализатор именно для FLV. Поэтому сделал пока без него - загружаю MP4 стандартным способом по ссылке из кэша либо из сети.. Но у такого способа есть небольшие неудобства - например, нет события прогресса загрузки видео... Пока вижу вариант по ENTER_FRAME отслеживать количество загруженных NetStream.bytesLoaded. Поэтому и написал свой общий загрузчик для разного медиаконтента, который закачивает полностью файл, диспатчит все нужные события и отдает массив байт - не думал что с видео вот так получится...
__________________
кто не отвечает, того garbage collector забирает

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

Теги
appendBytes

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

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


 


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


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