Sto lavorando a un progetto che è necessario registrare e riprodurre con Opus Codec, cerco molto ma non riesco a trovare alcun demo/esempio utilizzando quella soluzione. Trovo una demo con encoder ma non riesco a trovare il decodificatore. Trovo solo il codice sorgente di questo codec usando C, puoi aiutarmi?Registrazione e riproduzione con Opus Codec in Android
risposta
Prova questo GitHub demo. L'ho compilato ma non suona il suono registrato.
Ciao, l'ho provato, ma non ha funzionato.e la nota di rilascio in quel git ha menzionato "Cosa non funziona: Registrazione e riproduzione utilizzando il codec opus " –
Ciao, quella demo è un buon punto di partenza, era davvero vicino a risolverlo. Tuttavia ogni pacchetto deve essere inviato separatamente dall'encoder al decodificatore. Invece di salvare tutto in un file e quindi leggerli di nuovo senza alcun riguardo per l'avvio del pacchetto.
Ho modificato il codice per scrivere anche il numero di byte codificati e quando decodifico, ho letto prima il numero di byte in ogni pacchetto e poi il carico utile.
Ecco il codice modificato in 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);
}
}
Ecco il codice modificato in 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");
}
di" pacchetto "intendi" pacchetto "? Ho provato la tua patch ma ancora non ho ottenuto il record e la riproduzione per funzionare. un sacco di soli pop e clic – spy
ancora in giro con questo, sembra registrare ok, ma la riproduzione non funziona. Opus sta segnalando solo decodificare 3 byte alla volta. – spy
Hai trovato qualcosa? Sto cercando lo stesso ... – JVS
Se hai solo bisogno di registrare, questa applicazione afferma di farlo: https://play.google.com/store/apps/details?id=dje073.android.modernrecforgepro –
i realizzare questo commento è molto tardi, ma abbiamo recentemente completato questo: https://github.com/edwardsmarkf/opus-streaming-recorder – edwardsmarkf