Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.image.BufferedImage;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.nio.file.Paths;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.concurrent.TimeUnit;
- import java.util.logging.Logger;
- import javax.imageio.ImageIO;
- import com.xuggle.mediatool.IMediaWriter;
- import com.xuggle.mediatool.ToolFactory;
- import com.xuggle.xuggler.ICodec;
- public class MjpgUtil {
- private static final Logger LOG = Logger.getAnonymousLogger();
- public static class Frame {
- private long time;
- private byte[] image;
- public Frame() {
- }
- public Frame(long time, byte[] image) {
- this.image = image;
- this.time = time;
- }
- public long getTime() {
- return time;
- }
- public void setTime(long time) {
- this.time = time;
- }
- public byte[] getImage() {
- return image;
- }
- public void setImage(byte[] image) {
- this.image = image;
- }
- }
- public static int trataHeader(InputStream in) throws IOException {
- // --myboundary\r\n
- // Content-Type: image/jpeg\r\n
- // Content-Length: 37459\r\n\r\n
- byte buf1[] = new byte[1];
- int four = 0;
- List<Byte> bytes = new LinkedList<Byte>();
- while (four < 4) {
- in.read(buf1);
- if (buf1[0] == 13 || buf1[0] == 10) {
- four++;
- } else {
- four = 0;
- bytes.add(buf1[0]);
- }
- }
- byte bts[] = new byte[bytes.size()];
- int i = bts.length;
- while (i-- > 0) {
- bts[i] = bytes.get(i);
- }
- String header = new String(bts);
- header = header.replaceFirst(".*Content-Length: (\\d+).*", "$1");
- // System.out.println(header);
- return Integer.parseInt(header);
- }
- public static byte[] trataImagem(int len, InputStream in) throws Exception {
- try (ByteArrayOutputStream out = new ByteArrayOutputStream(len)) {
- byte buf[] = new byte[len];
- int i = -1;
- int tot = 0;
- while (tot < len && (i = in.read(buf)) > -1) {
- tot += i;
- out.write(buf, 0, i);
- }
- return out.toByteArray();
- }
- }
- public static void getVideo(List<Frame> frames, int step, String fName)
- throws Exception {
- if (frames.size() > 0) {
- LOG.info("creating video with "+frames.size()+" frames");
- IMediaWriter writer = ToolFactory.makeWriter(fName);
- writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4, 640, 480);
- long t = 0;
- // long fps = 1000 / cfg.getFps();
- for (Frame p : frames) {
- try (ByteArrayInputStream in = //
- new ByteArrayInputStream(p.getImage())) {
- BufferedImage img = ImageIO.read(in);
- writer.encodeVideo(0, img, t, TimeUnit.MILLISECONDS);
- t += step;
- }
- }
- writer.close();
- if (Paths.get(fName).toFile().length() <= 0)
- LOG.warning("empty video!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement