ffmpeg сделает это за вас. Посмотрите эту часть документации, в которой говорится о кодировании необработанных кадров YUV 420P. Вы можете использовать встроенный в ffmpeg кодировщик mpeg 4, или он также позволяет вам взаимодействовать с другими библиотеками, такими как xvid и x264.
Самый простой способ справиться с этим - просто использовать исполняемый файл командной строки ffmpeg и просто вызывать его из вашей программы на C ++. Другой вариант - использовать libavformat и libavcodec (библиотеки ffmpeg). Это потребует больше работы, но даст вам больший контроль над процессом (например, если вам необходимо выполнить какую-либо обработку видеоданных).