【Processing入门】第九章:视频音频

1.播放视频文件

/**
 * Loop. 
 * 
 * Shows how to load and play a QuickTime movie file.  
 *
 */

import processing.video.*;

Movie movie;

void setup() {
  size(640, 360);
  background(0);
  // Load and play the video in a loop
  movie = new Movie(this, "transit.mov");
  movie.loop();
}

void movieEvent(Movie m) {
  m.read();
}

void draw() {
  //if (movie.available() == true) {
  //  movie.read(); 
  //}
  image(movie, 0, 0, width, height);
}


 

2.实时视频输入

import processing.video.*;
Capture video;

void setup()
{
  size(320,240);
  video=new Capture(this,320,240,15);
}

void draw()
{
  if(video.available())
  {
    video.read();
  }
  image(video,0,0);
}


或者使用captureEvent()

import processing.video.*;
Capture video;

void setup()
{
  size(320,240);
  video=new Capture(this,width,height,15);
}

void captureEvent(Capture myCapture)
{
  myCapture.read();
}

void draw()
{
  image(video,0,0);
}


3.音频

3.1 播放音频

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;

AudioPlayer player;
Minim minim;

void setup()
{
  size(300,300);
  minim = new Minim(this);
  player=minim.loadFile("1.mp3",1024);
  player.play();
}

void draw()
{
  
}

void stop()
{
  player.close();
  minim.stop();
  super.stop();
}

 

3.2 声音的可视化

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;

AudioPlayer player;
Minim minim;

void setup()
{
  size(512,400);
  minim = new Minim(this);
  player=minim.loadFile("1.mp3",1024);
  player.play();
}

void draw()
{
  background(0);
  stroke(255);
  
  for(int i = 0;i<player.left.size()-1 ;i++)
  {
    strokeWeight(abs(player.left.get(i)*20));
    line(i,150+player.left.get(i)*50,i+1,150+player.left.get(i+1)*50);
    line(i,250+player.left.get(i)*50,i+1,250+player.left.get(i+1)*50);
  }
}

void stop()
{
  player.close();
  minim.stop();
  super.stop();
}

 

关键部分改为

  for(int i = 0;i<player.bufferSize()-1 ; i+=5)
  {
     line(i,150+player.left.get(i)*50,i+1,150+player.left.get(i+1)*50);
     ellipse(i,150+player.left.get(i)*100,player.left.get(i)*6,player.left.get(i)*100);
     ellipse(i,250+player.left.get(i)*100,player.left.get(i)*6,player.left.get(i)*100);
  }

 

3.3音频输入互动

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;

Minim minim;
AudioInput in;

void setup()
{
  size(1024,400);
  smooth();
   minim = new Minim(this);
   minim.debugOn();
   in = minim.getLineIn(Minim.STEREO,1024);
   background(0);
   
}

void draw()
{
  fill(0,5);
  rect(0,0,width,height);
  noStroke();
  for(int i = 0;i<in.bufferSize()-1 ; i+=8)
  {
     fill(abs(in.left.get(i)*255),255,0);
     ellipse(i,120+in.left.get(i)*100,in.left.get(i)*6,in.left.get(i)*100);
     fill(abs(in.left.get(i)*255),255,0);
     ellipse(i,280+in.right.get(i)*100,in.right.get(i)*6,in.right.get(i)*100);
  } 
}

void stop()
{
  in.close();
  minim.stop();
  super.stop();
}



 



 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值