How to embed/hardcode SRT subtitles into mp4 videos with VLC?

I'm looking for a way to "burn in" or render/rembed/hardcode subtitles (from an SRT file) into an MP4 video with VLC.

But no matter what options I use, it never works properly. I get a file that plays video way too fast (audio is normal), or one that plays normally, but actually does not have embedded subtitles. Also, with some options (like the one below) it does not play in QuickTime, only in VLC.

So the main question is: how can I make this work in VLC? Secondary questions are:

  • How do I decide which options I should set?
  • Which settings are best if I want to leave the file bitrate etc. the same as much as possible, only embed subtitles? It seems I cannot leave the field empty or Video/Audio unchecked, so I guess I would first need to figure out the original audio and video bitrate.
  • What do the "Scale" and "Channels" options mean?

... none of which are answered within the VLC documentation.

For example, this is one set of options I used in the "Advanced Open File…" dialog:

Advanced Open File…

   myFileName.mp4
    [ ] Treat as a pipe rather than as a file

[x] Load subtitles file:
      mySubtitleFileName.srt

[ ] Play another media synchronously


[x] Streaming/Saving

         Streaming and Transcoding Options

           [ ] Display the stream locally
           (o) File      [outputFileName.mp4                      ]
                         [ ] Dump raw input

           Encapsulation Method: (MPEG 4      )


         Transcoding options

           [x] Video   (mp4v       )          Bitrate (kb/s) [256   ]
                                                       Scale [1     ]
           [x] Audio   (mp3        )          Bitrate (kb/s) [128   ]
                                                    Channels [1     ]

Solution 1:

Adding a subtitle track from VLC usually works. Make sure your subtitle fits the video (aka same source). I haven't used quicktime for subtitles for quite a while, but I seem to recall that muxing an avi and srt to a mov worked (although that's just softcoding).

For hardcoding or "burning" the subtitles, check out Handbrake, it's tailored for this kind of stuff. It's basically a frontend for ffmpeg and you can do all sorts of modifications to video & audio.

Solution 2:

Use MkvToolnix - it will hardcode avi mp4 etc without recoding. Just load your movie Then add your srt file and then click multiplex it. It isSuper duper fast.