Вы можете попробовать передать параметр качества для функции imagejpeg, например:
imagejpeg($im, NULL, 75);
Попробуйте использовать imagepng, чтобы не потерять качество при конверсиях, но размер файла будет большим.
Вы также будете бороться с реальным качеством видео и движением внутри него.
В вашем случае не легко и, возможно, невозможно получить кадры хорошего качества из видео.