【问题标题】:MediaCodec: How to test/play the output of Encoder.?MediaCodec:如何测试/播放编码器的输出。?
【发布时间】:2013-01-29 09:41:17
【问题描述】:

我是安卓开发新手。我正在尝试为在 jellybean 版本上运行的 android 手机编写一个视频压缩器应用程序。我正在使用 MediaCodec API。

以下是我为启动解码器和编码器所做的初始设置。我按照文档进行了编码和解码。但是我得到的输出不能通过简单地双击来播放。谁能建议我一种检查输出以查看它是否有效的方法。

// 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();

我真的被困在这里了。请帮帮我。

提前致谢:)

【问题讨论】:

  • 编码器的输出将是一个基本流。您可以尝试通过 JM Code 解码(因为您的编解码器类型是 H.264)并查看 YUV 数据吗?

标签: android video android-4.2-jelly-bean android-mediacodec


【解决方案1】:

@Ganesh 的评论是正确的提示。

检查http://developer.android.com/reference/android/media/MediaMuxer.html 将您的流多路复用为适当的容器格式,例如 MP4。

【讨论】:

  • 这是在 API 18 中添加的。
猜你喜欢
  • 2014-12-28
  • 2017-03-15
  • 2021-04-12
  • 2014-04-30
  • 2016-03-27
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 2014-04-19
相关资源
最近更新 更多