Самое простое, что нужно сделать - это создать MP3-файл с очень низким битрейтом и вырезать из него один кадр. Давайте создадим немного тихого звука с помощью FFmpeg:
ffmpeg -f lavfi -i "aevalsrc=0:duration=1" -f mp3 -b:a 8k -ar 8000 short.mp3
В этом случае мы используем фильтр lavfi
, который является утилитарным фильтром для генерации тестовых шаблонов, а что нет. То, как мы используем aevalsrc
, устанавливает все значения семплов на 0
... практически бесшумно. Мы устанавливаем duration
на 1 секунду. (Для MP3 требуется, по крайней мере, длина кадра, иначе ничего не будет выводиться. Я думаю, что проще просто позволить FFmpeg вывести секунду и затем обрезать позже.)
На выходе FFmpeg мы настраиваем его для формата mp3
, на скорости 8 кбит / с с частотой дискретизации 8 кГц.
Теперь откройте получившийся файл с помощью своего надежного шестнадцатеричного редактора. Вы должны увидеть кучу повторяющихся последовательностей. Это рамки MPEG, и вы можете свободно вырезать их. (Игнорировать все содержимое ID3 в заголовке файла ... это не обязательно сохранять. Также обратите внимание, что при реальном использовании мы не всегда можем сократить границы кадра из-за использования битового резервуара, который может распределять данные из одного кадра в другой при использовании CBR. Это не должно вступать в игру ... мы кодируем тихий звук.)
Каждый кадр MPEG начинается с 11-битной синхронизации c слово всего 1
. Обычно вы находите это син c слово и затем проверяете заголовок перед синтаксическим анализом, но это син c слово должно быть очевидно для вас в шестнадцатеричном редакторе. В моем файле первые несколько байтов каждого кадра FF E3 13 C4 00
. Просто обрежьте файл от начала одного кадра до следующего. Вы получите что-то вроде этого.
Теперь сохраните это и протестируйте в своем плеере. Вы не должны ничего слышать в течение очень короткого периода времени. Кроме того, протестируйте с помощью FFmpeg, и вы должны увидеть что-то вроде этого:
Input #0, mp3, from 'shortest.mp3':
Duration: 00:00:00.14, start: 0.000000, bitrate: 8 kb/s
Stream #0:0: Audio: mp3, 8000 Hz, mono, fltp, 8 kb/s
144-байтовый файл - это то, что вы получите. Я понятия не имею, почему вы хотите это сделать, но есть объяснение. : -)
См. Также: