Поврежденные файлы AAC, записанные в онлайн-потоке - PullRequest
0 голосов
/ 30 июня 2018

Я записываю аудио из радиопотока AAC самым простым из известных мне способов:

r = requests.get('http://someradio.net:someport/stream.aac', stream=True)
self.new_filename()

with open(self.filename, 'wb') as f:
  try:
    for block in r.iter_content(self.chunk_size): f.write(block)
  except KeyboardInterrupt:
    pass 

Полученные аудиофайлы неправильно закодированы (как мне кажется), что приводит к тому, что приложения Adobe, такие как Premiere Pro, обрабатывают их забавным образом. Например, они импортируют их как моно, в то время как они должны быть стереофоническими, и хуже всего то, что первая половина аудио растягивается на всю длительность в 2 раза ниже, а вторая половина отсутствует.

Поэтому я конвертирую AAC в MP3 с помощью FFmpeg и AudioSegment (очевидно, он знает, как обрабатывать эти файлы), которые прекрасно работают с Premiere:

stream = AudioSegment.from_file('output.aac', 'aac')
stream.export('output.mp3', format='mp3')

но записи продолжительны, а преобразование требует времени и ресурсов.

Я почти уверен, что с оригинальными AAC можно сделать что-то очень простое, чтобы Premiere могла правильно их прочитать, я просто не знаю, что это такое.


Добавить 1: Я думаю, что, возможно, это как-то связано с тем, что я записываю текущий поток с середины, таким образом, заголовок или что-то для файла AAC не записывается должным образом. А именно, что-то напутано с моно / стерео свойством.

Добавить 2. Проблема, возникшая в Adobe Premiere Pro, After Effects и Media Encoder, все из которых имеют последнюю версию (CC 2018, апрель). Все другие приложения, такие как плееры (MPC, VLC, WMP) и Vegas Pro, воспринимают эти AAC просто отлично.

Добавить 3: аналогичный вопрос (без ответа), касающийся записи из онлайн-потока, AAC и в 2 раза более медленного искажения звука: Поток AAC неправильно преобразован

1 Ответ

0 голосов
/ 30 июня 2018

Суть проблемы, по-видимому, заключается в том, что Adobe (AE, PP, ME) не может должным образом обрабатывать формат HE-AACv2 в контейнере ADTS, который, очевидно, является стандартом для потоков онлайн-радио. Wiki notes У Adobe Flash Player есть проблемы с ним, и кажется, что все другие продукты Adobe делают.

Adobe рассматривает такие файлы как монофонические с частотой 48000 Гц, в то время как они действительно являются монофоническими с частотой 24000 Гц с дополнительным параметрическим каналом для декодирования параметрического канала (что является основной особенностью HE-AACv2). Похоже, что Adobe делает что-то неестественное с этим моноканалом, растягивающимся, чтобы создать файл с частотой 48000 Гц с такой же длительностью. Но это только мое предположение, понятия не имею, что именно делает Adobe.

Естественный обход - это преобразование в другой формат. Например, AAC-LC, даже если в ADTS прекрасно работает с Adobe.


Только для записи:

What sound waves look like

Как выглядят звуковые волны.

...