But back OT, I've started looking at moving my client's application to using jjmpeg - as I need 64-bit microsoft to work, and i'm also having some troubles with gc load with lots of transient objects.
Getting video frame reading going was trivial but I had to code up a fair bit of extra stuff to be able to create videos in proper containers which is the other requirement I have. I've checked in a first cut at that - although I need to do more testing particularly wrt GC performance.
I tried to come up with a helper class with a nice API to use it, and the following demonstrates it's use:
AVFormatContext.registerAll();
JJMediaWriter writer = new JJMediaWriter(filename);
JJVideoStream vstream = writer.addVideoStream(width, height, fps, 400000);
BufferedImage image = vstream.createImage();
writer.open();
Graphics2D gg = image.createGraphics();
gg.setBackground(Color.black);
gg.setColor(Color.white);
for (int i = 0; i < fps * 5; i++) {
gg.clearRect(0, 0, width, height);
gg.drawString("Moving Text!", i, i);
vstream.addFrame(image);
}
writer.close();
Well I can't imagine it being much simpler than that. This also (for the most part) avoids transient object creation, so should be (relatively) efficient.
Unfortunately things aren't so clean under the bonnet, but I guess what you don't see wont hurt you will it?
The full example is in VideoWriter.java
No comments:
Post a Comment