2

私はAndroid開発に不慣れです。ジェリービーンズバージョンで動作するAndroid携帯用のビデオコンプレッサーアプリケーションを作成しようとしています。MediaCodecAPIを使用しています。

以下は、デコーダーとエンコーダーを起動するために行った初期設定です。ドキュメントに従ってエンコードとデコードを行いました。しかし、私が得ている出力は、それをダブルクリックするだけでは再生できません。誰かが私に出力をチェックしてそれが機能したかどうかを確認する方法を提案できますか?

// Prepare and start Decoder.
MediaCodec mediaDecoder = MediaCodec.createDecoderByType(inputFileMIME /* got from input file using MediaMetadataRetriever */);
mediaDecoder.configure(mediaFormatForDecoder /* got from input file using MediaMetadataRetriever */, null, null, 0);
mediaDecoder.start();
ByteBuffer[] decoderInputBuffers = mediaDecoder.getInputBuffers();
ByteBuffer[] decoderOutputBuffers = mediaDecoder.getOutputBuffers();


int width = 320, height = 240;
int bitRate = 125000, frameRate = 15;
int colorFormat = MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar;
int iFrameInterval = 75;

// Create video format for encoder.
MediaFormat mediaFormatForEncoder = MediaFormat.createVideoFormat("video/avc",width,height);
mediaFormatForEncoder.setInteger(MediaFormat.KEY_BIT_RATE, bitRate) ;
mediaFormatForEncoder.setInteger(MediaFormat.KEY_FRAME_RATE, frameRate);
mediaFormatForEncoder.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat);
mediaFormatForEncoder.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, iFrameInterval);

// Prepare and start Encoder.
MediaCodec mediaEncoder = MediaCodec.createEncoderByType("video/avc");
mediaEncoder.configure(mediaFormatForEncoder, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaEncoder.start();
ByteBuffer[] encoderInputBuffers = mediaEncoder.getInputBuffers();
ByteBuffer[] encoderOutputBuffers = mediaEncoder.getOutputBuffers();

私は本当にここで立ち往生しています。私を助けてください。

前もって感謝します :)

4

1 に答える 1

0

@Ganesh のコメントは正しいヒントです。

http://developer.android.com/reference/android/media/MediaMuxer.htmlをチェックして、ストリームを MP4 などの適切なコンテナ形式に多重化します。

于 2015-05-12T23:25:33.560 に答える