I was trying out the code grabbing a frame from a movie in your article here.
http://www.onjava.com/pub/a/onjava/2002/12/23/jmf.html?page=2
But I'm having trouble getting a good jpeg file from a movie. Here's the code:
QTSession.open();
QTFile qtFile = new QTFile("/Users/josh/kelley20.mp4");
OpenMovieFile movieFile = OpenMovieFile.asRead(qtFile);
Movie movie = Movie.fromFile(movieFile);
int j = 0;
int step = (movie.getDuration() - movie.getTime())/5;
for (int i = movie.getTime(); i < movie.getDuration(); i += step) {
j++;
Pict pict = movie.getPict(i); // frame number
File f = new File("/Users/josh/quicktime/test" + j +".jpeg");
pict.writeToFile(f);
}
QTSession.close();
System.exit(0);
It almost works. There is a file saved and I can open it in safari and it's the right picture. Unfortunately it won't open in camino ("this jpeg contains errors") or preview. It's not really a jpeg though. Graphics Converter says its file format is "QuickTime Importer (QuickDraw)".
Any idea how i can convert this into a jpeg? I've tried using GraphicsImporter,on the file like this:
GraphicsImporter gi = new GraphicsImporter(qtFile); // get a cantFindHandler error here
GraphicsImporterDrawer myDrawer = new GraphicsImporterDrawer
(gi);
QTImageProducer qtProducer = new QTImageProducer (myDrawer,
size);
Image image = Toolkit.getDefaultToolkit().createImage(qtProducer);
but I get the "Unsupported on Mac OS X and Java 1.4 and higher" error on the GraphicsImporterDrawer line. I'm using 10.2, could that be a problem? (I think i've updated quicktime java properly).
Could i use ibm's toolkit for this?
Thanks for your help and great articles, J.
|
This is coming in a soon-to-be-announced QTJ book from O'Reilly (pause for effect of thundering applause), which I'm just now able to talk about. I'm trying to get the example code posted on an open-source site (probably java.net) ASAP.
Anyways, I did the QuickDraw chapter a few weeks ago. What you've done is shockingly close to something in the book.
Two catches:
--Chris (
invalidname)