Android MediaCodec and MediaMuxer

浏览:48日期:2022-11-11

问题描述

Android MediaMuxer API 中有这样一段sample codehttps://developer.android.com...

MediaMuxer muxer = new MediaMuxer('temp.mp4', OutputFormat.MUXER_OUTPUT_MPEG_4); // More often, the MediaFormat will be retrieved from MediaCodec.getOutputFormat() // or MediaExtractor.getTrackFormat(). MediaFormat audioFormat = new MediaFormat(...); MediaFormat videoFormat = new MediaFormat(...); int audioTrackIndex = muxer.addTrack(audioFormat); int videoTrackIndex = muxer.addTrack(videoFormat); ByteBuffer inputBuffer = ByteBuffer.allocate(bufferSize); boolean finished = false; BufferInfo bufferInfo = new BufferInfo(); muxer.start(); while(!finished) { // getInputBuffer() will fill the inputBuffer with one frame of encoded // sample from either MediaCodec or MediaExtractor, set isAudioSample to // true when the sample is audio data, set up all the fields of bufferInfo, // and return true if there are no more samples. finished = getInputBuffer(inputBuffer, isAudioSample, bufferInfo); if (!finished) { int currentTrackIndex = isAudioSample ? audioTrackIndex : videoTrackIndex; muxer.writeSampleData(currentTrackIndex, inputBuffer, bufferInfo); } }; muxer.stop(); muxer.release();

这段代码 finished = getInputBuffer(inputBuffer, isAudioSample, bufferInfo); 似乎不是API提供的函数,xref里没有搜到,是自定义的函数吗?还是新版本去掉了这个API?

Thanks

问题解答

回答1:

MediaCodec中的函数,你看下这个类中是否存在

回答2:

既然是sample code,这显然属于自定义函数,非API方法。

相关文章: