Задача примерно такая:
на входе есть несколько видео файлов ( размер и кодеки заранее не известны )
нужно:
конвертировать их одним кодеком, сделать клоны нескольких размеров ( от оригинального до минимального )
выровнять уровень звука во всех видео файлах
нарезать (20, 50, 100?) кадров для каждого размера
разложить по папкам соответствующим каждому размеру и имени видео
вопрос:
Какой программой ( Программным пакетом ) такую операцию можно выполнить ?
вопрос 2:
Каким кодеком это лучше обрабатывать, с учётом того, что это предназначено для онлайн-просмотра ?
вопрос 3:
если нет готового решения, есть ли те, кто решал подобную задачу и могут написать подобную программу или посоветовать того, кто может ?
Пока всё, что нашёл, это рекомендации выделять звук в отдельный файл, а для работы с отдельным звуком - программ уже масса. Для обработки советовали - ffmpeg и кучу бат файлов. Учитывая количество префиксов и переменных - не представляю сколько литров надо выпить, чтобы во всём разобраться.
Можно я попробую объяснить то, что мне нужно подробнее? Нужно будет готовить видео-репортажи для размещения на сервере. Это в проекте. Пока, я выясняю, как этот самый сервер организовать, как организовать подготовку материала, как разграничить функции между сайтом и видео-сервером. Поскольку всё будет крутиться вокруг того самого видео - решил начать выяснение с него. Поскольку проект некоммерческий - толпы гоблинов которая разбирала бы ручками видео мы позволить себе не можем, потому нужно максимально соответствующее задаче ПО ( Программное Обеспечение ) Такое которое не вызвало бы клин мозга у сферического крестьянина в вакууме. Так вопрос несколько более понятен ?
В идеале - нужен человек который хорошо понимает в данном вопросе и сможет предметно ответить на все имеющиеся вопросы. Совсем в идеале - человек который занимался аналогичными проектами и знает всю подоплёку.
Достаточно не ясны начальные условия, количество пользователей заливающих видео. Зачем выравнивать уровень я не знаю - может такая громкость это авторская задумка.
Скажем если бы это был некий "видеоподкаст" который пополнялся несколькими болтливыми пользователями, то я бы создавал бы папки с названием на основе даты типа V20101014 в ней бы оказывались бы файлы в названии которых был бы ID пользователя+порядковый номер загруженного в этот день им видео. Дальше как этим пользоваться ограничивается фантазией программиста. Т.е. после появления в каталоге нового файла должна будет запустится программа которая создаст "нарезать (20, 50, 100?) кадров для каждого размера
разложить по папкам соответствующим каждому размеру и имени видео".
Вот тут то самое и интересное. Если бы не это требование, то уже можно было бы пользоваться. А так необходима специфичная программа. Вариант ffmpeg вполне пойдет, только, имхо, должна быть не куча bat файлов, а некая программа, которая отслеживала бы появление новых файлов и запускала бы ffmpeg с нужными параметрами. На первый взгляд, если ОС Windows, то программа вполне создаваема. Под *nix не скажу, возможно там уже что то готовое есть.
Avisynth уже посоветовали вместо ffmpeg
Колличество пользователей? Если их не будет хотя бы несколько десятков ( о сотнях не говорю ) - проект неосмысленнен.
Громкость? Это скорее для удобства зрителя, чем для самовыражения автора.
Представь, что нужно, чтобы то же самое видео мог посмотреть и интернет пользователь и зашедший с мобильника. То что удобно одному - неудобно другому. И наоборот. Потому проще иметь несколько версий одного ролика.
Кадры может нарезать тот же ffmpeg. есть там такая опция скриншот взять с определённой позиции.
Про программу которая генерила бы запросы к ffmpeg из внятного интерфейса - это мысль... Не хватает только того кто её написал бы :)
Avisynth или ffmpeg, не суть важно, пойдетлюбая программа которая управляется внешними параметрами и позволяющая конвертировать из исходного в необходимый формат, в идеале, если программой будет использоваться GPU.
На первом этапе надо определиться именно с этими параметрами. Создать командный файл который бы выполнял нужные действия - конвертировал в нужные форматы, сохранял кадры.
Если этот работает как надо, то без проблемы создать уже оболочку.
Вероятнее всего вебсервер будет работать с sql, программа должна будет увидеть появление новой записи, из которой она возьмет путь+имя файла, обработает внешней программой ffmpeg, и изменит/добавит в записи новые путь+имя файла, дальше у вебсервер должен заняться страничкой на которой эти файлы будут отображаться.
Какая стоит задача? Сделать сайт видеохроники.
3 составляющих:
- Система подготовки данных.
- Сервер для хранения видеоматериалов
- Собственно сайт
Алгоритм работы примерно такой: Нам присылают видеоматериал >> Мы его конвертируем в несколько размеров, выравниваем звук >> Выкладываем видео на сервер >> Подцепляем от сервера на сайт.
Особенности: Нужно несколько размеров, под разные возможности зрителей. Желательно обеспечить возможность протяжки видео ( с соответствующим изображением в окне просмотра )
Из имеющих место быть технологий ближе всего видеогалерея Youtube, хотя внешне материал на сайте будет подан иначе.
Задачи: обеспечить возможность обработки видео, воспроизведение его в разных размерах ( автоматически или по выбору пользователя (второе конструктивнее) )
формат видео - репортаж.
Никаких реал-тайм трансляций, никакого супер-нафиг-HD. Просто HD - may be... опционально.
Проект некоммерческий, так что специалистов с ютуба мы себе позволить не можем.
Так более предметно ?
Я к тому, что видео будет попадать не сразу на сайт, а, сначала, в центр обработки. Собственно под центр обработки я и пытался выяснить необходимое.
Ну тогда центр обработки это всего лишь скопировать файл во временный каталог, запустить командный файл, по завершении скопировать на место результат обработки.
Вобщем для начала при малых объемах пробовать TMPEG Express, вручную добавил десяток файлов, настроил выходной формат и запустил кодировать, единственное что он кадры не сохранит.
Как я себе это представляю в деталях:
Система подготовки данных
1)Видео файл поступает в папку Video_in;
2)Программа добавляет к названию видео, перед оригинальным названием, индекс вида mmddyyhhnn, где mm – номер месяца, dd – день, yy – две последние цифры года hh- час, nn- минута ( всё по 2 цифры );
3)Программа проверяет уникальность имени в базе данных. В случае подтверждения уникальности — видео под новым именем ( индекс+старое, далее - {имя видео} ) вносится в базу данных.
4)Программа отделяет звуковую дорожку в папку Audio_in в файл с названием вида: audio_{имя видео};
5)Программа нормализирует звук ( скачки громкости при переходе от одного видеоролика к другому будут раздражать, потому громкость звукового сопровождения у всех видеоматериалов должна быть одинакова );
6)Программа возвращает звук в видео;
7)Программа определяет битрейт оригинального звука, если он больше чем 96 kbps - кодирует звук в битрейт 96 kbps и помещает результат в папку вида: Audio_out_{имя видео} , если меньше — копирует в папку Audio_out_{имя видео} – исходную дорожку;
8)Программа перемещает исходный звук в папку Audio_original для сохранения оригинала;
9)Программа определяет размер видео;
10)Программа, в соответствии с определённым размером видео делает клоны видео равного ( в случае совпадения с одним из типоразмеров ) или меньшего, чем исходный, размера, в соответствии с заданными типоразмерами* ;
11)Полученые клоны поступают в папку с названием вида Video_out_ с названиями вида {имя видео}_{типоразмер};
12)Полученые клоны заносятся программой в базу данных;
13)Программа берёт ( из каждого клона видео ) кадры, начиная с первого, далее равномерно по всей длинне видео файла. ( Всего 50 кадров для каждого клона );
14) Полученые изображения ( кадры видео ) поступают в папку вида Image_out_{имя видео}_{типоразмер} ( свою для каждого клона ) с названиями вида: NN_{имя видео}_{типоразмер}, где NN – номер кадра;
15) Исходный файл перемещается в папку Video_origrnal для сохранения оригинала.
от я о том же, да и не понятно - обязательно надо картинки разных размеров? По моему нужна одна страница где можно увидеть видеоряд кадров чтобы оценить запись, и три ссылки на видео разного размера.
понятно, хотя для этого можно и растягвать/уменьшать картинки среднего разрешения. Вобщем это детали которе пусть делает web-программист. К тому что он придумает надо и подтягивать содержимое каталогов.