====== ffmpeg - Subtitles - Add subtitles from a SRT file ======
===== Adding Soft Subtitles =====
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s srt -metadata:s:s:0 language=eng output.mkv
**NOTE:** Different syntax is used for MP4 and MKV.
* **-c** copy specifies that the video is not to be re-encoded.
* **-c:s mov_text** sets the SRT file to MOV_TEXT format.
* **-c:s srt** sets the SRT file to SRT format for MKV.
* **-metadata:s:s:0** means to set the metadata for Stream:Subtitle:Number of stream, starting with 0.
* **language=eng** sets the subtitle language to English.
* The value for this option uses the [[https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes|ISO 639]] language code which consists of 3 letters for every language.
----
===== Adding Hard Subtitles =====
ffmpeg -i input.mp4 -vf subtitles=subtitle.srt output.mp4
**NOTE:** The subtitles will be added to the video using the default font styles.
* **-vf** is an alias for **-filter:v**.
* **subtitles=subtitle.srt** is the name of the filter followed by the name of the SRT subtitle file.
----
===== Adding Soft Subtitles with additional formatting =====
Use a SRT subtitle file and change the size of the font by putting ASS style format **KEY=VALUE** pairs separated by a comma.
ffmpeg -i input.mp4 -vf subtitles=sub.srt:force_style='FontName=DejaVu Serif,FontSize=24' -vcodec libx264 -acodec copy -q:v 0 -q:a 0 output.mp4
**NOTE:** This will put the subtitles with DejaVu font and size 24 while keeps the quality of the video.
----
===== References =====
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes