Я сделал нечто подобное с FFMPEG, и кажется, что данные кадра, которые вы получаете от FFMPEG, уже содержат заголовок кадра, который является всем, что вам нужно для перекодирования данных. Убедитесь, что вы декодируете данные mp4 в необработанный формат (например, RGB24), а затем кодируете их в пиксельном формате, ожидаемом кодировщиком JPEG / GIF (вероятно, в формате YUV), используя libswscale, перед передачей данных в кодировщик. *