Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

78
LINES

< > BotCompany Repo | #1000557 // Create one second of black (out.mov) - file broken?

JavaX source code [tags: use-pretranspiled] - run with: x30.jar

Uses 892K of libraries. Click here for Pure Java version (681L/5K/17K).

!7
lib 1000278 // jcodec library

import static org.jcodec.common.NIOUtils.writableFileChannel;
import java.io.File;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.jcodec.codecs.raw.V210Encoder;
import org.jcodec.common.model.ColorSpace;
import org.jcodec.common.model.Picture;
import org.jcodec.common.model.Size;
import org.jcodec.containers.mp4.muxer.FramesMP4MuxerTrack;
import org.jcodec.containers.mp4.muxer.MP4Muxer;
import org.jcodec.containers.mp4.MP4Packet;

/**
 * This class is part of JCodec ( www.jcodec.org ) This software is distributed
 * under FreeBSD License
 *
 * This code generates two dark gradients 8bit and 10 bit quantization and saves
 * it into v210 mov
 *
 * @author Jay Codec
 *
 */
static void main(S[] args) tex {
  if (args.length == 0)
    args = new String[] {prepareProgramFile("out.mov").getPath(), "200"};

  if (args.length < 2) {
    System.out.println("<out mov> <n frames>");
    return;
  }

  System.out.println("Writing movie: " + args[0]);
  int width = 640;
  int height = 480;
  Picture pic = Picture.create(width, height, ColorSpace.YUV422_10);
  for (int p = 0; p < 3; p++)
  Arrays.fill(pic.getPlaneData(p), 0);
  
  V210Encoder encoder = new V210Encoder();
  MP4Muxer muxer = new MP4Muxer(writableFileChannel(new File(args[0])));
  ByteBuffer out = ByteBuffer.allocate(width * height * 10);
  ByteBuffer frame = encoder.encodeFrame(out, pic);
  FramesMP4MuxerTrack videoTrack = muxer.addVideoTrack("v210", new Size(width, height), "jcodec", 24000);
  int frames = 24;
  for (int i = 0; i < frames; i++) {
    videoTrack.addFrame(new MP4Packet(frame, i * 1001, 24000, 1001, i, true, null, i * 1001, 0));
  }
  muxer.writeHeader();
  System.out.println("Done writing movie.");
}

private static void drawGrad(int[] y, Size ySize) {
  int blockX = ySize.getWidth() / 10;
  int blockY = ySize.getHeight() / 7;
  fillGrad(y, ySize.getWidth(), blockX, blockY, 9 * blockX, 3 * blockY, 0.2, 0.1, 8);
  fillGrad(y, ySize.getWidth(), blockX, 4 * blockY, 9 * blockX, 6 * blockY, 0.2, 0.1, 10);
}

private static void fillGrad(int[] y, int stride, int left, int top, int right, int bottom, double from, double to,
                             int quant) {
  int step = stride + left - right;
  int off = top * stride + left;
  for (int j = top; j < bottom; j++) {
    for (int i = left; i < right; i++) {
      y[off++] = colr(((double) i - left) / (right - left), ((double) j - top) / (bottom - top), from, to,
        quant);
    }
    off += step;
  }
}

private static int colr(double i, double j, double from, double to, int quant) {
  int val = ((int) ((1 << quant) * (from + (to - from) * i))) << (10 - quant);
  return val;
}

Author comment

Began life as a copy of #620

download  show line numbers  debug dex  old transpilations   

Travelled to 15 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, jtubtzbbkimh, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, teubizvjbppd, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1000557
Snippet name: Create one second of black (out.mov) - file broken?
Eternal ID of this version: #1000557/7
Text MD5: 5b6c7724ff13230bec7879041ed72a54
Transpilation MD5: 27f1222f092ab49aeea732e5d5b0120c
Author: stefan
Category: javax video
Type: JavaX source code
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2017-02-02 22:10:58
Source code size: 2767 bytes / 78 lines
Pitched / IR pitched: No / No
Views / Downloads: 649 / 640
Version history: 6 change(s)
Referenced in: [show references]