Как установить битрейт файла aac?

Я пытаюсь создать файл aac на Android. Я успешно это сделал. Но у меня есть маленькая неприятная вещь. Когда я открываю свой файл в VLC, он обнаруживает мой файл со следующими параметрами:

  • sampleSize = 32 (но записывается с размером кадра 16 бит)
  • sampleRate = 16 (но записано с частотой 8 кГц)
  • channelsCount = 2 (но записывается с 1 канала)

Где я должен указать размер выборки? Могу указать только частоту дискретизации.

Вот мой код, который генерирует заголовок ADTS

val id = 0
val layer = 0
val protectionAbsent = 1
val profile = 2
val frequencyIndex = 11
val privateBit = 0
val channelConfig = 1
val originalCopy = 0
val home = 0
val copyritingIdBit = 0
val copyritingIdStart = 0
val frameLength = 775

val arr = ByteArray(7)
arr[0] = 0xff.toByte()
arr[1] = (0xf0 or ((id shl 3) and 0b1000) or ((layer shl 1) and 0b110) or (protectionAbsent and 0b1)).toByte()
arr[2] = ((((profile - 1) shl 6) and 0b11000000) or ((frequencyIndex shl 2) and 0b111100) or ((privateBit shl 1) and 0b00000010) or ((channelConfig shr 2) and 0b1)).toByte()
arr[3] = (((channelConfig shl 6) and 0b11000000) or ((originalCopy shl 5) and 0x100000) or ((home shl 4) and 0b10000) or ((copyritingIdBit shl 3) and 0b00001000) or ((copyritingIdStart shl 2) and 0b00000100) or ((frameLength shr 11) and 0b11)).toByte()
arr[4] = ((frameLength shr 3) and 0xff).toByte() 
arr[5] = (((frameLength shl 5) and 0b11100000) or 0x1f).toByte()
arr[6] = 0xfc.toByte()

Когда я меняю частоту на 16 кГц, она определяется как 32 кГц. MacOs правильно определяет частоту.

Все проигрыватели воспроизводят запись корректно.

Это не похоже на код Android Java... Переменные не объявляются таким образом, и такого метода toByte() не существует.

VC.One 05.02.2019 00:08

Это Котлин!

Vesyoliy 05.02.2019 12:00

Можете ли вы сообщить нам первые 7 байтов (ADTS) вашего выходного файла .aac? Используйте шестнадцатеричный редактор для проверки байтов файла.

VC.One 05.02.2019 12:15

fff9 6040 60ff фк

Vesyoliy 06.02.2019 14:27

или fff1 6040 60ff fc, без разницы

Vesyoliy 06.02.2019 14:27
1
5
168
0

Другие вопросы по теме