@Override public boolean isVideo() { return outputFormat.isVideo(); }
protected EncodedFrame encodeVideo(Picture frame, ByteBuffer _out) { if (!outputFormat.isVideo()) return null; return videoEncoder.encodeFrame(frame, _out); }
@Override public boolean isVideo() { if (!inputFormat.isVideo()) return false; List<? extends DemuxerTrack> tracks = demuxVideo.getVideoTracks(); return tracks != null && tracks.size() > 0; }
@Override public void outputVideoPacket(Packet packet, VideoCodecMeta codecMeta) throws IOException { if (!outputFormat.isVideo()) return; if (videoOutputTrack == null) { videoOutputTrack = muxer.addVideoTrack(outputVideoCodec, codecMeta); } videoOutputTrack.addFrame(packet); framesOutput = true; }
@Override public void init() throws IOException { initMuxer(); if (outputFormat.isVideo() && outputVideoCodec != null) { switch (outputVideoCodec) { case PRORES: videoEncoder = new ProresEncoder(profile, interlaced); break; case H264: videoEncoder = H264Encoder.createH264Encoder(); break; case VP8: videoEncoder = VP8Encoder.createVP8Encoder(10); break; case PNG: videoEncoder = new PNGEncoder(); break; case RAW: videoEncoder = new RAWVideoEncoder(); break; default: throw new RuntimeException("Could not find encoder for the codec: " + outputVideoCodec); } } }
@Override public void outputVideoFrame(VideoFrameWithPacket videoFrame) throws IOException { if (!outputFormat.isVideo() || outputVideoCodec == null) return; Packet outputVideoPacket; ByteBuffer buffer = bufferStore.get(); int bufferSize = videoEncoder.estimateBufferSize(videoFrame.getFrame().getPicture()); if (buffer == null || bufferSize < buffer.capacity()) { buffer = ByteBuffer.allocate(bufferSize); bufferStore.set(buffer); } buffer.clear(); Picture frame = videoFrame.getFrame().getPicture(); EncodedFrame enc = encodeVideo(frame, buffer); outputVideoPacket = Packet.createPacketWithData(videoFrame.getPacket(), NIOUtils.clone(enc.getData())); outputVideoPacket.setFrameType(enc.isKeyFrame() ? FrameType.KEY : FrameType.INTER); outputVideoPacket(outputVideoPacket, org.jcodec.common.VideoCodecMeta.createSimpleVideoCodecMeta(new Size(frame.getWidth(), frame.getHeight()), frame.getColor())); }
if (inputFormat == Format.IMG) { inputCodecVideo = _3(0, 0, getCodecFromExtension(input)); } else if (inputFormat.isVideo()) { inputCodecVideo = selectSuitableTrack(input, inputFormat, TrackType.VIDEO);