Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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_Audio_Byte_Bytebuffer_Short - Fatal编程技术网

Java 我这样做对吗?

Java 我这样做对吗?,java,audio,byte,bytebuffer,short,Java,Audio,Byte,Bytebuffer,Short,在我请求帮助之前,让我告诉你我做了什么: 假设采样率为8000Hz且采样大小为16位(2字节),则在第二秒结束时,我需要16000字节或8000字节短。 现在我有一个10fps的记录速度,那么对于每一个fps,我需要16000/10=1600字节。 下面是故事的发展过程: 声明的变量: 循环和字节[]到短[]的后续转换 问题 即使buffer.position()在if语句中返回16000,当我执行buffer.asShortBuffer.get(audioSamples)时,我会得到一个Buf



在我请求帮助之前,让我告诉你我做了什么: 假设采样率为8000Hz采样大小为16位(2字节),则在第二秒结束时,我需要16000字节或8000字节短。
现在我有一个10fps的记录速度,那么对于每一个fps,我需要16000/10=1600字节。
下面是故事的发展过程:

声明的变量: 循环和字节[]到短[]的后续转换 问题
  • 即使
    buffer.position()
    if
    语句中返回16000,当我执行
    buffer.asShortBuffer.get(audioSamples)时,我会得到一个
    BufferUnderflowException

  • 我使用
    java.util.Arrays.toString()
    查看我的
    eachPass
    audioSamples
    包含的内容,我在每个pass中得到了一些数字,如-107、0、32等,在audioSamples中得到了全零。为什么?

    老兵们,你们能帮我搞定这个密码吗?我不知道发生了什么事 您在读取数据之前忘记了缓冲区,这就是为什么在
    音频样本中没有写入任何内容的原因

    buffer.flip();
    buffer.asShortBuffer.get(audioSamples);
    
    while(keepCapturing == true){
        -- set up the java.awt.Robot and TargetDataLine before entering the loop --
        -- use java.awt.Robot to record the screen --
        -- do some other stuff, if needed --
        fromMic.read(eachPass,0,eachPass.length); // read data from microphone
        buffer.put(eachPass); //put it in  a bigger buffer
    
        if(passCounter!=0 && passCounter%10==0){ // is it 10th frame?
            passCounter = 0; //reset counter
            seconds++;
            buffer.asShortBuffer.get(audioSamples); //get short[] in BigEndian format
            -- encode the audio at position (seconds-1) --
            buffer.clear();
        }else{
            passCounter++;
        }  
    
    buffer.flip();
    buffer.asShortBuffer.get(audioSamples);