![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2008
Сообщений: 29
|
Здавствуйте!
Появился наболевший вопрос. Я PHP програмист (в АС пока относительно ламер). Постала задача сделать плеер, но чтобы при открытии страницы с ним не отображался черный екран, а один (или несколько, в стиле слайдшоу) наилучших по качеству кадров (тоесть опорных (ключевых)) формата FLV. Была мысль вытянуть опорные кадры средствами DirectShow, но такого модуля под ПХП да ещё и под линукс я не нашел. Остается только 2 варианта: 1. Средствами ПХП давать запрос AS, и чтобы тот возвращал 1 (или несколько) изображений опорных кадров. 2. AS сам при загрузке вытягивал из видео 1 (или несколько) опорных кадров и делал слайдшоу. Вопросы: 1. Как, или каким класом, из FLV формата можно выдрать опорный кадр? 2. Сужиствуют ли вообще в FLV формате опорные кадры? (если нет, тогда вопрос вообще теряет смысл). 3. Может кто знает, возможно ли на одном ПХП такое зделать? P.S. Сколько не роюсь в инете по поводу "Описание FLV формата" или "Работа с FLV форматом" - нахожу один маразм, типа конвертеры, плееры и т.д. ![]() Заранее пасибо! ![]() Последний раз редактировалось UnVisible; 23.03.2008 в 19:16. |
|
|||||
|
не решение, только предположения по теме:
ключевые кадры есть, NetStream.seek(offset:Number) гонит видео в кейфрейм, ближайший к offset (в секундах); стало быть есть возможность 'сфотографировать' эти кейфреймы - BitmapData.draw(..), правда для этого надо дождаться загрузки всего потока показать эти скриншоты в самой флешке, понятно, не вопрос.. вернуть сриншоты серверу в плеере ниже 9-ки не получиться.. в 9-ке (AS3) есть возможность послать картинку как ByteArray, декодеров под разные форматы понаписано достаточно, легко нагуглишь.. как это все можно (и можно ли вообще) в ПХП не знаю |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 29
|
Огромное спасибо! =)
Теперь хоть знаю в какую сторону копать! ![]() |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Цитата:
![]() Можно и ниже 9-ки передать - начиная с ФП поддерживающего битмапдату |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 29
|
Появилась проблема. Поставил Флеш 9 АС3. Загрузка видео и переход на определенный кадр работает. А вот при попытке вывести его через БитМап дает ошибку. Что я не так делаю?
Вот код скрипта: import flash.display.Bitmap;
import flash.display.BitmapData;
var conteiner:MovieClip = _root.createEmptyMovieClip("conteiner", this.getNextHighestDepth());
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
stream_ns.play("d:/clip.flv");
stream_ns.pause(true);
stream_ns.seek(78);
var copy_screen:BitmapData = new BitmapData(200,200);
copy_screen.draw(stream_ns);
var bit:Bitmap = new Bitmap(copy_screen);
this.addChild(bit);
The class or interface 'flash.display.Bitmap' could not be loaded. var bit:Bitmap = new Bitmap(copy_screen); Total ActionScript Errors: 1 Reported Errors: 1 |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 29
|
Ну вот это же работает (взято с примера):
import flash.display.Bitmap; import flash.display.BitmapData; import flash.text.TextField; var tf:TextField = new TextField(); tf.text = "bitmap text"; var myBitmapData:BitmapData = new BitmapData(80, 20); myBitmapData.draw(tf); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp); ![]() Последний раз редактировалось UnVisible; 26.03.2008 в 19:05. |
|
|||||
|
Modus ponens
|
Пакет flash.display в АС2 содержит один-единственный класс - BitmapData, а в АС3 их там куча, Bitmap в том числе.
Зайти в Publish Settings - Flash выставить там плеер 9 и АС3 в настройках. Ну и тему запостить в раздел про АС3 %) ЗЫ. Про Ю-туб я спрашивал. Ну, решение... решение в том, что ФЛВ можно начинать буферить и проигрывать с любой позиции в файле. Если сервер умеет такое. Но правда никаких приемлимых результатов с этим я пока не добился =( Да, и еще, сразу скажу, пока не было события от NetStream'a NetStream.Buffer.Flush заносить чего-то в битмапдату нет смысла. ЗЫЫ. В примере вы не используете класс Bitmap, само по себе выражение import еще не значит, что компилятор клас добавит в проект, его нужно еще где-нибудь в коде использовать. Иначе импорты типа import flash.display.*; работали бы очень плохо.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 27.03.2008 в 03:12. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 29
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|