2012-03-03 4 views
1

Можно ли скачивать только последние 30 секунд mp3? Или нужно загрузить все это и обрезать его после факта? Я буду загружать через http, т. Е. У меня есть URL-адрес файла, но это все.Загрузить последние 30 секунд mp3

+0

Аналогичный вопрос: http://stackoverflow.com/questions/8543214/is-it-possible-to-download-just-part-of-a-zip-archive-eg-one-file Вы может загрузить часть файла, но я не хочу, если вы сможете использовать mp3-файл после этого. – FrediWeber

+0

Загрузка над чем? HTTP? – Brad

ответ

3

Нет, это невозможно ... по крайней мере, не зная немного дополнительной информации.

Настоящая проблема заключается в определении того, какое смещение байта за последние 30 секунд. Это продукт познания:

  • Sample Rate
  • Bit Depth (по образцу)
  • # каналов
  • CBR или VBR
  • Bit Rate

Даже тогда, вы не получите этого с VBR MP3-файлом и даже с CBR, который знает, насколько большой ID3 и другое дерьмо в начале файла. Даже если вы все это знаете, есть еще какая-то изменчивость, так как у вас есть проблема с битовым резервуаром.

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

Теперь, если это все можно было бы определить на стороне сервера раньше времени, то да, вы можете запросить смещение с сервера, а затем загрузить оттуда. Что касается того, как его загрузить, ваш вопрос очень неполный и не упоминает, какой протокол вы использовали, поэтому я не могу вам помочь.

+0

Было бы возможно, если мне не понадобится _exactly_ 30 секунд? Скажите, что где-нибудь от 20-40 добра. –

+0

@ Wiscocrew, Не совсем, если вы не хотите с 5:00 до: 05. Вы можете поэкспериментировать с захватом последнего x количества байтов из файла. Во-первых, сделайте запрос HEAD, чтобы выяснить, сколько времени находится файл, а затем выберите последние 700 КБ или около того. Опять же, это настолько переменно, что вы можете получать что угодно. – Brad

Смежные вопросы