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 .... }
if (audiostreamt == -1) throw new RuntimeException("No audio steam found"); if(videocoder.open()<0 ) throw new RuntimeException("Cant open video coder"); IPacket packetvideo = IPacket.make(); 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()); IVideoPicture picture = IVideoPicture.make(videocoder.getPixelType(), videocoder.getWidth(), videocoder.getHeight()); int offset = 0; while (offset < packetvideo.getSize()){ int bytesDecoded = videocoder.decodeVideo(picture, packetvideo, offset); audioCoder.getChannels(), IAudioSamples.Format.FMT_S32); int offset = 0; while(offset<packetaudio.getSize()) int bytesDecodedaudio = audioCoder.decodeAudio(samples, packetaudio, offset);
if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { videoStreamId = i; videoCoder = coder; if (videoCoder.open() < 0) throw new RuntimeException( "could not open video decoder for container: " + filename); if (videoCoder.getPixelType() != IPixelFormat.Type.BGR24) { resampler = IVideoResampler.make(videoCoder.getWidth(), videoCoder .getHeight(), IPixelFormat.Type.BGR24, videoCoder .getWidth(), videoCoder.getHeight(), videoCoder .getPixelType()); if (resampler == null) throw new RuntimeException( .getPixelType(), videoCoder.getWidth(), videoCoder .getHeight()); int bytesDecoded = videoCoder.decodeVideo(picture, packet, offset); if (bytesDecoded < 0) { videoCoder.close(); videoCoder = null;
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(); }
while (i < container.getNumStreams()) { s = container.getStream(i); if (s != null && s.getStreamCoder().getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { final int w = s.getStreamCoder().getWidth(); final int h = s.getStreamCoder().getHeight(); this.width = w; this.height = h;
if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { videoStreamId = i; videoCoder = coder; if (videoCoder.open() < 0) throw new RuntimeException("could not open video decoder for container: " + filename); int height = videoCoder.getHeight(); int width = videoCoder.getWidth();
IStream stream = container.getStream(i); IStreamCoder coder = stream.getStreamCoder(); if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) { audioStreamId = i; audioCoder = coder; if (audioCoder.open() < 0) { throw new RuntimeException("could not open audio decoder for container: " + filename); writer.addAudioStream(0, 0, audioCoder.getChannels(), audioCoder.getSampleRate()); writer.addVideoStream(1, 1, width, height); IPacket packet = IPacket.make(); IAudioSamples samples = IAudioSamples.make(2048, audioCoder.getChannels()); int offset = 0; while (offset < packet.getSize()) { try { int bytesDecoded = audioCoder.decodeAudio(samples, packet, offset); if (bytesDecoded < 0) { audioCoder.close(); audioCoder = null;
s.getStreamCoder().getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) (int) IAudioSamples.findSampleBitDepth(aAudioCoder.getSampleFormat()), aAudioCoder.getSampleRate() / 1000d, aAudioCoder.getChannels()); af.setSigned(true); af.setBigEndian(false);
if ( coder.getCodecType( ) == ICodec.Type.CODEC_TYPE_AUDIO ) { audioStreamId = i; break; writerCoder.setFlag( IStreamCoder.Flags.FLAG_QSCALE, false ); writerCoder.setBitRate( BITRATE * 1000 ); writerCoder.setBitRateTolerance( 0 ); System.out.println( "bitrate for output = " + writerCoder.getBitRate( ) );
countainer1.open("audio.mp3", IContainer.Type.READ, null); IStreamCoder audio1 = countainer1.getStream(0).getStreamCoder(); audio1.open(null, null); countainer2.open("audio2.mp3", IContainer.Type.READ, null); IStreamCoder audio2 = countainer2.getStream(0).getStreamCoder(); audio2.open(null, null); mWriter.addAudioStream(0, 0, audio1.getChannels(), audio1.getSampleRate()); IAudioSamples samples = IAudioSamples.make(512, audio1.getChannels(), IAudioSamples.Format.FMT_S32); audio1.decodeAudio(samples, packet, 0); mWriter.encodeAudio(0, samples); IAudioSamples samples = IAudioSamples.make(512, audio2.getChannels(), IAudioSamples.Format.FMT_S32); audio2.decodeAudio(samples, packet, 0); mWriter.encodeAudio(0, samples);
if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO){ this._iAudioStreamId = i; this._audioCoder = coder; this._iInputSampleRate = coder.getSampleRate(); bFound = true;
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); }
if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { videoStreamId = i; videoCoder = coder; if (videoCoder.open() < 0) throw new RuntimeException( "could not open video decoder for container: " + filename); if (videoCoder.getPixelType() != IPixelFormat.Type.BGR24) { resampler = IVideoResampler.make(videoCoder.getWidth(), videoCoder .getHeight(), IPixelFormat.Type.BGR24, videoCoder .getWidth(), videoCoder.getHeight(), videoCoder .getPixelType()); if (resampler == null) throw new RuntimeException( .getPixelType(), videoCoder.getWidth(), videoCoder .getHeight()); int bytesDecoded = videoCoder.decodeVideo(picture, packet, offset); if (bytesDecoded < 0) { videoCoder.close(); videoCoder = null;
while (i < container.getNumStreams()) { s = container.getStream(i); if (s != null && s.getStreamCoder().getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { final int w = s.getStreamCoder().getWidth(); final int h = s.getStreamCoder().getHeight(); this.width = w; this.height = h;
s.getStreamCoder().getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) (int) IAudioSamples.findSampleBitDepth(aAudioCoder.getSampleFormat()), aAudioCoder.getSampleRate() / 1000d, aAudioCoder.getChannels()); af.setSigned(true); af.setBigEndian(false);
if (coderVideo.open(null, null) < 0) throw new RuntimeException("Cant open video coder"); IPacket packetvideo = IPacket.make(); int width = coderVideo.getWidth(); int height = coderVideo.getHeight(); if (coderAudio.open(null, null) < 0) throw new RuntimeException("Cant open audio coder"); IPacket packetaudio = IPacket.make(); mWriter.addAudioStream(1, 0, coderAudio.getChannels(), coderAudio.getSampleRate()); mWriter.addVideoStream(0, 0, width, height); IVideoPicture picture = IVideoPicture.make(coderVideo.getPixelType(), width, height); coderVideo.decodeVideo(picture, packetvideo, 0); if (picture.isComplete()) mWriter.encodeVideo(0, picture); IAudioSamples samples = IAudioSamples.make(512, coderAudio.getChannels(), IAudioSamples.Format.FMT_S32); coderAudio.decodeAudio(samples, packetaudio, 0); if (samples.isComplete()) mWriter.encodeAudio(1, samples); samples = IAudioSamples.make(512, coderAudio.getChannels(), IAudioSamples.Format.FMT_S32); containerAudio.readNextPacket(packetaudio); coderAudio.decodeAudio(samples, packetaudio, 0); mWriter.encodeAudio(1, samples); }while (samples.isComplete() );
IStream stream = container.getStream(i); IStreamCoder coder = stream.getStreamCoder(); if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) { coderVideo = coder; fRate = coderVideo.getFrameRate().getDouble(); break; if (coderVideo == null || coderVideo.open(null, null) < 0) { throw new RuntimeException("Can't open video coder"); int width = coderVideo.getWidth(); int height = coderVideo.getHeight(); IVideoPicture picture = IVideoPicture.make(coderVideo.getPixelType(), width, height); coderVideo.decodeVideo(picture, packet, 0); if (picture.isComplete()) { IConverter converter = ConverterFactory.createConverter(ConverterFactory.XUGGLER_BGR_24, picture); coderVideo.close(); container.close();
if (audiostreamt == -1) throw new RuntimeException("No audio steam found"); if(videocoder.open()<0 ) throw new RuntimeException("Cant open video coder"); IPacket packetvideo = IPacket.make(); if(audioCoder.open()<0 ) throw new RuntimeException("Cant open audio coder"); mWriter.addAudioStream(0, 0, audioCoder.getChannels(), audioCoder.getSampleRate()); mWriter.addVideoStream(1, 1, videocoder.getWidth(), videocoder.getHeight()); IVideoPicture picture = IVideoPicture.make(videocoder.getPixelType(), videocoder.getWidth(), videocoder.getHeight()); int offset = 0; while (offset < packetvideo.getSize()){ int bytesDecoded = videocoder.decodeVideo(picture, packetvideo, offset); audioCoder.getChannels(), IAudioSamples.Format.FMT_S32); int offset = 0; while(offset<packetaudio.getSize()) int bytesDecodedaudio = audioCoder.decodeAudio(samples, packetaudio, offset);
if (audiostreamt == -1) throw new RuntimeException("No audio steam found"); if(videocoder.open()<0 ) throw new RuntimeException("Cant open video coder"); IPacket packetvideo = IPacket.make(); if(audioCoder.open()<0 ) throw new RuntimeException("Cant open audio coder"); mWriter.addAudioStream(0, 0, audioCoder.getChannels(), audioCoder.getSampleRate()); mWriter.addVideoStream(1, 1, videocoder.getWidth(), videocoder.getHeight()); IVideoPicture picture = IVideoPicture.make(videocoder.getPixelType(), videocoder.getWidth(), videocoder.getHeight()); int offset = 0; while (offset < packetvideo.getSize()){ int bytesDecoded = videocoder.decodeVideo(picture, packetvideo, offset); audioCoder.getChannels(), IAudioSamples.Format.FMT_S32); int offset = 0; while(offset<packetaudio.getSize()) int bytesDecodedaudio = audioCoder.decodeAudio(samples, packetaudio, offset);