Получение длины ogg-трека от s3 без загрузки всего файла

Как получить продолжительность воспроизведения ogg-файла без загрузки всего файла? Я знаю, что это возможно, потому что и тег HTML5, и VLC могут отображать всю продолжительность воспроизведения сразу после загрузки URL-адреса, не загружая весь файл.

Есть ли заголовок или что-то, что я могу прочитать. Может быть, даже битрейт, который я могу разделить на размер файла, чтобы получить приблизительную продолжительность воспроизведения?

3 ответа

Решение

К сожалению, кажется, нет способа достичь этого.

Настройка серверов Mozilla для Ogg Media очень поучительна. В принципе:

  1. Геккон использует X-Content-Duration header - отправляется веб-сервером, если он есть. Это объясняет приведенный вами пример потоковой передачи звука HTML5. Если отсутствует, то
  2. Gecko оценивает длину на основе частоты дискретизации (в заголовке) и размера файла из Content-length Заголовок HTTP

Частота дискретизации сохраняется в заголовке идентификации - первом пакете заголовка. См. Спецификацию, перейдите в раздел "4.2 Настройка декодирования и декодирования заголовка"

Это возможно Способ сделать это - использовать HTTP-запросы диапазона, чтобы получить конец файла, найти последнюю страницу Ogg и извлечь из нее временную метку. Это предполагает, что файл состоит из смежных потоков (то есть без цепочки), которые имеют одинаковую длину, и что время потока начинается с 0 (в противном случае вы должны декодировать начало потока и вычесть эту временную метку из конечной временной метки), Декодирование временной метки из поля granulepos Ogg Page зависит от кодека (например, для Vorbis оно выражается в виде количества выборок).

В качестве альтернативы, если ваш файл Ogg содержит метаданные Ogg Skeleton, вы можете прочитать его напрямую, чтобы определить продолжительность файла.

Это просто невозможно без загрузки самих данных. Вы можете указать связанную информацию как часть метаданных S3 связанного ключа. Таким образом, можно написать, чтобы проанализировать метаданные перед фактической загрузкой данных.

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