2014-11-20 7 views
5

Ich arbeite an einem Projekt, das mit Opus Codec aufnehmen und wiedergeben muss, ich suche viel, aber ich kann kein Demo/Beispiel mit dieser Lösung finden. Ich finde eine Demo mit Encoder, kann aber den Decoder nicht finden. Ich finde den Quellcode dieses Codecs nur mit C, kannst du mir helfen?Aufnahme und Wiedergabe mit Opus Codec in Android

+0

Haben Sie etwas gefunden? Ich bin auf der Suche nach dem gleichen ... – JVS

+0

Wenn Sie nur aufnehmen müssen, behauptet diese App es zu tun: https://play.google.com/store/apps/details?id=dje073.android.modernrecforgepro –

+0

i realisierte diesen Kommentar ist sehr spät, aber wir haben vor kurzem abgeschlossen: https://github.com/edwardsmarkf/opus-streaming-recorder – edwardsmarkf

Antwort

0

Versuchen Sie diese GitHub demo. Ich habe es kompiliert, aber es spielt nicht den aufgenommenen Ton.

+0

Hallo, ich habe es versucht, aber es hat nicht funktioniert.und die Release-Note in diesem Git erwähnt "Was funktioniert nicht: Aufnahme und Wiedergabe mit dem Opus-Codec " –

1

Hallo, dieses Demo ist ein guter Anfang, er war wirklich nah dran, es zu lösen. Jedes Paket muss jedoch separat vom Encoder zum Decoder gesendet werden. Anstatt alles in eine Datei zu speichern und sie dann ohne Rücksicht auf den Paketstart zurückzulesen.
Ich änderte den Code, um auch die Anzahl der codierten Bytes zu schreiben und wenn ich entschlüssele, lese ich zuerst die Anzahl der Bytes in jedem Paket und dann die Nutzlast.

Hier ist der modifizierte Code 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); 
     } 
    } 


Hier wird der modifizierte Code in OpusDecoder.java

ist
 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"); 
     } 
+0

von" Paket "meinst du" Paket "? Ich habe versucht, den Patch, aber immer noch nicht die Aufnahme und die Wiedergabe zu arbeiten. viele Pops und Klicks nur – spy

+0

spielt immer noch mit diesem, es scheint, um Aufnahme ok, aber die Wiedergabe funktioniert nicht. opus meldet nur 3 Bytes gleichzeitig zu dekodieren. – spy

Verwandte Themen