gpt4 book ai didi

android - 在 Android 中使用 Opus Codec 进行录制和播放

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:35 28 4
gpt4 key购买 nike

我正在做一个需要使用 Opus Codec 进行录制和播放的项目,我搜索了很多但找不到使用该解决方案的任何演示/示例。我找到了一个带有编码器但找不到解码器的演示。我只用C找到了这个编解码器的源代码,你能帮我吗?

最佳答案

您好,该演示是一个很好的起点,他真的很接近解决它。然而,每个包必须从编码器单独发送到解码器。而不是将所有内容保存到文件中,然后在不考虑包启动的情况下将它们读回。
我修改了代码以写入编码字节数,当我解码时,我首先读取每个数据包中的字节数,然后读取有效载荷。

OpusEncoder.java 中修改后的代码

public void write( short[] buffer ) throws IOException
{
byte[] encodedBuffer = new byte[buffer.length];
int lenEncodedBytes = this.nativeEncodeBytes( buffer , encodedBuffer);
Log.i(TAG,"encoded "+lenEncodedBytes+" bytes");
if (lenEncodedBytes > 0)
{
this.out.write(lenEncodedBytes);
this.out.write( encodedBuffer, 0, lenEncodedBytes );
}
else
{
Log.e( TAG, "Error during Encoding. Error Code: " + lenEncodedBytes);

throw new IOException( "Error during Encoding. Error Code: " + lenEncodedBytes );
}
}


下面是 OpusDecoder.java 中修改后的代码

        byte[] encodedBuffer;
int bytesEncoded=this.in.read();
int bytesDecoded=0;

Log.d( TAG, bytesEncoded + " bytes read from input stream" );
if ( bytesEncoded >= 0 )
{
encodedBuffer=new byte[bytesEncoded];
int bytesRead = this.in.read( encodedBuffer );
bytesDecoded = nativeDecodeBytes( encodedBuffer , buffer);
Log.d( TAG, bytesEncoded + " bytes decoded" );
}

关于android - 在 Android 中使用 Opus Codec 进行录制和播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042126/

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