CS-W07G-CY /Ai-Ball のマイクから音声を取り出す方法 Android,Java

大分前にかった 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に変換する必要がある
}


コメントを残す

メールアドレスが公開されることはありません。