2016-11-05 55 views
1

夥計們,我正在開發音頻可視化並在pde中創建了一個成功的運行文件。該代碼需要一個「input.mp3」,然後導出.mp4文件。我們可以通過終端(.sh)使用它嗎?我的意思是編寫一些命令來執行程序。如:從shell使用Processing-3.2.2

processing-3.2.2 filename.pde input.mp3 

它會生成該input.mp3的視頻。這裏是我的代碼:

import ddf.minim.*; 
import ddf.minim.analysis.*; 
import com.hamoid.*; 

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

void draw() 
{ 
    float t = map(mouseX, 0, width, 0, 1); 
    beat.detect(player.mix); 
    fill(#1A1F18, 20); 
    noStroke(); 
    rect(0, 0, width, height); 
    translate(width/2, height/2); 
    noFill(); 
    fill(-1, 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(-1); 
    strokeWeight(2); 
    point(x2, y2); 
    popStyle(); 
    } 
    endShape(); 
    if (flag) showMeta(); 
    videoExport.saveFrame(); 
} 



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==' ')exit(); 
    if(key=='s')saveFrame("###.jpeg"); 
} 

回答

1

不能運行在命令行或從腳本.pde文件。

但是,您可以將.pde文件轉換爲Java應用程序,然後像運行任何其他Java應用程序一樣運行該Java應用程序。

作爲第一步,從您的Processing編輯器,轉到File > Export Application...,它會打開Export Options窗口。在那裏設置你的選項(可能會發揮一下,看看每個選項的作用),然後點擊Export按鈕。

這會將應用程序導出到您的草圖目錄。該應用程序爲您提供了可用作Java應用程序的各種.java.jar文件。

從那裏只需要運行.jar文件就像運行其他.jar文件一樣。

+0

嘿@KevinWorkman我試過這個導出選項,它會導出文件。但是我得到的文件太多了。我如何知道在腳本中運行哪個文件? –

+0

@PradhvanBisht你需要所有的文件。您將運行帶有草圖名稱的'.jar'或'.java'文件,並將其餘的文件添加到您的類路徑中。來自'-cp'選項的腳本。 –