大分前にかった CS-W07G-CY / Ai-Ballのマイクから音声を取り出す方法がわかったのでメモ。
内蔵されている HTTPサーバ内に設置してある JavaApplet が利用しているURLに接続するとADPCM形式の音声とJPEG画像をHTTPマルチパートメッセージで返信してくるので、その内容を音声と画像にわけると取得できる。
カメラへの接続URL
http://[IPアドレス]/?action=appletvastream
内蔵されてる JavaApplet が利用しているURLを利用する。
(applet”va”stream vaの部分が audio と video 指定のことらしい。 applet”v”stream とすると画像だけになる)
レスポンス例
--boundarydonotcross Content-Type: image/jpeg Content-Length: 23585 00000001000000243200........
body 部分の取得
Content-Length のサイズ分だけ切り出して byte[] に格納等をする。
ADPCM音声の取得方法
body 部分先頭から 10byte まではコンテンツ部分のヘッダーとなる。
1-5byte目までを取り出して int にした値が ADPCM音声のサイズ なので取得する。
取得したサイズ分だけ 11byte目から取得する。
コード例)
//0 - 10 までは コンテンツのヘッダー int audio_size = CommonUtil.byteArrayToInt(content,1); if(audio_size > 0){ //音声が入っていた //Log.d(TAG, "audio size:"+audio_size); byte adpcm[] = new byte[audio_size]; System.arraycopy(content, 11, adpcm, 0, audio_size); //TODO Androidで再生する為にはADPCMをPCMに変換する必要がある }