Непонятно, что происходит, но учтите следующее:
(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 бит для
Некоторые примеры из ваших чисел по сравнению с 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
при записи в видеhex (байтовые значения) становится байтом x64
, по какой-то причине перед этим 64
добавляется 2
, что делает его x0264
, который преобразуется в целочисленное значение 612
.
Во второй последовательности, откуда эти дополнительные 02
и FE
и т. Д.? Почему, если в гексе первого seq есть 00
, то для второго seq теперь добавлено что-то дополнительное? Даже наоборот (сначала = что-то, затем второе = что-то удалено, чтобы стать 00
)?
Вам необходимо дважды проверить код записи . Это добавляет какое-то увеличивающееся число к записанному значению ?? Потому что, как вы знаете, за 2
следует 3
, и этот шаблон присутствует во второй последовательности. Также верно, что за FE
следует FF
(и, следовательно, перед FE
будет FD
, FC
, FB
, FA
и т. Д.).
Если вы все ещетогда я не могу это объяснить:
Запись на 16-битной частоте с частотой 44 100 Гц, как это делают обычные люди. Тогда позже усложняется, если простая установка работает хорошо. Почему 32-битный и 96000 Гц? Это научный тест?
Используйте Hex Editor для просмотра ваших байтов с обеих сторон (сохраненный файл BLOB через JS, против файла, загруженного через PHP) и сравните любые изменения между двумя файлами.
Покажите, как / что делает ваш код записи.
Поделитесь байтами "Я получил аудио из Интернетасервер " (сохранить как файл) для проверки.
Может быть, кто-то еще может помочь вам. Я не использую html-формы, поэтому, может быть, там есть опция кодирования для типа данных POST
?