Вы можете использовать FFmpeg для кодирования желаемого результата в виде видеофайла.
FFmpeg - это «Полное кроссплатформенное решение для записи, преобразования и потоковой передачи аудио и видео», и это бесплатно.
Загрузите статическую связанную версию, которая будет использоваться какинструмент командной строки.
Для демонстрации решения используйте FFmpeg для создания видео тестового шаблона.
Следующая команда создает 5 секунд 160x120 несжатого видеофайла AVI со скоростью 10 кадров в секунду (тестовый шаблон in.avi включаетсчетчик кадров):
ffmpeg -y -r 10 -f lavfi -i testsrc=duration=50:size=160x120:rate=1 -c:v rawvideo -pix_fmt bgr24 in.avi
Следующая команда складывает кадр k, k + 1, k + 2, ..., k + 7 в две строки:
ffmpeg -y -ss 00:00:00.000 -i in.avi -ss 00:00:00.100 -i in.avi -ss 00:00:00.200 -i in.avi -ss 00:00:00.300 -i in.avi -ss 00:00:00.400 -i in.avi -ss 00:00:00.500 -i in.avi -ss 00:00:00.600 -i in.avi -ss 00:00:00.700 -i in.avi -filter_complex "[0:v][1:v][2:v][3:v]hstack=inputs=4[top];[4:v][5:v][6:v][7:v]hstack=inputs=4[bottom];[top][bottom]vstack=inputs=2[v]" -map "[v]" -c:v rawvideo -pix_fmt bgr24 out.avi
-ss 00:00:00.100
, -ss 00:00:00.200
... увеличено на 100 мсек, длительность одного кадра.
Отрегулируйте время в соответствии с частотой кадров вашего входного видео.
-c:v rawvideo -pix_fmt bgr24 out.avi
создает несжатый AVI видеофайл.
Я выбрал несжатое видео, чтобы избежать артефактов перекодирования (цена очень большого файла).
Вы можете сделать шаг вперед / назад в любом видеоплеере.
Я знаю, что это не то решение, которое вы искали, но я надеюсь, что оно подходит ...
Пример кадра вывода: