gpt4 book ai didi

android - 如何使用新的 MediaCodec getInputBuffer(int index)

转载 作者:太空狗 更新时间:2023-10-29 15:52:06 24 4
gpt4 key购买 nike

我有一个正在使用 MediaCodec 解码 mp3 音频以使用 MediaPlayer 和 AudioTrack 播放的示例。该示例使用的是 getInputBuffers(),现在已在 API 21+ 中取消。新的 getInputBuffer(int index) 返回一个缓冲区而不是数组,MediaCodec 的 API 引用仍然显示 getInputBuffers() 的用例。

谁能解释一下我需要如何使用新方法?我每次都只得到索引 0 吗?我开始循环并获取每个并创建一个数组,但我没有看到任何地方可以获取可用缓冲区的长度。

最佳答案

您不应该尝试获取所有缓冲区。

在 API 21 之前,您需要执行 ByteBuffer inputs[] = codec.getInputBuffers()。然后 index = codec.dequeueInputBuffer() 将返回一个缓冲区索引,您将使用 inputs[index],最后使用 codec.queueInputBuffer 提交缓冲区(索引,...)

请注意,您一次只能接触 inputs[] 中的一个元素,并且您只能接触 dequeueInputBuffer 之间的那个元素>queueInputBuffer 调用。

现在,您一次只使用一个 ByteBuffer 对象数组,而现在应该只获取您要访问的单个 ByteBuffer填写。也就是说,在 index = codec.dequeueInputBuffer() 之后,不使用 inputs[index],而是调用 codec.getInputBuffer(index)

基本上,您用来从 getInputBuffers() 返回的数组仍然存在于 MediaCodec 对象内部,但您不需要保留完整的数组数组可用,每次只获取您要使用的单个缓冲区。

关于android - 如何使用新的 MediaCodec getInputBuffer(int index),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31419469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com