Şu anda bir Android cihazından bir Java programına canlı mikrofon ses akışı yürütmeye çalışıyorum. Yöntemimin doğru olduğunu onaylamak için iki android cihaz arasında canlı ses göndermeyle başladım. Ses, alıcı cihazda neredeyse hiç gecikme olmadan mükemmel bir şekilde duyulabilir. Daha sonra aynı ses akışını küçük bir Java programına gönderiyorum ve verilerin doğru bir şekilde buraya gönderildiğini doğruladım. Şimdi yapmak istediğim, bu verileri kodlamak ve bir şekilde Java programını çalıştıran sunucuda oynatmak. HTML5 veya JavaScript kullanarak bir web tarayıcısında oynamayı tercih ederim ancak VLC gibi alternatif yöntemlere açığım. İşte Akışı Canlı Android Audio - Sunucu
bunu biliyorum canlı mikrofon ses yapublic class MainActivity extends Activity {
private Button startButton,stopButton;
public byte[] buffer;
public static DatagramSocket socket;
AudioRecord recorder;
private int sampleRate = 44100;
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
private boolean status = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startButton = (Button) findViewById (R.id.start_button);
stopButton = (Button) findViewById (R.id.stop_button);
startButton.setOnClickListener(startListener);
stopButton.setOnClickListener(stopListener);
minBufSize += 2048;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private final OnClickListener stopListener = new OnClickListener() {
@Override
public void onClick(View arg0) {
status = false;
recorder.release();
Log.d("VS","Recorder released");
}
};
private final OnClickListener startListener = new OnClickListener() {
@Override
public void onClick(View arg0) {
status = true;
startStreaming();
}
};
public void startStreaming()
{
Thread streamThread = new Thread(new Runnable(){
@Override
public void run()
{
try{
DatagramSocket socket = new DatagramSocket();
Log.d("VS", "Socket Created");
byte[] buffer = new byte[minBufSize];
Log.d("VS","Buffer created of size " + minBufSize);
Log.d("VS", "Address retrieved");
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,audioFormat,minBufSize);
Log.d("VS", "Recorder initialized");
recorder.startRecording();
InetAddress IPAddress = InetAddress.getByName("192.168.1.5");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
while (status == true)
{
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 50005);
socket.send(sendPacket);
}
} catch(UnknownHostException e) {
Log.e("VS", "UnknownHostException");
} catch (IOException e) {
Log.e("VS", "IOException");
e.printStackTrace();
}
}
});
streamThread.start();
}
}
gönderir Ve burada verilerde Java programı okumak için kodudur Android uygulaması için kod ..
class Server
{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(50005);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData().toString());
System.out.println("RECEIVED: " + sentence);
}
}
}
olduğunu Bunu, Java programına göndermeden önce uygulama tarafında ses kodlamalıyım, ancak AudioRecorder'ı kullanırken kodlama hakkında nasıl gideceğimi bilmiyorum. Ben hiç deneyimim yok gibi NDK kullanmamayı tercih ediyorum ve bunu nasıl kullanacağımı öğrenmek için gerçekten zamanım yok .... henüz :)
yerine
CHANNEL_IN_MONO
kullanın. Akış sesini ne kullandınız? Sadece tek yolla istiyorum. – AtiehBir Android uygulamasından bir masaüstü uygulamasına mikrofon akışı sağlayan bir android uygulaması yazmak istiyorum. Gönderdiğiniz içerikle ilgili bazı kaynaklara birkaç yararlı işaretçi sağlayabilir misiniz? Bu son derece yararlı olurdu! Teşekkür ederim! :) – wayway
İki android cihaz arasında ses nasıl geçti? – pkBhati