gpt4 book ai didi

android - 在ExoPlayer中复制音频ByteBuffer

转载 作者:行者123 更新时间:2023-12-03 01:39:38 25 4
gpt4 key购买 nike

我正在尝试处理Android ExoPlayer中的音频缓冲区。在DefaultAudioSink类的writeBuffer函数中,音频数据进入ByteBuffer对象。就我而言,我想从此ByteBuffer中获取值(如果可能,为Byte [])以在创建新的ByteBuffer并将其提供给audioTrack之前处理数据。

我首先尝试将原始ByteBuffer克隆到新的ByteBuffer中,然后将其发送到audioTrack(如Deep copy duplicate() of Java's ByteBuffer中所述),以验证其是否仍在工作。但是结果是目的地和原始缓冲区都为空(与该解决方案一样)

public static ByteBuffer clone(ByteBuffer original) {
ByteBuffer clone = ByteBuffer.allocate(original.capacity());
original.rewind();//copy from the beginning
clone.put(original);
original.rewind();
clone.flip();
return clone;
}

或诸如加速音频之类的东西(如果我删除了倒带电话)。

一个简单的
ByteBuffer newBuffer = buffer.duplicate();

具有相同的行为。

我试图了解为什么我无法获得可复制的音频ByteBuffer,我可以将其传输到AudioTrack并听到相同的声音。

最佳答案

您是否尝试过复制并包装返回的ByteBuffer的数组?即

byte[] copy = Arrays.copyOf(original.array(), original.array().length)
return ByteBuffer.wrap(copy, 0, copy.length)

关于android - 在ExoPlayer中复制音频ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48447067/

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