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

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

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

Регистрация: Nov 2008
Сообщений: 78
По умолчанию Как проиграть видео с определенной секунды

Итак что есть - потоковое видео.

Цитата:
play () метод
public function play(, [start, length, reset, remoteConnection, virtualKey]):void

name:Object Обязательное Имя записанного файла, идентификатор для данных в реальном времени, опубликованных NetStream.publish(), или значение false. Если значение равно false, воспроизведение потока прекращается и любые дополнительные параметры игнорируются. Для получения дополнительной информации о синтаксисе имени файла см. таблицу с форматами файлов ниже следующей таблицы.

start:Number Необязательно Время запуска (в секундах). Допустимые значения: -2, -1, 0 или любое положительное число. Значение по умолчанию: -2. В этом случае сначала идет поиск потока в реальном времени, затем — записанного потока. Если ни один из них не будет найден, то будет открыт поток в реальном времени. Если значение равно -1, воспроизводится только поток в реальном времени. Если значение равно 0 или представлено положительным числом, воспроизводит записанный поток, начиная с секунд, указанных в параметре start.
Вроде все просто и даже очень. Делаем _stream.play('video.flv', 5)
И вуаля - видео будет проигранно с 5 секунды.

Щазз, проигрывает с 0 секунды... play2() - тоже.

Код AS3:
 
var option:NetStreamPlayOptions = new NetStreamPlayOptions();
option.start = persent * _time;
option.streamName = _url;
_stream.play2(option);
trace( persent * _time); // 5
trace(_stream.time); // 0!!!!!
Есть еще штука

Код:
seek () метод  
public function seek(offset:Number):void

Осуществляет поиск ключевого кадра (так называемого I-кадра), расположенного ближе всего к указанной точке. Ключевой кадр размещается в точке смещения, измеряемой в секундах от начала потока.
Эта штука работает ПОЧТИ как надо - тоесть она _stream.seek(5) проиграет с 5 секунды.
НО! Если там есть ключевой кадр, иначе будет неприятный рывок...

Уже пол дня шерстю хелп не могу найти такую банальную вещь - КАК проиграть видео с определенной секунды!!!


Последний раз редактировалось wvxvw; 03.01.2010 в 02:36.
Старый 03.01.2010, 02:48
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
На самом деле вещь не банальная...
Судя по тому, что вы описали, видео у вас не потоковое, а загружается используя буферизацию (т.е. вы не используете FMS / Red5 / Wowza или аналогичные решения), а просто отдаете FLV файл.
Чтобы начать получать видео с нужного кадра вам нужно либо действительно потоковое видео, где серверная часть умеет по требованию вырезать запрошеную часть FLV, приклеить к ней заголовки и отослать так, чтобы флеш плеер это понял.
seek() будет работь и с буферизацией, но, как вы обратили внимание, точность оставляет желать лучшего. Что можно сделать: примерно рассчитать предыдущий ключевой кадр, отключить звук и картинку и проиграть видео до нужного времени, а потом включить все обратно... - недостатки очевидны, медленно и точность все равно может пострадать.
Можно распарсить видео на кадры (если видео короткое) сгенерировать из него MovieClip и проиграть как встроенное видео... - недостатки - ресурсоемко и долго...
Ну или попробовать какой-нибудь из серверов умеющих отдавать потоковое видео. Кроме вышеперечисленных есть интересная разработка:
http://www.flasher.ru/forum/showthread.php?t=134028
__________________
Hell is the possibility of sanity

Старый 03.01.2010, 03:19
kyzi007 вне форума Посмотреть профиль Отправить личное сообщение для kyzi007 Найти все сообщения от kyzi007
  № 3  
Ответить с цитированием
kyzi007

Регистрация: Nov 2008
Сообщений: 78
Ужас...
[mod]Удаффком не приветстуется[/mod]
Попробую сделать вид что не заметила рывков, и поставить pause/resume где возможно...
А то что видео успело загрузить ту секунду в которую я хочу перейти - это тоже никак не влияет?


Последний раз редактировалось wvxvw; 03.01.2010 в 04:54.
Старый 03.01.2010, 04:55
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
>> А то что видео успело загрузить ту секунду в которую я хочу перейти - это тоже никак не влияет?
Нет, это значения не имеет.
__________________
Hell is the possibility of sanity

Старый 03.01.2010, 11:37
kyzi007 вне форума Посмотреть профиль Отправить личное сообщение для kyzi007 Найти все сообщения от kyzi007
  № 5  
Ответить с цитированием
kyzi007

Регистрация: Nov 2008
Сообщений: 78
Спасибо.

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

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

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


 


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


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