Я записываю аудио из радиопотока 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 неправильно преобразован