首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制ExoPlayer中的音频ExoPlayer

复制ExoPlayer中的音频ExoPlayer
EN

Stack Overflow用户
提问于 2018-01-25 15:58:51
回答 1查看 408关注 0票数 0

我正在尝试处理Android ExoPlayer中的音频缓冲区。在writeBuffer类的DefaultAudioSink函数中,音频数据将出现在ByteBuffer对象中。在我的例子中,我希望从这个Byte[]中获取值(如果可能的话),以处理以前的数据,以创建一个新的ByteBuffer,并将其交给audioTrack。

我首先尝试在一个新的ByteBuffer中克隆原始的ByteBuffer,然后将它发送到audioTrack (如ByteBuffer的深拷贝复制()中所描述的),以验证它是否仍然有效。但结果是目标和原始缓冲区的缓冲区为空(与此解决方案一样)。

代码语言:javascript
复制
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;
}

或者类似于加速音频(如果我删除倒带调用)。

一个简单的

代码语言:javascript
复制
ByteBuffer newBuffer = buffer.duplicate();

也有同样的行为。

我试图理解为什么我不能得到一个工作的复制音频ByteBuffer,我可以传输到AudioTrack,并听到相同的声音。

EN

回答 1

Stack Overflow用户

发布于 2018-01-25 17:35:28

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

代码语言:javascript
复制
byte[] copy = Arrays.copyOf(original.array(), original.array().length)
return ByteBuffer.wrap(copy, 0, copy.length)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48447067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档