I'm told it's possible to embed subtitles (.srt) into video files (.avi) using ffmpeg, but I can't find any mention of it in the man page. Is this possible? What command do I use?


From man ffmpeg:

Subtitle options:

-scodec codec Force subtitle codec ('copy' to copy stream).

-newsubtitle Add a new subtitle stream to the current output stream.

-slang code Set the ISO 639 language code (3 letters) of the current subtitle stream.

So: ffmpeg -newsubtitle subtitles.srv -i video.avi ...

  • If I use instead of ... result.avi this command does not work At least one output file must be specified
    – xralf
    Oct 27 '11 at 11:01
  • 2
    Of course, ... means "and whatever other options you need". Oct 27 '11 at 11:09
  • Sufficient is ffmpeg -newsubtitle subtitles.srt -i video.avi result.avi but this ends with the message above. I hoped that result.avi is output file. I tried it with -o result.avi too but without success.
    – xralf
    Oct 27 '11 at 11:22
  • 1
    I don't know why this didn't work for me (maybe wrong file or problem with ffmpeg). I tried this command instead mencoder movie.avi -sub movie.srt -o movie.hardsubs.avi -oac copy -ovc lavc -lavcopts vbitrate=1200
    – xralf
    Nov 8 '11 at 10:07
  • @ShawnJ.Goff: This did not work for me either. What version of ffmpeg are you using, and what OS? Apr 7 '12 at 20:52

From Pier's link, specifically:

ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi

This creates a hard-sub ("burns" the subtitles into the video images) so you can't hide the subtitles and the change is irreversible!

I've used this successfully with the current static git ffmpeg release.

  • Doesn't work. "Output file #0 does not contain any stream"
    – Rubi Shnol
    Apr 8 '18 at 9:53
  • This filter requires ffmpeg to be compiled with --enable-libass, according documentation.
    – Nakamoto
    Mar 26 at 2:33

ffmpeg developers are working with subtitle support, but as far as I know it's only working in the latest ffmpeg. mencoder will burn subtitles instantly, if you want to try that instead.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.