Skip to content

Tips: To keep subtitle streams when converting video

suntong edited this page Jan 6, 2019 · 7 revisions

(NB, edited from https://askubuntu.com/a/214351/843820)

Softsubs

For all formats that support streaming text format subtitles:

Basic example using default stream selection behavior while stream copying the audio:

ffmpeg -i input.mkv -c copy -c:s copy output.mp4

Example to stream copy all of the video and audio streams, convert the all text based subtitle input streams (SRT, ASS, VTT, etc) to the streaming text format, and set the language for the first two subtitle streams.

ffmpeg -i input.mkv -map 0 -c copy -c:s copy -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4

Same as above but re-encode the video and audio to formats compatible with the MP4 container (H.264 video:

ffmpeg -i input.mkv -map 0 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4

Same as above but use the -map option to choose the first video stream, second audio stream, and third subtitle stream:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -map 0:s:2 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng output.mp4

Ref:

Hardsubs

Text based subtitle format inputs

Use the subtitles filter to "burn-in" text based subtitle formats (SRT, ASS, VTT, etc). Note that this requires re-encoding, so it will by much slower than using softsubs.

See FFmpeg Wiki: Subtitles

Clone this wiki locally