2017-11-07 8 views
0

私はAndroidでオーディオを録音しようとしています。私はさまざまな例を見つけましたが、私が理解していないことが1つありました。PCM 16ビット録音バイトとショートと

一部の人々はshorts、他のbytesと書いています。

shortbytesに変換する例を次に示します。

private byte[] short2byte(short[] sData) { 
     int shortArrsize = sData.length; 
     byte[] bytes = new byte[shortArrsize * 2]; 
     for (int i = 0; i < shortArrsize; i++) { 
      bytes[i * 2] = (byte) (sData[i] & 0x00FF); 
      bytes[(i * 2) + 1] = (byte) (sData[i] >> 8); 
      sData[i] = 0; 
     } 
     return bytes; 

    } 

これを行う目的は何ですか? PCM 16bitを使用している限り、shortsを直接ファイルに書き込まないようにしてください。

この点については、オーディオの観点から説明してください。

おかげ短い配列を受け取り、ファイルにと書いて何のAPIが存在しないとして、あなたが「直接短絡を書く」ことができないJavaでは

答えて

1

。バイナリファイルにのみバイト配列を書き込むことができます。主な問題はエンディアンです(LSBファーストまたはMSBファースト):標準エンディアンはありません。

は、そのため次の2つの選択肢があります:あなた自身をバイトとして

  • だけである、ショートパンツをエンコードするshort配列をコードすることが

    • 使用ByteBufferに裏付けされたリトルエンディアンShortBufferをどのようなコードます投稿します。
  • 関連する問題