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).

1  
!7
2  
lib 1000278 // jcodec library
3  
4  
import static org.jcodec.common.NIOUtils.writableFileChannel;
5  
import java.io.File;
6  
import java.nio.ByteBuffer;
7  
import java.util.Arrays;
8  
import org.jcodec.codecs.raw.V210Encoder;
9  
import org.jcodec.common.model.ColorSpace;
10  
import org.jcodec.common.model.Picture;
11  
import org.jcodec.common.model.Size;
12  
import org.jcodec.containers.mp4.muxer.FramesMP4MuxerTrack;
13  
import org.jcodec.containers.mp4.muxer.MP4Muxer;
14  
import org.jcodec.containers.mp4.MP4Packet;
15  
16  
/**
17  
 * This class is part of JCodec ( www.jcodec.org ) This software is distributed
18  
 * under FreeBSD License
19  
 *
20  
 * This code generates two dark gradients 8bit and 10 bit quantization and saves
21  
 * it into v210 mov
22  
 *
23  
 * @author Jay Codec
24  
 *
25  
 */
26  
static void main(S[] args) tex {
27  
  if (args.length == 0)
28  
    args = new String[] {prepareProgramFile("out.mov").getPath(), "200"};
29  
30  
  if (args.length < 2) {
31  
    System.out.println("<out mov> <n frames>");
32  
    return;
33  
  }
34  
35  
  System.out.println("Writing movie: " + args[0]);
36  
  int width = 640;
37  
  int height = 480;
38  
  Picture pic = Picture.create(width, height, ColorSpace.YUV422_10);
39  
  for (int p = 0; p < 3; p++)
40  
  Arrays.fill(pic.getPlaneData(p), 0);
41  
  
42  
  V210Encoder encoder = new V210Encoder();
43  
  MP4Muxer muxer = new MP4Muxer(writableFileChannel(new File(args[0])));
44  
  ByteBuffer out = ByteBuffer.allocate(width * height * 10);
45  
  ByteBuffer frame = encoder.encodeFrame(out, pic);
46  
  FramesMP4MuxerTrack videoTrack = muxer.addVideoTrack("v210", new Size(width, height), "jcodec", 24000);
47  
  int frames = 24;
48  
  for (int i = 0; i < frames; i++) {
49  
    videoTrack.addFrame(new MP4Packet(frame, i * 1001, 24000, 1001, i, true, null, i * 1001, 0));
50  
  }
51  
  muxer.writeHeader();
52  
  System.out.println("Done writing movie.");
53  
}
54  
55  
private static void drawGrad(int[] y, Size ySize) {
56  
  int blockX = ySize.getWidth() / 10;
57  
  int blockY = ySize.getHeight() / 7;
58  
  fillGrad(y, ySize.getWidth(), blockX, blockY, 9 * blockX, 3 * blockY, 0.2, 0.1, 8);
59  
  fillGrad(y, ySize.getWidth(), blockX, 4 * blockY, 9 * blockX, 6 * blockY, 0.2, 0.1, 10);
60  
}
61  
62  
private static void fillGrad(int[] y, int stride, int left, int top, int right, int bottom, double from, double to,
63  
                             int quant) {
64  
  int step = stride + left - right;
65  
  int off = top * stride + left;
66  
  for (int j = top; j < bottom; j++) {
67  
    for (int i = left; i < right; i++) {
68  
      y[off++] = colr(((double) i - left) / (right - left), ((double) j - top) / (bottom - top), from, to,
69  
        quant);
70  
    }
71  
    off += step;
72  
  }
73  
}
74  
75  
private static int colr(double i, double j, double from, double to, int quant) {
76  
  int val = ((int) ((1 << quant) * (from + (to - from) * i))) << (10 - quant);
77  
  return val;
78  
}

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: 572 / 557
Version history: 6 change(s)
Referenced in: [show references]