IContainerFormat containerFormat_live = IContainerFormat.make(); containerFormat_live.setOutputFormat("flv", url + fileName, null); container.setInputBufferLength(0); int retVal = container.open(url + fileName, IContainer.Type.WRITE, containerFormat_live); if (retVal < 0) { System.err.println("Could not open output container for live stream"); System.exit(1); IStream stream = container.addNewStream(0); IStreamCoder coder = stream.getStreamCoder(); ICodec codec = ICodec.findEncodingCodec(ICodec.ID.CODEC_ID_H264); coder.setNumPicturesInGroupOfPictures(5); IRational frameRate = IRational.make(5, 1); coder.setFrameRate(frameRate); coder.setTimeBase(IRational.make(frameRate.getDenominator(), frameRate.getNumerator())); Properties props = new Properties(); InputStream is = XugglerRtmpReferenceImpl.class.getResourceAsStream("/libx264-normal.ffpreset"); container.writeHeader(); long firstTimeStamp = System.currentTimeMillis(); long lastTimeStamp = -1; outFrame.setKeyFrame(true); outFrame.setQuality(0); coder.encodeVideo(packet, outFrame, 0); outFrame.delete(); if (packet.isComplete()) {
if (containerVideo.open(filenamevideo, IContainer.Type.READ, null) < 0) throw new IllegalArgumentException("Cant find " + filenamevideo); if (containerAudio.open(filenameaudio, IContainer.Type.READ, null) < 0) throw new IllegalArgumentException("Cant find " + filenameaudio); int numStreamVideo = containerVideo.getNumStreams(); int numStreamAudio = containerAudio.getNumStreams(); IStream stream = containerVideo.getStream(i); IStreamCoder code = stream.getStreamCoder(); IStream stream = containerAudio.getStream(i); IStreamCoder code = stream.getStreamCoder(); if(videocoder.open()<0 ) throw new RuntimeException("Cant open video coder"); IPacket packetvideo = IPacket.make(); IStreamCoder audioCoder = containerAudio.getStream(audiostreamt).getStreamCoder(); if(audioCoder.open()<0 ) throw new RuntimeException("Cant open audio coder"); mWriter.addAudioStream(1, 1, audioCoder.getChannels(), audioCoder.getSampleRate()); mWriter.addVideoStream(0, 0, videocoder.getWidth(), videocoder.getHeight()); while(containerVideo.readNextPacket(packetvideo) >= 0 || containerAudio.readNextPacket(packetaudio) >= 0){ IVideoPicture picture = IVideoPicture.make(videocoder.getPixelType(),
IStream stream = iContainerObj.getStream(i); IStreamCoder coder = stream.getStreamCoder(); if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO && videoStreamId == -1) { videoDuration = container.getDuration() == Global.NO_PTS ? 0 : container.getDuration() / 1000; frameRate = coder.getFrameRate().getDouble(); // other .... }
public VideoListener(IMediaReader reader, int width, int height) { this.reader = reader; IContainer container = reader.getContainer(); int numStreams = container.getNumStreams(); for (int i = 0; i < numStreams; i++) { IStream stream = container.getStream(i); IStreamCoder coder = stream.getStreamCoder(); if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { videoStream = i; videoCoder = coder; } } if (videoCoder != null) { videoConverter = ConverterFactory.createConverter(ConverterFactory.XUGGLER_BGR_24, videoCoder.getPixelType(), videoCoder.getWidth(), videoCoder.getHeight()); videoPicture = IVideoPicture.make(videoCoder.getPixelType(), width, height); videoResampler = IVideoResampler.make(width, height, videoCoder.getPixelType(), videoCoder.getWidth(), videoCoder.getHeight(), videoCoder.getPixelType()); } videoReaderThread = new VideoReaderThread(reader); videoReaderThread.setName("Video Reader Thread"); videoReaderThread.setDaemon(true); videoReaderThread.start(); }
double timeBase = 0; int videoStreamId = -1; private void seekToMs(IContainer container, long timeMs) { if(videoStreamId == -1) { for(int i = 0; i < container.getNumStreams(); i++) { IStream stream = container.getStream(i); IStreamCoder coder = stream.getStreamCoder(); if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { videoStreamId = i; timeBase = stream.getTimeBase().getDouble(); break; } } } long seekTo = (long) (timeMs/1000.0/timeBase); container.seekKeyFrame(videoStreamId, seekTo, IContainer.SEEK_FLAG_BACKWARDS); }
// create a Xuggler container object IContainer container = IContainer.make(); if(container.open(file.getPath(),IContainer.Type.READ,null) < 0) { return false; } // query how many streams the call to open found boolean isH264 = false; boolean isAAC = false; int numStreams = container.getNumStreams(); for(int i = 0; i < numStreams; i++) { // find the stream object IStream stream = container.getStream(i); // get the pre-configured decoder that can decode this stream; IStreamCoder coder = stream.getStreamCoder(); if (coder.getCodecID() == ID.CODEC_ID_H264) { isH264 = true; } if (coder.getCodecID() == ID.CODEC_ID_AAC) { isAAC = true; } } if (container !=null) { container.close(); container = null; } return isH264 && isAAC;
/** * Create the necessary reader */ synchronized private void create(DataInput input) { setupReader(); // Check whether the string we have is a valid URI final IContainer container = IContainer.make(); final int openResult = container.open(input, null, true, true); if (openResult < 0) { logger.error("Error opening container. Error " + openResult + " (" + IError.errorNumberToType(openResult).toString() + ")"); return; } setupReader(container); }
/** * Returns the duration of the video in seconds. * * @return The duration of the video in seconds. */ public synchronized long getDuration() { final long duration = (this.reader.getContainer().getStream(this.streamIndex).getDuration()); final double timebase = this.reader.getContainer().getStream(this.streamIndex).getTimeBase().getDouble(); return Math.round(duration * timebase); }
IContainer container = IContainer.make(); if (container.open(movie, IContainer.Type.READ, null) < 0) { throw new RuntimeException("Cannot open '" + movie + "'"); } logger.info("# Duration (ms): " + ((container.getDuration() == Global.NO_PTS) ? "unknown" : "" + container.getDuration() / 100)); logger.info("# File size (bytes): " + container.getFileSize()); logger.info("# Bit rate: " + container.getBitRate());
/** * {@inheritDoc} * * @see com.xuggle.mediatool.MediaToolAdapter#onVideoPicture(com.xuggle.mediatool.event.IVideoPictureEvent) */ @Override public void onVideoPicture(final IVideoPictureEvent event) { // event.getPicture().getTimeStamp(); if (event.getStreamIndex() == XuggleVideo.this.streamIndex) { XuggleVideo.this.currentMBFImage = ((MBFImageWrapper) event.getImage()).img; XuggleVideo.this.currentFrameIsKeyFrame = event.getMediaData().isKeyFrame(); XuggleVideo.this.timestamp = (long) ((event.getPicture().getTimeStamp() * event.getPicture().getTimeBase().getDouble()) * 1000) + XuggleVideo.this.timestampOffset; XuggleVideo.this.currentFrameUpdated = true; } } }
private static final String filename = "c:/myvideo.mp4"; IContainer container = IContainer.make(); int result = container.open(filename, IContainer.Type.READ, null); long duration = container.getDuration(); long fileSize = container.getFileSize();
IContainer iContainer = IContainer.make(); if (iContainer.open(inputStream, IContainer.Type.READ, format) >= 0) { IMediaReader mediaReader = ToolFactory.makeReader(iContainer); ... }
IMediaReader reader = ToolFactory.makeReader(filename); IContainer container = reader.getContainer(); if (container.queryStreamMetaData() >= 0) { long duration = container.getDuration(); // <-- got it }
/** * Create the necessary reader */ synchronized private void create(DataInput input) { setupReader(); // Check whether the string we have is a valid URI final IContainer container = IContainer.make(); final int openResult = container.open(input, null, true, true); if (openResult < 0) { logger.error("Error opening container. Error " + openResult + " (" + IError.errorNumberToType(openResult).toString() + ")"); return; } setupReader(container); }
/** * Returns the duration of the video in seconds. * * @return The duration of the video in seconds. */ public synchronized long getDuration() { final long duration = (this.reader.getContainer().getStream(this.streamIndex).getDuration()); final double timebase = this.reader.getContainer().getStream(this.streamIndex).getTimeBase().getDouble(); return Math.round(duration * timebase); }
/** * {@inheritDoc} * * @see com.xuggle.mediatool.MediaToolAdapter#onVideoPicture(com.xuggle.mediatool.event.IVideoPictureEvent) */ @Override public void onVideoPicture(final IVideoPictureEvent event) { // event.getPicture().getTimeStamp(); if (event.getStreamIndex() == XuggleVideo.this.streamIndex) { XuggleVideo.this.currentMBFImage = ((MBFImageWrapper) event.getImage()).img; XuggleVideo.this.currentFrameIsKeyFrame = event.getMediaData().isKeyFrame(); XuggleVideo.this.timestamp = (long) ((event.getPicture().getTimeStamp() * event.getPicture().getTimeBase().getDouble()) * 1000) + XuggleVideo.this.timestampOffset; XuggleVideo.this.currentFrameUpdated = true; } } }
IContainer container = IContainer.make(); // open the video container.open("myvideo.flv", IContainer.Type.READ, null);
/** * Create the necessary reader */ synchronized private void create(InputStream stream) { setupReader(); // Check whether the string we have is a valid URI final IContainer container = IContainer.make(); final int openResult = container.open(stream, null, true, true); if (openResult < 0) { logger.error("Error opening container. Error " + openResult + " (" + IError.errorNumberToType(openResult).toString() + ")"); return; } setupReader(container); }
/** * Create the necessary reader */ synchronized private void create(InputStream stream) { setupReader(); // Check whether the string we have is a valid URI final IContainer container = IContainer.make(); final int openResult = container.open(stream, null, true, true); if (openResult < 0) { logger.error("Error opening container. Error " + openResult + " (" + IError.errorNumberToType(openResult).toString() + ")"); return; } setupReader(container); }