import quicktime.*; import quicktime.app.*; import quicktime.app.players.*; import quicktime.app.display.*; import quicktime.io.*; import quicktime.std.*; import quicktime.std.movies.*; import quicktime.qd.*; import quicktime.std.movies.media.*; public class GetImage { public GetImage() { } public void getImageFromMovie(String url, String offsetTime) { try { QTSession.open(); DataRef ref = new DataRef(url); System.out.println("DataRef: " + ref); if (ref == null) return; //Movie theMovie = Movie.fromDataRef(ref, quicktime.std.StdQTConstants4.newMovieAsyncOK); Movie theMovie = Movie.fromDataRef(ref, 0); System.out.println(theMovie.getBounds()); int theTime = Integer.parseInt(offsetTime) * theMovie.getTimeScale(); System.out.println("theTime: " + theTime); Pict pictImage = theMovie.getPict(theTime); System.out.println("PICT: " + pictImage); //pictImage = theMovie.getPosterPict(); //System.out.println("PICT: " + pictImage); // Now encode the Macintosh PICT as a JPEG or PNG or .... quicktime.std.image.GraphicsExporter graphicsExporter = new quicktime.std.image.GraphicsExporter(StdQTConstants.kQTFileTypeJPEG); //graphicsExporter.setInputGWorld(theMovie.getGWorld()); graphicsExporter.setInputPicture(pictImage); System.out.println("setInputGWorld: " + theMovie.getGWorld()); QTFile exportFile = new QTFile("StillImage.jpg"); graphicsExporter.setOutputFile(exportFile); System.out.println("graphicsExporter: " + graphicsExporter); // Displays dialog to configure graphics exporter settings //graphicsExporter.requestSettings(); // Do the export int size = graphicsExporter.doExport(); byte[] jpegBytes = graphicsExporter.GraphicsExportReadOutputData(0, size); System.out.println("jpegBytes: " + jpegBytes); QTSession.close(); } catch (Exception e) { QTSession.close(); System.out.println(e); System.exit(0); } } public static void main(String args[]) { if (args.length < 2) { System.out.println("You need to specify a URL and a location time in seconds when launching"); return; } GetImage instance = new GetImage(); instance.getImageFromMovie(args[0], args[1]); } }