PHP $ POST命令用于音频Blob的编码器是什么?

第一个音频样本序列以单声道,PCM格式,16位和96,000 Hz的格式从浏览器中以JavaScript记录。我使用ajax通过JavaScript FormData对象将此音频文件作为Blob写入服务器。

这些是raw audio samples.,当我从Web服务器的目录列表中检索音频时,我收到了第二个音频样本序列。它已被下采样至48000 Hz,并且采样已更改。使用什么编码器?

服务器端PHP代码:

    $input = $_FILES['audio']['tmp_name']; //audio blob
    $output = $_POST['filename'];

    if(move_uploaded_file($input,$output))
        exit('Audio file Uploaded');

客户端JavaScript代码:

    function send_audio(fn,blob){

        var formData = new FormData();

        formData.append("filename",fn);
        formData.append('audio',blob);
        $.ajax({
            url:'save_audio.php',type:'post',data: formData,contentType:false,processData:false,cache:false,success: function(data){
                console.log("send_audio success!");
                console.log(data);
            }
        });
    }
dongxinshuai 回答:PHP $ POST命令用于音频Blob的编码器是什么?

目前尚不清楚发生了什么,但请考虑以下事项:

(1)尝试每个样本尝试 16位而不是32位(可能会有帮助)。

无需以每个样本32位的方式记录这些音频样本。这意味着您正在使用4个字节来记录一个适合2个字节(16位)的样本值。

您的最大值是30465(字节x77 x01),最小值是-32513(字节x80 xFF)。
注意那些值适合两个字节吗?通过使用4个字节,您可以制作x00 x00 x77 x01。浪费多余的钱00

两个字节的最大值为65535。如果将32767+32767分为两部分,甚至是-32767

(2)确保字节(十六进制)和数字(整数)的编码之间没有混淆。

字节以十六进制形式写入文件中。从整数转换为十六进制格式时,您的值似乎混乱了。

也是16位和32位

您的数字中的一些示例与2字节(16位)十六进制相比:

  FIRST SEQ:        SECOND SEQ:
value   | hex       | value   | hex

100       00 64      612        02 64
553       02 29      41         00 29
203       00 CB      -309       FE CB
-409      FE 67      103        00 67
68        00 44      836        03 44
953       03 B9      185        00 B9
154       00 9A      -102       FF 9A
-127      FF 81      385        01 81

请注意,整数100的值以十六进制表示(字节值)时,它变为字节x64,出于某种原因,在该2前面添加了64现在使其x0264转换为612的整数值。

在第二序列中,这些额外的02FE等来自哪里?为什么如果第一个序列的十六进制有一个00,那么对于第二个序列,现在又增加了一些东西?甚至反之亦然(第一个=某物,然后第二个=某些东西被移除而变成00)?

您需要仔细检查您的录音代码。它会增加一些增加的记录值吗?如您所知,2之后是3,并且该模式在第二个序列中。同样,FE之后是FF(因此,在FE之前是FDFCFB,{{1} }等。

如果您仍然无法解释,则:

  • 像其他人一样,以44100 Hz的频率以16位记录。然后,如果简单的设置可行,则以后变得复杂。为什么仍要32位和96,000 Hz?是科学测试吗?

  • 使用十六进制编辑器从两侧查看您的字节(通过JS保存的blob文件,通过PHP下载的文件),并比较两个文件之间的所有更改。

  • 显示录制代码的状态/功能。

  • 共享“我从Web服务器检索到音频”的字节(另存为文件)进行检查。

也许其他人可以帮助您。我不使用html表单,所以也许其中也有FA数据类型的编码选项?

本文链接:https://www.f2er.com/3134713.html

大家都在问