В данной работе я продемонстрирую способ сокрытия gif изображения в видеофайл используя библиотеки ffmpeg и ffmpy. ОПИСАНИЕ АЛГОРИТМА I. encode.py
-
Разобьем исходные видеофайл(разрешение 2560x1440) и gif файл на фреймы используя функции библиотеки ffmpeg. Также кадрируем gif изображение, приводя его к разрешению 100x100
-
Найдя количество полученных фреймов, определяем фреймы видео, в которые будем вставлять пиксели фреймов gif изображения.
-
Используем генератор псевдослучайных чисел, задав семя генерации, которое будет впоследствии использоваться как ключ к декодированию. Используя генератор псевдослучайных чисел, меняем случайные пиксели фрейма видео на пиксели фрейма. Если число повторяется, переходим к следующему. Получается фрейм видео с пикселями gif фрейма.
-
Сохраняем изображения(фреймы) и составляем из них видеофайл с помощью библиотеки ffmpeg.
-
Мы получили новый видеофайл того же разрешения и той же длительности, что и исходное.
II. decode.py
-
С помощью обратного алгоритма достаем из фреймов видео кадры спрятанного gif, используя тот же ключ генерации псевдослучайных чисел(Качество изображения ухудшилось, т.к при записи в видеофайл происходило сжатие).
-
Объединяем фреймы в видео, а затем в gif с помощью библиотек ffmpeg, ffmpy.
Итог: