Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не работает видео через NetStream.appendBytes() (http://www.flasher.ru/forum/showthread.php?t=215819)

djken 14.02.2023 16:11

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

Код AS3:

_stream.play(null);
_stream.appendBytes(_mainLoader.data);

Но ничего не происходит. Вчера весь день копался, так и не понял что не так... :wacko: После многих безуспешных попыток правки кода решил попробовать скормить FLV файл - и вдруг заработал!.. Т.е. с MP4 файлами не хочет, а с FLV работает :confused: После чего наткнулся на один пост 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
Кто знает, как победить? Буду безмерно благодарен за любую помощь в вопросе!

Bletraut 15.02.2023 14:05

Судя по документации 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. И сам скрипт.

djken 15.02.2023 17:23

Bletraut, спасибо огромное, на досуге поразбираюсь с этим решением!

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


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

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