2009-03-13 13 views
6

Ardından birbiri ardına eklemek ve film oluşturmak için kullanacağım bir dizi görüntü var. Bunun için java için Quicktime kullanacağım (bir mac'dayım).qtj ve java'yı kullanarak bir dizi görüntüden nasıl film oluşturabilirim?

Web'de qtj kullanarak filmleri nasıl oynattığınızı gösteren çok sayıda örnek buldum, ancak qtj kullanarak çerçeve çerçevesini nasıl oluşturabildiğimi gösteren kod parçacıkları veya öğreticileri bulamıyorum.

http://developer.apple.com/samplecode/ImportExport/listing1.html

Tek yerli QuickTime Filmi yeni oluşturmak için bir MovieExporter bileşenine aktarılabilir sonra okuma için açıldı ve nasıl gösterir:

cevap

1

burada örnek kod bir ihracat ile ilgili bir parça yoktur QuickTime Filminden. Kod için yazma kaynağı olarak bir dosyayı içe bir QuickTime Film kaynağını ihracat kodu için

void importMedia() 

bkz

void run() 

Bu mümkün olmalıdır görmek için

Giriş dosyasının dosya formatı QuickTime (fe BMP gibi) tarafından desteklendiği sürece, aynı yaklaşımı kullanarak bir görüntü dosyasını açın. Bu kodun çoğunu kullanarak bir dizi görüntü dosyası yazabilmeniz gerekir. Araştırmanız gereken tek nokta, mevcut bir filme ek ek kareyi eklemek için hangi yöntemi çağırmanız gerektiğidir. Aynı API'yi kullanarak işe yarayabilir, ancak büyük olasılıkla başka bir çağrı kullanmanız gerekecektir.

başka yöntem için kazmak varsa burada bulunan QT Java Referans Dokümanlarından bulmak mümkün olmalıdır:

http://developer.apple.com/Java/Reference/1.4/Java14API_QTJ/

Bir kesmek ve performanstaki en muhtemel fakir, ama olabilir aslında işe yarıyor.

Ve ... Bunu hiç denemedim (ticari olarak Windows için bir QuickTime kullanıcısıyım): üzgünüm, garanti yok =).


Düzenleme: Mevcut bir giriş tamponu kullanılan bir QT Film kareleri yazmak için bir yol arıyoruz yerine QT API kullanarak dosyasından verileri okuyorsanız, bu olduğunca API'ler olmalıdır iyi. Sadece referans belgelerini kontrol edin.


Düzenleme 2: Aslında bileşenleri ve aramaların adlandırma olarak C/C++ burada API Belgeleri, kontrol etmek faydalı olabilir (bunun için kazmak için yardımcı olabilecek, yani kabaca aynı adlandırma kuralları takip görünüyor ve'un gereksinim duyduğu Java API'sinin çağrıları, Kılavuzlar ve Nasıl Yapılacağı'nın başlangıç ​​noktası olarak sunulması bakımından daha kapsamlı görünmektedir.C/C++ Dokümanlar burada bulabilirsiniz:

http://developer.apple.com/referencelibrary/QuickTime/index.html

en ilginç bölümler olmalıdır

  1. İthalat & Export
  2. Sıkıştırma & Dekompresyon

İyi Eğlenceler!


7

ben processing kütüphaneleri (GPL) den MovieMaker sınıfla QTJ aracılığıyla yaptık. İşleme, yeni başlayanlar için saklayabilmesine rağmen, saf java'dır.

Küçük öğretici: İndir İşleme, Sketch gidin, açmak -> Show Sketch Klasör, "veri" adlı bir klasör oluşturun ve aracılığıyla, bu klasörün içinde adı "filename01.gif" Tüm görüntüleri koymak " filename09.gif". editör aşağıdaki kodu yapıştırın ve oynattı:

/** 
* Makes a QuickTime movie out of an array of images. 
*/ 

import processing.video.*; 

MovieMaker mm; 
PImage[] imageFrames; 
int index; 

void setup() { 
    size(320, 240); 
    int numFrames = 9; 
    imageFrames = new PImage[numFrames]; 
    for(int i = 0; i < imageFrames.length; i++) 
    { 
    imageFrames[i] = loadImage("filename" + nf(i+1,2) + ".gif"); 
    } 
    // Save uncompressed, at 15 frames per second 
    mm = new MovieMaker(this, width, height, "drawing.mov"); 
    // Or, set specific compression and frame rate options 
    //mm = new MovieMaker(this, width, height, "drawing.mov", 30, 
    //     MovieMaker.ANIMATION, MovieMaker.HIGH); 
} 

void draw() { 
    if(index < imageFrames.length) 
    { 
    // show the image 
    image(imageFrames[index], 0, 0); 
    // Add window's pixels to movie 
    mm.addFrame(); 
    index++; 
    } 
    else 
    { 
    mm.finish(); 
    // Quit running the sketch once the file is written 
    exit();  
    } 
} 

Bu kroki klasörde görüntülerden bir dosya "drawing.mov" yaratacaktır. Dosyaya -> ihracat uygulamasına gidip eskiz klasörünü açın ve application.macosx/source veya application.windows/source klasörüne gidin, gerçek kodu olan bir .java dosyası olmalıdır. böyle:

import processing.core.*; 
import processing.xml.*; 

import processing.video.*; 

import java.applet.*; 
import java.awt.*; 
import java.awt.image.*; 
import java.awt.event.*; 
import java.io.*; 
import java.net.*; 
import java.text.*; 
import java.util.*; 
import java.util.zip.*; 
import java.util.regex.*; 

public class movie2 extends PApplet { 

/** 
* Makes a QuickTime movie out of an array of images. 
*/ 



MovieMaker mm; 
PImage[] imageFrames; 
int index; 

public void setup() { 
    size(320, 240); 
    int numFrames = 9; 
    imageFrames = new PImage[numFrames]; 
    for(int i = 0; i < imageFrames.length; i++) 
    { 
    imageFrames[i] = loadImage("filename" + nf(i+1,2) + ".gif"); 
    } 
    // Save uncompressed, at 15 frames per second 
    mm = new MovieMaker(this, width, height, "drawing.mov"); 
    // Or, set specific compression and frame rate options 
    //mm = new MovieMaker(this, width, height, "drawing.mov", 30, 
    //     MovieMaker.ANIMATION, MovieMaker.HIGH); 
} 

public void draw() { 
    if(index < imageFrames.length) 
    { 
    // show the image 
    image(imageFrames[index], 0, 0); 
    // Add window's pixels to movie 
    mm.addFrame(); 
    index++; 
    } 
    else 
    { 
    mm.finish(); 
    // Quit running the sketch once the file is written 
    //exit();  
    println("done"); 
    } 
} 

    static public void main(String args[]) { 
    PApplet.main(new String[] { "--bgcolor=#e0dfe3", "movie2" }); 
    } 
} 

saf java kullanmak için, üzerinde sınıf işleme uygulaması klasöründen core.jar ve video.jar kullanmak gerekir ve sonra bu java kodu derlemek gerekir. İşte işlem kitaplığı için bir function reference ve bir javadoc. Here are the javadocs for the MovieMaker class. İsterseniz, MovieMaker sınıfına source'u görebilirsiniz.

HTH