Главная » Processing » Переход на заданный кадр в Processing

0

В предыдущем примере мы научились управлять скоростью видео. В этом примере мы научимся перескакивать на заданный кадр видеофайла.

Как это делается

Этот пример начнем с того же, с чего начинался предыдущий пример, но здесь добавим перенную типа float под именем w, с помощью которой сделаем индикатор выполнения.

import processing.video.*;

Movie m; float w;

void setup()

{

size( 640, 480 );

m = new Movie( this, "marbles.mov" ); m.loop();

}

void draw()

{

background( 0 );

image( m, 0, 0, width, height );

fill( 0 ); noStroke();

rect( 0, 0, w, 10 );

}

Функция movieEvent() выглядит непростой. Мы преобразуем длительность видео в величину от 0 до width, ширины окна вашего скетча и сохраним ее в переменной w .

void movieEvent( Movie m )

{

m.read();

w = map( m.time(), 0, m.duration(), 0, width );

}

В функции mousePressed() мы преобразуем диапазон значений переменной mouseX в диапазон от 0 до длительности видео и используем метод jump() для выполнения перехода на определенный момент видео.

void mousePressed()

{

float x = map( mouseX, 0, width, 0, m.duration() ); m.jump( x );

}

Запустите скетч, кликните мышью и посмотрите, что происходит на экране. В результате вы увидите то, что изображено на этом скриншоте:

Метод duration() класса Movie возвращает вещественное число, соответствующее длительности видео в секундах. Метод time() возвращает позицию текущего кадра в секундах. Метод jump() используется для установки указателя на другую позицию видео. Параметр этой функции – вещественно число от 0 до длительности видео. Черная полоса, вверху экрана – это индикатор процесса. Ширина этого прямоугольника вычисляется в функции movieEvent().

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

  • Комментарии