【问题标题】:Exporting video from processing 3从处理中导出视频 3
【发布时间】:2016-11-04 15:46:31
【问题描述】:

我正在使用 processing-3.2.2 进行音频可视化。我有播放可视化器的代码,但我不知道如何将其保存为视频(.mp4)文件。

这是我写的:

import ddf.minim.*;
import ddf.minim.analysis.*;

Minim minim;
AudioPlayer player;
AudioMetaData meta;
BeatDetect beat;
int  r = 200;
float rad = 70;
void setup()
{
  size(500, 500);
  //size(600, 400);
  minim = new Minim(this);
  player = minim.loadFile("son_final.mp3");
  meta = player.getMetaData();
  beat = new BeatDetect();
  player.play();
  //player.play();
  background(-1);
  noCursor();
}

void draw()
{ 
  float t = map(mouseX, 0, width, 0, 1);
  beat.detect(player.mix);
  fill(#1A1F18,50);
  noStroke();
  rect(0, 0, width, height);
  translate(width/2, height/2);
  noFill();
  fill(-2, 10);
  if (beat.isOnset()) rad = rad*0.9;
  else rad = 70;
  ellipse(0, 0, 2*rad, 2*rad);
  stroke(-1, 50);
  int bsize = player.bufferSize();
  for (int i = 0; i < bsize - 1; i+=5)
  {
    float x = (r)*cos(i*2*PI/bsize);
    float y = (r)*sin(i*2*PI/bsize);
    float x2 = (r + player.left.get(i)*100)*cos(i*2*PI/bsize);
    float y2 = (r + player.left.get(i)*100)*sin(i*2*PI/bsize);
    line(x, y, x2, y2);
  }
  beginShape();
  noFill();
  stroke(-1, 50);
  for (int i = 0; i < bsize; i+=30)
  {
    float x2 = (r + player.left.get(i)*100)*cos(i*2*PI/bsize);
    float y2 = (r + player.left.get(i)*100)*sin(i*2*PI/bsize);
    vertex(x2, y2);
    pushStyle();
    stroke(-5);
    strokeWeight(2);
    point(x2, y2);
    popStyle();
  }
  endShape();
   if (flag) showMeta();
}


void showMeta() {
  int time =  meta.length();
  textSize(50);
  textAlign(CENTER);
  text( (int)(time/1000-millis()/1000)/60 + ":"+ (time/1000-millis()/1000)%60, -7, 21);
}

boolean flag =false;
void mousePressed() {
  if (dist(mouseX, mouseY, width/2, height/2)<150) flag =!flag;
}

void keyPressed() {
  if(key=='e')exit();
}

我知道我可以导入 MovieMaker 库,但我不知道如何在这段代码中使用它。请提出一些更改建议。

谢谢。

【问题讨论】:

    标签: audio video processing visualization


    【解决方案1】:

    您可以为此使用视频导出库。更多信息在这里:http://funprogramming.org/VideoExport-for-Processing/

    那么你要做的就是创建一个VideoExport 的实例,然后在draw() 函数的末尾调用videoExport.saveFrame()

    import com.hamoid.*;
    
    VideoExport videoExport;
    
    void setup() {
      size(600, 600);
    
      videoExport = new VideoExport(this, "basic.mp4");
    }
    void draw() {
      background(#224488);
      rect(frameCount * frameCount % width, 0, 40, height);
    
      videoExport.saveFrame();
    }
    

    网上有很多资源。我建议在谷歌上搜索“处理视频导出”以获得大量结果。然后尝试一些东西并发布MCVE(不是您的整个项目),显示您遇到的确切位置。

    【讨论】:

    • 嘿@KevinWorkman 我做了更改,它确实导出了 .mp4 视频文件,但其中没有音频!
    • @ShivamSharma 我真的建议做一些研究。谷歌“处理视频导出声音”看看其他人是怎么做的。尝试一些事情,然后在遇到困难时发布一个特定的问题。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2014-08-31
    • 2011-11-21
    相关资源
    最近更新 更多