У меня есть куча аудиофайлов на CDN. Это и mp3, и ogg vorbises, параллельно. Эти файлы стоят около часа воспроизведения. Мне нужно извлечь произвольные части из этих файлов: мне дано имя файла (я могу выбрать, использую ли я версию mp3 или ogg) и две временные метки, и мне нужен звук точно между заданными временными позициями. Я не хочу загружать весь файл, поэтому я думаю об использовании заголовка Range http.вырезать точный временной диапазон от mp3/ogg
У меня есть полный контроль над аудиофайлами, поэтому я закодировал их в фиксированном битрейте, чтобы иметь возможность оценить, к каким байтам я должен обратиться. Однако оба формата используют фреймы (или страницы в случае vorbis), которые должны быть декодированы атомарно.
Программа, которую я пишу, находится в Perl. Я попытался загрузить часть файла, где я считаю, что данное окно будет содержаться, а затем используя Audio :: Mad и Ogg :: Vorbis :: Decoder для анализа фрагментов аудиофайла. Тем не менее, оба, похоже, не обрабатывают фрагменты и преуспевают только в том случае, когда я обслуживаю интегральный файл.
Итак, мой вопрос: как я могу получить точную длину аудиофайла, не загружая все это?
Ну, это предполагает, что у вас есть весь файл в вашем распоряжении. Я хотел бы избежать загрузки всего файла. – Sixtease