How can I import subtitles/captions into a letterboxed video like this? How can I easily create captions that look like this?


(Click to see a video that shows a good example.)

I have a video that is 1280 x 720 pixels but converted to a square of 1280 x 1280 pixels so that there is empty space above and below.

Using Adobe Premiere Pro CC 2017, I've then added a "Default Still" Title to the top.

Given an .srt or other file of captions, how could I import them to be shown in the bottom band of the video at the appropriate time?

I want them "burned in" so that they are always visible regardless of the device used to play the video.

(So maybe they're called "open captions" instead of "closed captions".)

I want to be able to choose the font style and size.

I want to avoid creating a "Default Still Title" for each sentence of text manually—that would be a lot of hassle for a long video.

I have Adobe Premiere Pro CC 2017 but could buy other software if necessary or could use ffmpeg if that is capable.
You can use ffmpeg. Make your subtitles with Aegisub or manually with a text editor. ASS subtitles are fancier, but SRT are simpler if you want to manually make them.

Alignment &amp; Margin

The default settings will likely work, but you can control the general location, or alignment, using the "keypad" coordinates. For example, 2 is bottom center. For more granular control you use the vertical margin. In Aegisub these options are available in Subtitles > Style Manager > Edit.



You can also choose the font and font size in this screen.

ffmpeg examples

Now run ffmpeg with the subtitles filter to make your hardsubs:

ffmpeg -i input -filter_complex "subtitles=subs.ass" output


Or if you want to avoid using Aegisub you can use the force_style option:

ffmpeg -i input -filter_complex "subtitles=subs.ass:force_style='Fontname=Arial,Fontsize=20,Alignment=2,MarginV=10'" output


Resulting in:



If you do want to use ffmpeg make sure to output from Premiere using a lossless format, such as UT video, because ffmpeg will re-encode it which is required when filtering.