FFMPEG es una de esas herramientas dignas de ser llamada una navaja suiza del vídeo, me sorprende la cantidad de aplicaciones que tiene, lo mejor de todo, es de código abierto.
Agregar subtítulos es posible gracias a esta librería, si tienes linux la instalación es tan sencilla como buscarla en el repositorio de la distribución e instalarla, para Mac, Windows u otros sistemas operativos recomiendo revisar el método de instalación desde la página oficial https://www.ffmpeg.org/download.html
Es posible agregar los subtítulos permanentes haciendo uso de los filtros subtitles o ass.
Con el filtro subtitles
Este filtro dibuja los subtítulos encima del vídeo usando la librería libass, por lo tanto es necesario que ffmpeg esté compilado con --enable-libass, por lo regular las versiones desde los repositorios de las distribuciones vienen compiladas de esta forma.
Si los subtítulos están aparte del vídeo, por ejemplo en un archivo llamado subtitulos.srt, realice el procesamiento de la siguiente forma:
ffmpeg -i video.avi -vf subtitles=subtitulos.srt out.avi
Si los subtítulos se encuentran embebidos en el contenedor, por ejemplo video.mkv, entonces realice el procesamiento de la siguiente forma:
ffmpeg -i video.mkv -vf subtitles=video.mkv out.avi
Para más información sobre el uso de este filtro, consulte la documentación en http://ffmpeg.org/ffmpeg-filters.html#subtitles-1
Con el filtro ass
Lo mismo que el filtro subtitles sólo que limitado al formato ASS (Advanced Substation Alpha), para realizar el procesamiento es tan sencillo como lo siguiente:
ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi
Para más información sobre el uso de este filtro, consulte la documentación en https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
Subtítulos usando imágenes
Este es un método un poco distinto y consiste en sobreponer un vídeo sobre otro, el vídeo sobrepuesto lleva las imágenes con los subtítulos, para conocer más sobre este método le recomiendo consultar los siguientes enlaces: