1

スピーカーにストリームを出力する PC にマイク入力データをストリーミングしようとしています。ストリームは圧縮し、後で暗号化する必要があります。

私は次のことを試しました:

アンドロイド携帯:

AudioGroup audioGroup = new AudioGroup();
audioGroup.setMode(AudioGroup.MODE_NORMAL);
AudioStream audioStream = new AudioStream(InetAddress.getLocalHost());
int port = audioStream.getLocalPort();
// tell other side which port to use (this works)
daos.writeInt(port);

audioStream.setCodec(AudioCodec.PCMU);
audioStream.setMode(RtpStream.MODE_SEND_ONLY);
audioStream.associate(adr, port);
audioStream.join(audioGroup);
AudioManager Audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
Audio.setMode(AudioManager.MODE_IN_COMMUNICATION);

受信側の Java プログラム。送信に UDP ソケットを使用するにはどうすればよいですか?

DatagramSocket datagramSocket = new DatagramSocket(port);
System.out.println("Waiting for audio data...");  
source = AudioSystem.getAudioInputStream(????.getInputStream());
AudioSystem.getAudioInputStream(AudioFormat.Encoding.ULAW, source);
byte[] audioData = new byte[4096];
source.read(audioData, 0, 4096);
toSpeaker(audioData);

誰かが私を助けてくれることを願っています。もちろん、他のアイデアも大歓迎です。

4

1 に答える 1

0

このコードを試してください。

public class StreamAudioDemo extends Activity implements OnClickListener, OnPreparedListener, OnCompletionListener, OnErrorListener{

private MediaPlayer mp;
private ProgressDialog pd;
private Button btnplay;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btnplay=(Button)findViewById(R.id.play);
    btnplay.setOnClickListener(this);
}
@Override
public void onPrepared(MediaPlayer mp) {
      Log.i("StreamAudioDemo", "prepare finished");
      pd.setMessage("Playing.....");
      mp.start();
}

@Override
public void onClick(View v) {
    try
    {
        pd = new ProgressDialog(this);
        pd.setMessage("Buffering.....");
        pd.show();
        mp = new MediaPlayer();
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.setOnPreparedListener(this);
        mp.setOnErrorListener(this);  //http://www.youtube.com/watch?v=pj-T_LxSCng
        mp.setDataSource("http://www.robtowns.com/music/blind_willie.mp3");
        //mp.setDataSource("http://www.youtube.com/watch?v=pj-T_LxSCng");
        mp.prepareAsync();
        mp.setOnCompletionListener(this);
    }
    catch(Exception e)
    {
        Log.e("StreamAudioDemo", e.getMessage());
    }

}

@Override
public void onCompletion(MediaPlayer arg0) {
    pd.dismiss();
    Toast.makeText(getApplicationContext(), "Completed", Toast.LENGTH_LONG).show();     

}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
    // TODO Auto-generated method stub
    pd.dismiss();
    return false;
}

}

于 2013-04-16T06:45:08.720 に答える