Построение видео постепенно из входящих изображений JPEG

1208
Kevin Ivarsen

Можно ли добавить к видео один JPEG-кадр (или небольшое количество кадров), сохраняя при этом хорошее качество изображения и сжатие? У меня есть скрипт, который загружает изображение в формате JPEG с веб-камеры каждые 30 секунд. Я могу создать видео из этих кадров, используя ffmpeg или mencoder, например:

ffmpeg -f image2 -i %d.jpg out.swf 

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

Любая идея о том, как сделать это разумно, будет принята с благодарностью.

3

2 ответа на вопрос

1
CarlF

Почему вы хотите построить его по одному кадру за раз? Как это поможет вам? Почему бы вашему сценарию не перестраивать видео каждые 15 минут (30 кадров) или что-то более разумное в этом роде?

SWF - это необычный формат файла для вывода видео. В общем, нет, вы не можете добавить один кадр в конец фильмов SWF (или FLV), потому что для этого требуется компрессор с сохранением состояния - компрессор должен оставаться в ОЗУ и запоминать состояние последнего ключевого кадра и всех межкадровых кадров. сжатие сделано с тех пор, чтобы закодировать следующий кадр.

Если по какой-то причине вам абсолютно необходимо добавить один кадр в конец вашего текущего видео, используйте MPEG 1. Видео MPEG 1 - это просто последовательность отдельных кадров без межкадрового сжатия, так что вы можете иметь FFMPEG для сжатия каждого JPEG и просто катите это на конец незавершенного производства. Конечно, результатом будет огромный плохо сжатый файл по современным стандартам.

Я хотел создавать видео по одному кадру (или нескольким кадрам) за один раз, чтобы поддерживать актуальность видео без постоянной загрузки ЦП. Этот проект может быть расширен за счет включения нескольких видеопотоков, поэтому я хотел иметь в виду эффективность. Видео используется для мониторинга облачности в астрономической обсерватории, поэтому я хотел, чтобы оно было как можно более актуальным. Скорее всего, я сделаю компромисс, сделав два видео - часто обновляемое с данными за последние 30 минут и менее часто обновляемое с последними 24 часами. Мне было просто любопытно, было ли возможно покадровое время. Kevin Ivarsen 14 лет назад 1
Вы можете запустить скрипт для объединения последних 300 изображений JPEG в 30-секундное видео FLV (со скоростью 10 кадров в секунду) каждые 15 минут. Вы также можете записать Flash SWF-файл, который будет воспроизводить все фильмы в определенный час или день по порядку, чтобы зритель выглядел как один фильм. Нет заболачивания. Если вы хотите проявить фантазию, напишите сценарий, который объединяет все фильмы данного дня в один более длинный фильм раз в 24 часа при малом трафике, например, в 2 часа ночи. CarlF 14 лет назад 0
0
Camille Goudeseune

If it's that few frames, convert them into an animated gif instead of a movie (with ImageMagick, for example).

That's how www.weather.gov animates radar imagery.