Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Отобразить первый кадр flv (http://www.flasher.ru/forum/showthread.php?t=119001)

Division 09.12.2008 20:06

Отобразить первый кадр flv
 
Поиском пользовался, вроде обсуждалось, но ответа так и не нашёл.
Нужно отобразить первый кадр видео.
Делаю так:
Код AS1/AS2:

        var nc:NetConnection = new NetConnection();
        nc.connect(null);
        var ns:NetStream = new NetStream(nc);
        _root.video.attachVideo(ns);
        trace(_root.video);
 
        ns.play("../data/video/"+_root["filename"], 0, 0);
        ns.seek(1);
        ns.pause();

Работает не совсем корректно, время от времени ничего не отображается.
Где можно почитать как это правильно делается?
PS с видео до этого не работал

scarbo 09.12.2008 20:29

А может вернее извлечь из видео кадр и его как фотку грузить.

Division 09.12.2008 20:32

scarbo, покажешь пример с реализацией?
Можно долго рассуждать что вернее (: Мне бы или рабочий код, или ссылку на мануал...

scarbo 09.12.2008 20:42

Пример(если правильно понял)видео
А код,что такого-то - грузишь фотку,при щелчке на плэй,запускаешь видео...?
Или тебе нужен код для видео плеера,отпишись по точнее плиз

Division 10.12.2008 11:16

Ну я же в первом посте написал (: Мне нужно имея FLV файл отобразить его первый кадр. Я не хочу делать отдельные картинки, так как видео загружается пользователем в админке, и ему будет лень делать отдельные картинки для предпросмотра.
UPD: Если кто знает, поделитесь плиз. Проект сегодня сдавать, не хотелось бы какой-то изврат придумывать.

chingachgoog 10.12.2008 15:14

У видео НЕТ КАДРОВ в понятии флеша. Есть время. Но флеш может переходить по времени с точностью до секунды, а при частоте видео 25-30, это может быть неприемлемо. Лучший выход - отредактировать видео, чтобы первые секунды стояла статичная картинка - тогда всегда на нее попадешь.

Division 10.12.2008 15:22

Цитата:

тогда всегда на нее попадешь
Это я как раз и хочу узнать. Как мне туда попасть? (: Пускай, не на первый кадр, а на первую секунду, без разницы. Лишь бы показать какую-то картинку из видео. Код из первого поста работает не совсем корректно. Как это сделать?

chingachgoog 10.12.2008 15:50

Цитата:

Сообщение от Division (Сообщение 782800)
Это я как раз и хочу узнать. Как мне туда попасть? (: Пускай, не на первый кадр, а на первую секунду, без разницы. Лишь бы показать какую-то картинку из видео. Код из первого поста работает не совсем корректно. Как это сделать?

Так уже у вас написано как:

Код:

seek(numberOfSeconds:Number)
По-другому никак. Для большей надежности можно задать время буфера больше секунды (по умолчанию 0.1 сек):

Код:

setBufferTime(numberOfSeconds:Number)

Division 10.12.2008 16:24

chingachgoog, спасибо.
Но как-то всё это дело тормозит. У меня будет несколько превьюшек одновременно на странице(думаю до 12). И когда все они грузятся, браузер сильно тормозит. Отсюда возникает вопрос, делают ли так вообще? Может, если много провьюшек, правильней было бы сделать, как говорил scarbo, то есть просить юзера в админке грузить картинку для предпросмотра и отоображать её?

chingachgoog 11.12.2008 13:57

Не знаю как делают, но я бы попробывал так, если тормозит: грузил бы в один поток видео ПО-ОЧЕРЕДИ. Как только первая секунда загружена и отображена - снимаем скриншот и вешаем битмапу. Далее грузим в тот же поток следующее видео...

iNils 11.12.2008 14:09

Цитата:

Сообщение от chingachgoog (Сообщение 782798)
У видео НЕТ КАДРОВ в понятии флеша. Есть время. Но флеш может переходить по времени с точностью до секунды, а при частоте видео 25-30, это может быть неприемлемо.

У флв есть ключевые кадры. Все остальные кадры строятся за счет изменения ключевого кадра. Поэтому, чтобы отобразить произвольный кадр, надо перейти на кейфрейм перед ним и проиграть все кадры до нужного.
А переход действительно осуществляется по времени, но опять же согласно времени ключевого кадра. Их соотношения можно посмотреть в метадате.

chingachgoog 11.12.2008 17:24

Цитата:

Сообщение от iNils (Сообщение 783005)
А переход действительно осуществляется по времени, но опять же согласно времени ключевого кадра. Их соотношения можно посмотреть в метадате.

А при чем тут ключевые кадры видео? (понятно, что в видео есть ключевые кадры - но там это совсем другое, нежели во флеше) Мне кажется, что дае попади мы между ключевыми кадрами - мы будем видеть картинку целиком.
Да и какая разница, что мы будем знать время нужного ключевого кадра? Все упирается в минимальное время, на которое разрешает перейти флеш - а это целая секунда! Это очень много - когда за полсекунды сменяется до 15 кадров (не путать с кейфреймами).

iNils 11.12.2008 18:06

Цитата:

Сообщение от chingachgoog (Сообщение 783062)
Мне кажется, что дае попади мы между ключевыми кадрами - мы будем видеть картинку целиком.

Это чтобы не казалось
Цитата:

Each frame in a screen video sequence is formatted as a series of blocks. These blocks form a grid over the image. In a keyframe, every block is sent. In an interframe, one or more blocks contain no data, which indicates that the bitmap region represented by that block was not changed since the last keyframe.
Это значит, что если есть массив ключевых кадров [1,10,25,40], то сразу попасть на 24 кадр нельзя. Можно перейти на 10, из которого сформируется 11, потом 12, 13, 14 ... 24.

chingachgoog 11.12.2008 18:34

Это понятно - такое иногда можно видеть на некоторых проигрывателях видео, после переноса бегунка: видна только изменяющаяся часть картинки, с последнего кейфрейма.
Но как это соотноситься с видео в ФП и кодеках для flv, я не знаю: чаще ведь, последний кейфрейм подцепляется автоматом и мы об этом безобразии даже не думаем.
Для исследования вопроса помог бы эксперимент. Будет время - займусь, проверю.


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

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