Скачать частичное видео через HTTP (для миниатюр) - PullRequest
1 голос
/ 13 февраля 2012

У меня есть видео, размещенные на Amazon S3. Я кодирую их с помощью Zencoder и сохраняю миниатюру для видео, а затем использую Zencoder. Однако мне нужен способ генерировать миниатюры в определенных точках видео (т.е. 00:00:03, 00:10:32, 01:40:18) и сохранять их либо на S3, либо на моем сервере.

ffmpeg позволяет удаленно создавать миниатюры, однако для получения миниатюры из середины файла требуется очень много времени (иногда несколько минут) - я полагаю, это происходит потому, что он загружает весь файл до этой точки, чтобы получить миниатюру .

Мой план состоит в том, чтобы каким-то образом загрузить заголовок видеофайла через запрос диапазона байтов HTTP, угадать диапазон байтов, в котором я должен искать миниатюру, загрузить около секунды видео из этой части файла через байт HTTP. -рандж запрос, затем сохраните заголовок и крошечное видео локально. Я вытаскиваю миниатюру с помощью ffmpeg и удаляю временное видео.

Я понятия не имею, как именно это будет работать (я полагаю, что файлы H.264 MP4, с которыми я работаю, имеют динамический заголовок длины, для другой проблемы). Есть предложения или лучшие идеи?

Редактировать : Для пояснения, миниатюра Zencoder великолепна, но она позволяет создавать миниатюры только в сочетании с транскодированием. Я не хочу перекодировать видео каждый раз, когда создаю новый эскиз, поэтому мне нужно сделать это самостоятельно без Zencoder.

1 Ответ

1 голос
/ 13 февраля 2012

Обновление

Как и ожидалось, при быстром поиске в документации Zencoder обнаруживаются аналогичные функциональные возможности, которые также доступны там, пожалуйста, проверьте их справочную информацию по API для Миниатюры :

  • интервал - Создание миниатюр с четным интервалом в секундах. Zencoder будет возвращать одну миниатюру за каждые N секунд файла. [...]
  • interval_in_frames - Возьмите миниатюры с четным интервалом в кадрах. Zencoder вернет одну миниатюру на каждые N кадров файла. [...]
  • times - Массив раз, в секундах, в течение которого можно получить миниатюру. Десятичные числа действительны. Таким образом, установка времени на [12,5, 25] позволит получить две миниатюры: одну за 12,5 секунды и одну за 25 секунд. [...]

И (аналогично Transloadit ) Zencoder , кажется, также поддерживает выгрузку и загрузку файлов из корзины Amazon S3 , см. Использование Zencoder с S3 для деталей.

Удачи!


Так как вы все равно используете службу облачного кодирования, я собираюсь взять «Есть предложения или лучшие идеи?» буквально здесь и рекомендую проверить Transloadit в конце концов, поскольку их предложение включает в себя желаемую функциональность ( Я действительно ожидал бы, что эта функция будет доступна также от Zencoder Zencoder предлагает действительно аналогичные функции, см. обновление выше) - есть несколько демонстраций для извлечения миниатюр из видео , например Извлечение 8 миниатюр из закодированного видео :

Это простейшая демонстрация для извлечения миниатюр из кодировки видео. По умолчанию он извлекает 8 миниатюр через равные промежутки времени каждый имеющие те же размеры, что и видео. » См. Полную документацию

Параметр offset робота / video / thumbs позволяет вместо этого указывать положение миниатюры с более мелкой детализацией либо в секундах от длительности файла, либо в соответствующих процентных значениях.

Transloadit поддерживает Хранение файлов также в Amazon S3 , см., Например, демоверсия Кодируйте видео, извлекайте 8 миниатюр и сохраняйте все в своем S3-контейнере для комбинированного решения с учетом вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...