Изъять кадры с FLV файла не загружая его целиком.

thelv

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

crocodile2u

http://vbolshov.org.ru
В принципе все несложно. На деле, скорее всего, нереализуемо, особенно если контент не свой. Можно почитать кое-что здесь - http://habrahabr.ru/blogs/personal/30402/.

В теории процесс должен выглядеть так:

1. Скачиваем начальный кусок ФЛВ-файла, такой, чтобы в него гарантированно влезали все заголовки и начало ролика. Из метаданных вытаскиваем позиции ключевых фреймов, а также скармливаем этот кусок ffmpeg'у для снятия скрина с начала ролика.
2. Лопатим мета-данные, получаем из них, в частности, длительность ролика. Нужно 10 скринов - находим 10 соотв. ключевых фреймов с их позициями.
3. Для каждого фрейма: лезем на сервер, отправляя соотв. Range, получаем в ответ кусок ФЛВ, который начинается ровно с ключевого фрейма. Добавляем этому куску в начало минимальный необходимый ФЛВ-заголовок (читать по ссылке выше) - получаем валидный ФЛВ-файл, далее в ffmpeg.

На деле, однако, далеко не каждый ФЛВ-файл имеет все необходимые метаданные, а без них метод не годится.
 
Сверху