Мне удалось воспроизвести вашу проблему, но не исправить ее. Попробовав очень упрощенный код, основанный на примере из документации по обработке, я все еще не мог заставить frameRate()
работать. Я даже пробовал разные рендеры без видимых результатов.
Вы можете получить аналогичный результат с помощью простых приемов. На этот раз вы можете считать свои кадры, чтобы обновлять mov ie только один раз каждые пару кадров:
Movie myMovie;
int frameCounter = 0;
int framerate = 30;
int movieFPS = 3; // the movie will be updated only 3 times per second
int updateFrame = 1;
void setup() {
size(200, 200);
frameRate(framerate);
updateFrame = framerate / movieFPS;
myMovie = new Movie(this, "SampleVideo_360x240_30mb.mp4");
myMovie.loop();
}
void draw() {
if (frameCounter++ % updateFrame == 0) {
image(myMovie, 0, 0);
}
}
// Called every time a new frame is available to read
void movieEvent(Movie m) {
m.read();
}
Интересно, что звук не будет затронут, так как mov ie все еще читается с той же скоростью, но графически не отображает каждый кадр.
Если вы хотите использовать эффект «веб-камера», вы можете рандомизировать количество кадров вместо регулярного обновления:
Movie myMovie;
int frameCounter = 0;
int framerate = 30;
int minFramesBetweenUpdate = 10;
int maxFramesBetweenUpdate = 45;
int updateFrame = 1;
void setup() {
size(200, 200);
frameRate(framerate);
myMovie = new Movie(this, "SampleVideo_360x240_30mb.mp4");
myMovie.loop();
}
void draw() {
if (frameCounter++ > updateFrame) {
image(myMovie, 0, 0);
updateFrame = frameCounter + (int)random(minFramesBetweenUpdate, maxFramesBetweenUpdate);
}
}
// Called every time a new frame is available to read
void movieEvent(Movie m) {
m.read();
}
Частота кадров технически не меняет скорость, с которой будет отображаться mov ie, а только количество кадров, которые будут видны за определенное время. 10-секундное видео с различными частотами кадров будет воспроизводиться через 10 секунд.
Если вы хотите изменить скорость, с которой отображается mov ie, вам нужно использовать что-то вроде myMovie.speed(0.5);
. Скорость, с которой воспроизводится mov ie, изменит время, необходимое для его запуска. Если у вашего mov ie есть звук, то, например, при воспроизведении его со скоростью, превышающей 1.0, этот звук будет «бурундук».
Дайте мне знать, если я могу чем-то помочь. И веселиться!