11

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?

John
  • 215
  • 1
  • 3
  • 10
xralf
  • 16,149
  • 29
  • 101
  • 149
  • A solution that worked for me with ffmpeg: http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20burn%20subtitles%20into%20the%20video –  Jan 29 '13 at 16:08

3 Answers3

4

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.

edison23
  • 103
  • 3
user91768
  • 41
  • 1
  • Doesn't work. "Output file #0 does not contain any stream" – Rubi Shnol Apr 08 '18 at 09:53
  • This filter requires ffmpeg to be compiled with --enable-libass, [according documentation.](https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo) – Nakamoto Mar 26 '21 at 02:33
  • Thx, resulting subtitles was smaller than i am used to, i would increase 50%. Someone mention: `subtitles=subtitle.srt:force_style='Fontsize=20'` https://ffmpeg.org/ffmpeg-all.html – 16851556 Jan 14 '22 at 16:24
3

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 ...

Shawn J. Goff
  • 45,338
  • 25
  • 134
  • 145
  • 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
  • 3
    Of course, `...` means "and whatever other options you need". – Shawn J. Goff 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 08 '11 at 10:07
  • @ShawnJ.Goff: This did not work for me either. What version of ffmpeg are you using, and what OS? – Faheem Mitha Apr 07 '12 at 20:52
  • For anyone else looking at this, check whether your `ffmpeg` is from `libav-tools` or similar, or actually from the ffmpeg project, since there has been a fork. – Faheem Mitha Apr 08 '12 at 07:46
1

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.

Michael Mrozek
  • 91,316
  • 38
  • 238
  • 232
ajaaskel
  • 11
  • 1