Serviio - free DLNA media server for Windows, Mac and Linux

Media Streaming Server

Subtitles support

Serviio supports delivering external or embedded subtitles to all devices.

Subtitles delivery types

Some of the devices support subtitles out-of-the box, delivered as a text file. Some devices do not have any support for subtitles and require them to be burned into the video stream (hardsubs), thus effectively transcoding the video with the text on the screen.

Note, that when burning subtitles in the stream are enabled, you might experience high CPU usage and possibly playback issues (depending on your hardware). This method is not suitable for low powered NAS devices. Also note that (if on Linux) you will need at least FFmpeg 1.1.1 with libASS to fully utilize Serviio's subtitles support.

Subtitles configuration

If your subtitle file includes accented characters the best bet is to convert them to UTF-8 (which should work for both, softsubs and hardsubs). Serviio, however, gives you the option to try to detect the file encoding. You can also specify the file's character encoding manually, so that it renders correctly on the video stream. Enter the character encoding to the Subtitle character encoding field (e.g. cp1256 for Arabic). You can find available encodings in the libiconv page.

Subtitle file types

A subtitle file can be stored either externally - next to the video file, or can be embedded inside the video file (usually MKV). You can also enable automatic online subtitle downloading. In the case of embedded subtitles, Serviio first extracts the data from the video file and then processes the same way as in the case of an external subtitles file.

Serviio supports these subtitle formats:

  • SubRip (.srt)
  • MicroDVD (.sub)
  • SSA/ASS (.ssa, .ass)
  • SAMI (.smi)
  • VTT (.vtt)
  • MOV open text (embedded)
  • DVD subtitles (embedded, only as hardsubs)
  • HDMV_PGS (embedded, only as hardsubs)
  • IDX/SUB (bitmap, only as hardsubs)

When using an external subtitles file, it has to named with the same name as the video file, except the extension, e.g.:

  • my_movie.avi
  • my_movie.srt

You can also specify the language, e.g.:

  • my_movie.avi
  • my_movie_en.srt
  • my_movie-de.sub
  • my_movie(fra).srt
  • my_movie.cz.srt

Subtitle file selection

There are some rules on how Serviio detects the appropriate subtitle file. Note, that you can enter your preferred language codes, separated by a comma and ordered by preference, on the Languages tab in the console.

External files

For an external file to be recognized, it has to follow the above file name stucture. If you provide one or more language codes (e.g. cze,cz) it will look for files with the language codes in the name, by the language preference (my_movie_cze.srt, my_movie-cz.sub). If no such file exists, it'll try to get the default one (my_movie.srt).

If you don't have a preferred language code set up, it will only look for the default subtitle file (my_movie.srt).

In a case the external (srt) subtitles are not displayed, the file might be corrupted or not suitable for viewing on your device. You might try fixing it with SrtWiz.

You can also force a subtitle file to side-step the language rules. Simply put the word forced into the file name, like:

  • my_movie.avi
  • my_movie.forced.srt
  • my_movie-de.forced.sub
  • my_movie(fra).forced.srt
  • my_movie.cz.forced.srt
The forced subtitle will be selected no matter what your language preference is.

Embedded files

A video file of a certain format (e.g. MKV) may have one or more subtitle tracks embedded inside. If enabled, Serviio will extract one of the tracks into a subtitle file and deliver (as a text (where possible) or hardsubs). For a track to be recognized, it has to have a language tag, be one of the supported types an you have to define preferred language code(s) to match these tracks.

The easiest method of finding out the language code of the embedded subtitle track is executing the bundled ffmpeg tool like this:

ffmpeg -i name_of_the_video_file

Embedded subtitle tracks in FFmpeg output

WARNING: Embedded text-based subtitles might not work for some (large) files, due to the time needed to extract them. It's even more true if the file is stored on a remote drive.

Online subtitles

When enabled, Serviio uses OpenSubtitles.org to try to look up subtitles for all your video files. It is advisable (but not strictly necessary) to register on their site and use the credentials in Serviio in order to avoid certain search limitations.

Online Subtitles configuration

Selecting external file vs. embedded subtitle file vs. online subtitles

In the case a video has all, a matching external subtitle file as well as a matching embedded track and online subtitles, the external file has the highest priority, then the embedded subtitle and then the online subtitle.