m912 03.04.2011 15:01
Есть вопрос! — Создание видео с переменным framerate
Есть задача: в папке лежат jpg-файлы (скриншоты экрана) с именами типа YYYYMMDD-hhmmss (за период от минуты до часа). Необходимо сконвертировать из в видеофайл.Нюанс в том, что скриншоты делаются не ежесекундно, а с разным временным интервалом (от секунды до часа), т.о. необходимо создание видеофайла с переменной частотой кадров (framerate а не bitrate!).
К большому удивлению судя по wiki тру-формат ogg такого не поддерживает...
Приложения для создания screencast-ов тоже не подойдут, т.к. скриншоты поступают по сети и постоянная запись не нужна (только во время действий пользователя)
Чем можно попробовать создать такой файл?
Daria 03.04.2011 16:21 #
+ 1 -
если ничего не поможет, можно собрать их в gif.
Честно говоря, не могу сейчас вспомнить ни одного формата, который поддерживал бы переменный framerate.
Вообще первое что приходит в голову AVС и MPEG4 Part 2 содержат в себе средства указать при кодировании длительность каждого кадра.
Но в данном случае это не так важно, потому как можно воспользоваться возможностями контейнера (MP4, MKV или Transport Stream) в последнем вообще оперируем абсолютными метками времени. В какой момент времени нужо показать тот или иной кадр. С большой долей вероятности такой поток не пройдёт валидацию, будет не пригоден для вещания, но для заявленных нужд думаю это и не нужно.
Теперь собственно к вопросу «Чем»
Как сделать свободным инструментом «изкаропки» не знаю. Извините.
Но в данном случае это не так важно, потому как можно воспользоваться возможностями контейнера (MP4, MKV или Transport Stream) в последнем вообще оперируем абсолютными метками времени. В какой момент времени нужо показать тот или иной кадр. С большой долей вероятности такой поток не пройдёт валидацию, будет не пригоден для вещания, но для заявленных нужд думаю это и не нужно.
Теперь собственно к вопросу «Чем»
Как сделать свободным инструментом «изкаропки» не знаю. Извините.
проще сделать скрипт на bash проигрывания jpeg-последовательности по таймштампу
Ну как вариант. А вот если так:
Если ли какой энкодер, позволяющий брать входное видео из конвейера?
Тогда скриптом можно было бы сделать:
в случае если после 20110402_101010.jpg идет не 20110402_101011.jpg
а 20110402_101020.jpg, то 20110402_101010.jpg посылать на вход кодировщика 10 раз?
Если ли какой энкодер, позволяющий брать входное видео из конвейера?
Тогда скриптом можно было бы сделать:
в случае если после 20110402_101010.jpg идет не 20110402_101011.jpg
а 20110402_101020.jpg, то 20110402_101010.jpg посылать на вход кодировщика 10 раз?
я имел ввиду свой плеер. в случае вашем полсыать надо "дельта времени поделить на fps"
Если такой вариант вас устраивает, то
примерно вот так
mencoder "mf://*.jpg" -mf fps=1 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
(у нас же 1 fps? )
А скриптом создать ссылки hardlinks или символьные для отсутсвующих кадров.
Работающее решение на коленке.
Минусы в том, что файлы будут получатся больше чем могли бы. Ну и создание кучи файлов даже если это ссылки как-то некрасиво.
примерно вот так
mencoder "mf://*.jpg" -mf fps=1 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
(у нас же 1 fps? )
А скриптом создать ссылки hardlinks или символьные для отсутсвующих кадров.
Работающее решение на коленке.
Минусы в том, что файлы будут получатся больше чем могли бы. Ну и создание кучи файлов даже если это ссылки как-то некрасиво.
ссылки hardlinks или символьные для отсутсвующих кадров
Вот оно - инженерное мышление! Спасибо!
Я надеюсь mencoder правильно будет сортировать файлы по имени?
А то что файлов немного - не беда - сожмем поминутно, потом склеим почасово!
По закону подлости у заказчика, конечно же будет голая винда без кодеков и тупой WMP - msmpeg4v2 нормально "схавается"?
нашел MP4 FAQ
13) Is it possible to create Variable Framerate (VFR) content in MP4?
Yes, it is possible
- with timecode files
- by appending mp4 files
- by dropping n-vops in ASP
- handbrake is able to encode vfr mp4 files from vfr input files (eg mpeg-2 telecined streams)
Yes, it is possible
- with timecode files
- by appending mp4 files
- by dropping n-vops in ASP
- handbrake is able to encode vfr mp4 files from vfr input files (eg mpeg-2 telecined streams)