That said, I don't know why you can't just do what you explained above.
A BufferedImage is an Image so that should work just fine.
Thanks to both of you. Yes, in fact it works as described above, but I needed
Andrew's link to see how to actually implement it.
The problem with this solution is now, that I am creating Buffers in RGBFormat
which take up a lot of space. Hence I tried to convert this to VideoFormat.MJPG
in the following way. Sun's documentation
(http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/guide/JMFProcessing.html#97009)
says that one may instantiate PlugIns manually and call their processing method.
So I do this, but the Codec (com.sun...NativeCodec) actually does not accept the
input format: codec.setInputFormat(formatCreatedFromBufferedImage) returns null.
1. Find the format of the Buffers generated from a BufferedImage:
Buffer imgBuffer = ImageToBuffer.createBuffer(image, 25);
VideoFormat rgbFormat = (VideoFormat)imgBuf.getFormat();
// this is:
// RGB, 320x240, FrameRate=8.0, Length=76800, 32-bit,
// Masks=16711680:65280:255, LineStride=320, class [I
2. Find a Codec that can transform this into MJPG:
Class codecClass =
Class.forName((String)PlugInManager.getPlugInList(rgbFormat,
new VideoFormat(VideoFormat.MJPG),
PlugInManager.CODEC).get(0));
codec = (Codec)codecClass.newInstance();
// this creates a com.sun.media.codec.video.jpeg.NativeEncoder
3. Set the input format and check what it really becomes:
VideoFormat inputFormat = (VideoFormat)codec.setInputFormat(rgbFormat);
// inputFormat is null which means that "the specified Format is not
// supported and no reasonable match could be found."
I can ignore this and setup the rest of the Processor correctly, but it will
result in a NPE as soon as i call codec.process() or codec.open().
Am I doing something wrong?
Or is there a better way to transcode from RGB to something more efficient?
Any ideas?
Cheers,
Simon
P.S: Yes, I have found the Transcoding example, but I don't believe JMF can
setup this automatically, or at least I havent managed to do this yet.
(http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/Transcode.html)
Unfortunately you are well beyond me in your knowledge in this area.
You might try the JMF interest email list.
Maybe there is somebody else here that knows more.