Как конвертировать изображения в видео, используя FFMpeg для встроенных приложений? - PullRequest
0 голосов
/ 15 апреля 2019

Я кодирую изображения как видео, используя FFmpeg, используя собственный код C, а не команды Linux, потому что я разрабатываю код для встроенной системы.

В настоящее время я изучаю первый урок по дранжеру и код, указанный в следующем вопросе.

Как кодировать видео из нескольких изображений, созданных в программе на C ++, без записи отдельных кадров на диск?

Я нашел некоторый "менее абстрактный" код в следующем местоположении github.

https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/encode_video.c

И я планирую использовать это также.

Моя конечная цель - просто сохранить видео во встроенной системе, используя встроенный исходный код C, и я иду по кривой слишком медленно. Итак, в заключение, мой вопрос: кажется ли, что я иду по правильному пути здесь? Я знаю, что моя система не поставляется с аппаратным обеспечением для преобразования видеокодеков, что означает, что мне нужно делать это с программным обеспечением, но я не уверен, что FFmpeg - даже выполнимый вариант для встроенной работы, потому что я еще не скомпилировал.

Самым большим красным флажком для меня на данный момент является то, что FFmpeg использует динамическое распределение памяти. Я не знаю, как оценить объем динамической памяти, которую он использует. Для меня это очень важная информация, и если кто-нибудь знает, сколько памяти использовалось или как ее оценивать перед компиляцией, я был бы очень признателен за ввод.

1 Ответ

0 голосов
/ 16 апреля 2019

После дальнейших исследований мне кажется, что кодирование видео часто является аппаратно-интенсивной задачей, которая может использовать несколько процессоров и объем оперативной памяти в мегигайтах. Чтобы избежать этого, я выполняю минимальное сжатие, используя формат AVI.

Я обнаружил, что FFmpeg не может быть легко использован для встроенных систем, использующих сырой металл, потому что начальная «make» библиотеки устанавливает параметры конфигурации, специфичные для компиляции компьютера, что противоречит необходимости кросс-компиляции. Я вижу, что доступны флаги кросс-компиляции, но я не нашел никакой документации, описывающей, как их использовать. В любом случае я хочу избежать больших куч и многопоточности, поэтому я пошел дальше.

Я решил поискать более простой исходный код в другом месте. mikekohn.net/file_formats/libkohn_avi.php Отличный ресурс для базового кодирования без каких-либо сложных библиотечных зависимостей или многопоточности. Я еще не реализовал, так что никаких гарантий, но удачи. На самом деле это один из самых понятных исходных кодов, которые я нашел для изображений в видео приложениях, кроме https://www.jonolick.com/home/mpeg-video-writer. Однако в исходном коде Джона Олика используется кодирование с потерями и минимальная частота кадров (свойственная MPEG), которого я пытаюсь избежать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...