2016-11-04 2 views
0

Ich verwende Processing-3.2.2 für Audio-Visualisierung. Ich habe den Code, um den Visualizer zu spielen, aber ich weiß nicht, wie ich ihn als Video-Datei (.mp4) speichern soll.Exportieren von Video aus der Verarbeitung 3

Hier ist, was ich schrieb:

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(); 
} 

Ich weiß, ich Movie Maker Bibliothek importieren kann, aber ich weiß nicht, wie es in diesem Code zu verwenden. Bitte schlagen Sie einige Änderungen vor.

Vielen Dank.

Antwort

0

Sie können dafür die Video Export-Bibliothek verwenden. Mehr Infos hier: http://funprogramming.org/VideoExport-for-Processing/

Dann alles, was Sie tun würde, ist eine Instanz von VideoExport erstellen und dann videoExport.saveFrame() am Ende Ihrer draw() Funktion aufrufen.

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(); 
} 

Es gibt eine Tonne von Ressourcen online. Ich empfehle für eine Tonne von Ergebnissen Googling "Processing Video Export". Dann probiere etwas aus und poste ein MCVE (nicht dein gesamtes Projekt), das genau zeigt, wo du feststeckst.

+0

Hey @KevinWorkman Ich machte die Änderungen und es exportiert die .mp4-Videodatei, aber kein Audio drin! – Shivams334

+0

@ShivamSharma Ich empfehle wirklich, etwas Forschung zu tun. Google "Processing video export sound", um zu sehen, wie andere Leute es gemacht haben. Probieren Sie etwas aus und geben Sie eine bestimmte Frage ein, wenn Sie nicht weiterkommen. Viel Glück. –

Verwandte Themen