Чтобы расширить ответ LordNeckbeard, просто добавьте данные JPEG в видеопоток MJPEG. Это будет наименьшее представление точной последовательности выходных изображений, даже несмотря на то, что по современным стандартам MJPEG является ужасно неэффективным кодеком. (нет временной избыточности и даже нет внутреннего предсказания.
Вы можете создать MJPEG-видео с переменной частотой кадров, чтобы использовать дубликаты изображений на входе.
ffmpeg -framerate 30 -i input%03d.jpg -vf mpdecimate -codec copy output.mkv # doesn't work.
Хм, это не сработает, поскольку mpdecimate не будет работать со сжатыми данными, и мы не можем позволить ffmpeg декодировать, а затем повторно записать данные изображений без потерь и затрат на процессор.
Может быть, если вы замените дубликаты исходных файлов jpg пустыми файлами с этим порядковым номером, или что-то еще?
Поскольку этот вопрос даже не недавний, я не собираюсь тратить время на то, чтобы понять, как это сделать, если кто-то не ответит, чтобы спросить, как это сделать. Но так как MJPEG может входить в контейнер mkv, я уверен, что возможно иметь файл, который не дублирует данные jpeg для повторяющихся кадров, но вместо этого просто не имеет выходного кадра для декодирования, пока последовательность дубликатов не будет над.
О, вот идея:
ffmpeg -framerate blah -input blah -vf mpdecimate -f mkvtimestamp_v2 mpdecimate.timestamps
Затем удалите (или переместите в сторону) все jpegs для кадров, которые mpdecimate хочет отбросить (возможно, у него есть некоторые параметры ведения журнала? Или -vf showinfo, и проанализируйте его, и переместите или жестко связывайте только кадры, которые отображаются в его выходных данных, оставляя позади упал JPEG?). Примените это к MJPEG.mkv, затем сделайте что-нибудь с mkvmerge, чтобы заменить временные метки кадра в этом на временные метки из mpdecimate.timestamps
.
Если бы вы использовали xcoding вместо простого преобразования данных jpeg в MJPEG, это было бы НАМНОГО проще, поскольку вы просто использовали бы мою первую команду с mpdecimate и любым другим кодеком, кроме copy
, и это было бы просто Work (tm).
Я не пробовал ничего из этого, так как это был старый вопрос. Также причина, по которой я не заполнил пробелы в том, как на самом деле фильтровать ваш каталог jpegs на основе вывода mpdecimate, или как на самом деле использовать поток меток времени.