mediaFormat.setByteBuffer("csd-0", ByteBuffer.wrap(bytes)) 其中csd-0、csd-1 这些键可以从 MediaExtractor#getTrackFormat 获取的MediaFormat中获取,这些特定的数据会在start 时自动提交给 MediaCodec,无需直接提交此数据,如果在输出缓冲区或格式更改之前调用了 flush,则会丢失提交的特定数据,就需要在 queueInputBu...
private static final String CSD0 = "csd-0"; private static final String CSD1 = "csd-1"; private static final int TIME_INTERNAL = 1; private static final int DECODER_TIME_INTERNAL = 1; private MediaCodec mCodec; private long mCount = 0; // 媒体解码器MediaCodec用的 //...
其中csd-0、csd-1 这些键可以从 MediaExtractor#getTrackFormat 获取的MediaFormat中获取,这些特定的数据会在start 时自动提交给 MediaCodec,无需直接提交此数据,如果在输出缓冲区或格式更改之前调用了 flush,则会丢失提交的特定数据,就需要在 queueInputBuffer 的调用中使用标志 BUFFER_FLAG_CODEC_CONFIG 标记这类数据。
編解碼器特定數據也可以包含在 ByteBuffer 專案中傳遞的格式#configure configure,其中包含索引鍵 「csd-0」、“csd-1 等。這些索引鍵一律包含在從 取得的MediaExtractor#getTrackFormat MediaExtractor追蹤MediaFormat中。 格式的編解碼器特定數據會自動提交至編解碼器;#start您強式>「不可<」/「強」>明確<提交此數...
//SPS设为"csd-0", PPS设为"csd-1" mediaFormat.setByteBuffer("csd-0", extradata); // ... mediaCodec.configure(mediaFormat, surface, 0, 0); // ... 对于mp4/flv/mkv等封装,我们得到的是AVCC格式的extradata,需要先将该extradata转换为Annex-B格式的两个NALU, 然后用startcode进行分割。
1// 获取可用的输入缓冲区的索引 2public int dequeueInputBuffer (longtimeoutUs) 3// 获取输入缓冲区 4public ByteBuffer getInputBuffer(intindex) 5// 将填满数据的inputBuffer提交到编码队列 6public final void queueInputBuffer(intindex,intoffset,intsize,longpresentationTimeUs,intflags) ...
1、步骤 1.1、初始化MediaCodec 解码器类型(mime),视频宽度(width),视频高度(height),最大数据输入大小(max_input_size),csd-0,csd-1。 mediaFormat=MediaFormat.createVideoFormat(mime,width,height);mediaFormat.setInteger(MediaFormat.KEY_WIDTH,width);mediaFormat.setInteger(MediaFormat.KEY_HEIGHT,height);med...
注意自 Android 5.1(API 等级 22,Build.VERSION_CODES.LOLLIPOP_MR1) 开始,所有视频编解码器都支持 YUV 4:2:0 格式的 buffers。另外在 Android 5.0(API 等级 21) 和 Image 类的支持出现之前,我们需要使用 MediaFormat#KEY_STRIDE 和 MediaFormat#KEY_SLICE_HEIGHT 属性了解 Raw Video ByteBuffers 中的数据放置...
//SPS设为"csd-0", PPS设为"csd-1" mediaFormat.setByteBuffer("csd-0", extradata); // ... mediaCodec.configure(mediaFormat, surface, 0, 0); // ... 对于mp4/flv/mkv等封装,我们得到的是AVCC格式的extradata,需要先将该extradata转换为Annex-B格式的两个NALU, 然后用startcode进行分割。
编码器特定数据也可以在包含在传递给configure方法的MediaFormat中。这些特定数据是MediaFormat中以"csd-0", "csd-1"等键对应的ByteBuffer条目。这些键通常包含在从MediaExtractor中获取到达轨道格式中(track MediaFormat)。 编解码器特定数据在编解码器start()之后会自动提交给编解码器。你必须不能显式提交这些数据。