目前项目中通过UDP接收到h264视频流,采用MediaCodec对h264进行解码并播放,那如何得知h264视频流的分辨率呢,查MediaCodec源码可知,通过判断dequeueOutputBuffer方法的返回值是否等于MediaCodec.INFO_OUTPUT_FORMAT_CHANGED,如果相等就调用getOutputFormat获取MediaFormat,再从中获取视频的宽高值即可。如下所示:
var outputBufferIndex: Int = mMediaCodec.dequeueOutputBuffer(bufferInfo, 100)
if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
var outputFormat = mMediaCodec.getOutputFormat()
var w = outputFormat.getInteger(MediaFormat.KEY_WIDTH)
var h = outputFormat.getInteger(MediaFormat.KEY_HEIGHT)
Log.i(TAG," w = $w ; h = $h")
}
网友评论