Создание Motion JPEG кадр за кадром с переменной частотой кадров

Я анализирую ряд решений проблемы, которую я имею в виду: я получаю изображения с устройства, и мне нужно сделать из него видеофайл. Однако изображения поступают с некоторой случайной задержкой между ними, и я ищу лучший способ кодировать это. Я должен создавать это видео кадр за кадром, и после каждого кадра у меня должен быть новый видеофайл с новым кадром, заменяющий старый видеофайл.

Я думал о том, чтобы зафиксировать частоту кадров немного "быстрее", чем минимальная задержка, которую я мог бы получить, и просто повторять последний кадр, пока не прибудет новый, но я думаю, что это решение не оптимально.

Кроме того, этот проект сделан с Delphi (нет, я не могу изменить это), и мне нужны средства, чтобы превратить эти кадры в видеофайл после каждого кадра. Я думал об использовании mencoder в качестве внешнего инструмента, но я читаю документацию и до сих пор не нашел варианта, позволяющего вставить рамку в уже закодированный видеофайл Motion JPEG. Поскольку мои изображения поступают в формате JPEG, я подумал, что было бы разумно использовать Motion JPEG, но даже это еще не точно. Кроме того, я не знаю, можно ли использовать mencoder в качестве библиотеки. Это очень помогло бы, если бы это сделало.

Что ты предлагаешь?

1 ответ

Решение

Существуют некоторые форматы медиа-контейнеров, которые поддерживают переменную частоту кадров, но я не думаю, что MJPEG является хорошим выбором из-за нехватки памяти. Я считаю, что лучшим способом было бы перекодировать кадры JPEG в формат MP4, используя как I-кадры, так и P-кадры.

Вы можете использовать заголовочные файлы FFMPEG Delphi/FP для транскодирования.

Редактировать:

Самую свежую версию заголовков FFMPEG можно найти в репозитории GLScene на SourceForge.net. Для просмотра файлов вы можете воспользоваться этой ссылкой

Другие вопросы по тегам