我已经广泛研究了这个问题,但我找不到任何有用的答案。基本上,我想创建一个半透明(或半透明)的音频反应叠加层,它可以转置到通用视频文件上。这个想法是让视频呈现出与音轨一起跳动的感觉。
我想我可以用 Processing 和 minim 库来实现这个效果,但我不知道如何制定草图。输出应为 1920x1080,脉动叠加应产生充满活力的光度感(例如,亮度为 30-50% 且不透明度可能为 25-50% 的浅色)。
我正在使用@george-profenza 提供的草图更新这个挑战(修改为使用视频而不是凸轮输入):
import processing.video.*;
Movie movie;
PGraphics overlay;
import ddf.minim.*;
Minim minim;
AudioInput in;
void setup(){
size(320,240);
movie = new Movie(this, "input.mp4");
movie.play();
// setup sound
minim = new Minim(this);
in = minim.getLineIn();
// setup overlay
overlay = createGraphics(width,height);
// initial draw attributes
overlay.beginDraw();
overlay.strokeWeight(3);
overlay.rectMode(CENTER);
overlay.noFill();
overlay.stroke(255,255,255,32);
overlay.endDraw();
}
void draw(){
//update overlay based on audio data
overlay.beginDraw();
overlay.background(0,0);
for(int i = 0; i < in.bufferSize() - 1; i++)
{
overlay.line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 );
overlay.line( i, 150 + in.right.get(i)*50, i+1, 150 + in.right.get(i+1)*50 );
}
overlay.endDraw();
//render video then overlay composite
image(movie,0,0);
image(overlay,0,0);
}
// update movie
void movieEvent(Movie m){
m.read();
}
大概这个草图有效,但不幸的是,底层(GStreamer 1+)库似乎在 Ubuntu 上出现故障(根据问题 #90processing.video
,似乎没有办法使用社区提供的分支之一更新库在 GitHub 上。
如果有人可以提出解决此问题的方法或有其他解决方案,我将不胜感激。