Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缩小录音带的尺寸_Java_Android - Fatal编程技术网

Java 缩小录音带的尺寸

Java 缩小录音带的尺寸,java,android,Java,Android,我正在使用音频录制录制音频并将字节发送到远程服务器,但我发现字节的大小比媒体录制器大,但不幸的是,我必须使用音频录制来处理字节 我的问题是如何缩小它的尺寸,我听说这里有媒体编解码器,但我没有使用它。这是我的代码 private void startRecording() { recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER

我正在使用音频录制录制音频并将字节发送到远程服务器,但我发现字节的大小比媒体录制器大,但不幸的是,我必须使用音频录制来处理字节
我的问题是如何缩小它的尺寸,我听说这里有媒体编解码器,但我没有使用它。这是我的代码

private void startRecording() {

        recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                RECORDER_SAMPLERATE, RECORDER_CHANNELS,
                RECORDER_AUDIO_ENCODING, BufferElements2Rec * BytesPerElement);

        recorder.startRecording();

        isRecording = true;

        recordingThread = new Thread(new Runnable() {

            public void run() {

                writeAudioDataToFile();

            }
        }, "AudioRecorder Thread");
        recordingThread.start();
    }

    //Conversion of short to byte
    private byte[] short2byte(short[] sData) {
        int shortArrsize = sData.length;
        byte[] bytes = new byte[shortArrsize * 2];

        for (int i = 0; i < shortArrsize; ++i) {
            bytes[i * 2] = (byte) (sData[i] & 0x00FF);
            bytes[(i * 2) + 1] = (byte) (sData[i] >> 8);
            sData[i] = 0;
        }
        return bytes;
    }

    private void writeAudioDataToFile() {
        // Write the output audio in byte


        short sData[] = new short[BufferElements2Rec];



        while (isRecording) {
            // gets the voice output from microphone to byte format
            recorder.read(sData, 0, BufferElements2Rec);
          //  System.out.println("Short wirting to file" + sData.toString());
            try {
                // writes the data to file from buffer stores the voice buffer
                byte bData[] = short2byte(sData);
                String bdata2 =Base64.encodeToString(bData,Base64.DEFAULT);



            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    private void stopRecording() {
        // stops the recording activity
        if (null != recorder) {
            isRecording = false;


            recorder.stop();
            recorder.release();

            recorder = null;
            recordingThread = null;
        }
    }
private void startRecording(){
录音机=新的录音机(MediaRecorder.AudioSource.MIC,
记录仪采样器、记录仪通道、,
记录器\音频\编码,缓冲元素2REC*BytesPerElement);
记录器。开始记录();
isRecording=true;
recordingThread=新线程(new Runnable()){
公开募捐{
WriteeAudioDataToFile();
}
}“录音机线程”);
recordingThread.start();
}
//从短到字节的转换
专用字节[]短2字节(短[]sData){
int shortArrsize=sData.length;
字节[]字节=新字节[shortArrsize*2];
对于(int i=0;i>8);
sData[i]=0;
}
返回字节;
}
私有void writeeAudioDataToFile(){
//以字节写入输出音频
短sData[]=新短[BufferElements2Rec];
while(isRecording){
//获取从麦克风到字节格式的语音输出
记录器读取(sData,0,缓冲元件2REC);
//System.out.println(“短连接到文件”+sData.toString());
试一试{
//将数据从缓冲区写入文件存储语音缓冲区
字节bData[]=short2byte(sData);
字符串bdata2=Base64.encodeToString(bData,Base64.DEFAULT);
}捕获(例外e){
e、 printStackTrace();
}
}
}
私有void stopRecording(){
//停止录制活动
如果(空!=记录器){
isRecording=false;
录音机。停止();
记录器。释放();
记录器=空;
recordingThread=null;
}
}

这是我的代码。。。你有什么错误?你的代码出了什么问题?我没有错误。它运行得很好,但我想将bData[]发送到服务器,但它的大小很大。我想减小它的大小。我想减小它的大小。。。转换t*.mp3怎么样?如何转换?我已无法转换文件。您是否尝试更改远程服务器保存文件的方式?