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; }
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: | 650 / 642 |
Version history: | 6 change(s) |
Referenced in: | #1006714 - Create an .mp4 spike #3000189 - Answer for stefanreich(>> t bla) #3000190 - Answer for stefanreich(>> t 20 questions) #3000202 - Answer for stefanreich (>> T conversion bot) #3000238 - Answer for stefanreich (>> t power bot) #3000382 - Answer for ferdie (>> t = 1, f = 0) #3000383 - Answer for funkoverflow (>> t=1, f=0 okay) |