android 实时流媒体,android – 流媒体实时音频

我希望在

Android设备上具有实时音频流功能,该设备通过设备的MIC捕获音频并将其发送到服务器.我知道在录制后发送一个音频文件,但如果是实时我需要帮助.可以通过将字节数组连续发送到服务器来完成.如果是这样或者如果有其他方式,请分享您的想法.谢谢.

编辑-

Android客户端代码: –

public class Main extends Activity {

private MediaRecorder recorder;

private final String TAG = "AudioTest";

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

String hostname = "192.168.50.25";

int port = 2004;

Socket socket = null;

try {

socket = new Socket(InetAddress.getByName(hostname), port);

} catch (UnknownHostException e) {

Log.d(TAG, "Inside UnknownHostException@@@@@@@@@@@@@@@@@@@@@@");

e.printStackTrace();

} catch (IOException e) {

Log.d(TAG, "Inside IOException%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");

e.printStackTrace();

}

ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);

recorder = new MediaRecorder();

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

recorder.setOutputFile(pfd.getFileDescriptor());

try {

Log.i(TAG, pfd.getFileDescriptor().toString());

} catch (Exception e) {

Log.d(TAG, "Inside MyException################################");

}

try {

recorder.prepare();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

recorder.start();

}

JAVA服务器代码 –

public class Provider {

ServerSocket providerSocket;

Socket connection = null;

ObjectOutputStream out;

ObjectInputStream in;

String message;

Provider() {

}

void run() {

try {

// 1. creating a server socket

providerSocket = new ServerSocket(2004, 10);

// 2. Wait for connection

System.out.println("Waiting for connection");

connection = providerSocket.accept();

System.out.println("Connection received from "

+ connection.getInetAddress().getHostName());

// 3. get Input and Output streams

out = new ObjectOutputStream(connection.getOutputStream());

out.flush();

in = new ObjectInputStream(connection.getInputStream());

sendMessage("Connection successful");

// 4. The two parts communicate via the input and output streams

do {

try {

message = (String) in.readObject();

System.out.println("client>" + message);

if (message.equals("bye"))

sendMessage("bye");

} catch (ClassNotFoundException classnot) {

System.err.println("Data received in unknown format");

}

} while (!message.equals("bye"));

} catch (IOException ioException) {

ioException.printStackTrace();

} finally {

// 4: Closing connection

try {

in.close();

out.close();

providerSocket.close();

} catch (IOException ioException) {

ioException.printStackTrace();

}

}

}

void sendMessage(String msg) {

try {

out.writeObject(msg);

out.flush();

System.out.println("server>" + msg);

} catch (IOException ioException) {

ioException.printStackTrace();

}

}

public static void main(String args[]) {

Provider server = new Provider();

while (true) {

server.run();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值