我一直在看看stackoverflow,但我没有找到关于什么是"createChooser"的定义以及为什么我可以使用,并且在某种情况下使用它是好的.
提前致谢.
当我们需要流音频时,没有太多关于应用此编解码器的信息.如果不应用编解码器,我的代码就像在两个设备之间建立通信的魅力一样,但我需要以该格式进行编码/解码,因为我需要与服务器进行流式处理而不是两个设备之间的流式传输(我使用2个设备测试此代码).
我正在寻找机会,如果你的任何人都能看到问题的关键在哪里.我尝试了不同的输入参数配置.也许,我使用的编解码器是错误的(我从一个带有Apache许可证的项目中获取它们.)
此值在录制器发送器中设置,如播放器 - 接收器设备中所示:
private int port=50005;
private int sampleRate = 8000 ;//44100;
private int channelConfig = AudioFormat.CHANNEL_OUT_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int minBufSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat);
Run Code Online (Sandbox Code Playgroud)
注意:播放器中的CHANNEL_OUT_MONO和录像机项目中的CHANNEL_IN_MONO.
这些是我的方法:
public void startStreamingEncoding() {
Thread streamThread = new Thread(new Runnable() {
@Override
public void run() {
try {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
DatagramSocket socket = new DatagramSocket();
short[] buffer = new short[minBufSize];
DatagramPacket packet;
final InetAddress destination = InetAddress.getByName(ip_receiver);
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,audioFormat,minBufSize*10);
recorder.startRecording();
/////Encoding:
Encoder encoder = new G711UCodec();
byte[] …Run Code Online (Sandbox Code Playgroud)