FAB Subtitler Server supports many additional functions. This page describes the function “Subtitle logging server”.
In short: the subtitle logging server listens on a TCP port for ESUB-XF subtitle connections (sent for example by FAB Subtitler LIVE) and stores the subtitles that all connected clients send in a teletext EBU STL subtitle file (.stl). A new file is started when a client connects after the last client has disconnected (or after no subtitle was received for a configurable time), and files that are older than a configurable number of days are deleted. The function needs a valid license of FAB Subtitler Server.
The frame rate of the written subtitle file is configurable (25 frames per second by default). The language of the file is the language that the first client sends in the ESUB-XF protocol.

How it works
- The function listens on the configured TCP port. Only one ESUB-XF user name and password is accepted.
- The first subtitle that a logged in client sends starts a new subtitle file (a login alone starts nothing). The time of the file is the time at which the TCP connection of that client was established (not the time at which it logged in), or the time of the subtitle if that client stayed connected after the previous file was closed. All clients that are connected at the same time write into the same file. They all have the language of the first client, the language that other clients send is ignored.
- The received subtitles are kept by the service and saved every 30 seconds while at least one client is connected.
- When the last client disconnects, or when no subtitle was received for EndFileAfterInactiveSec seconds, the file is saved and closed. If the last subtitle was not deleted by the client, its out timecode is the time at which the last connection was closed. The next subtitle starts a new file with a new file name, also from a client that is still connected.
- A client from which nothing at all is received for DisconnectInactiveClientAfterSec seconds is disconnected.
- Files that are older than the configured number of days are deleted from the folder.
Configuration
- Open FAB Subtitler Server Configuration and click on the page “Additional Functions”.
- Add the function “Subtitle logging server” and fill in the fields below.
- Add one entry for every subtitle logging server that is required. Every entry needs its own TCP port.
The fields of an entry are:
- Field: Enabled
Meaning:Yto start this subtitle logging server (the default for a new entry),Nto ignore this entry. - Field: Description
Meaning: Free text which identifies the entry in the list of additional functions. - Field: Connection
Meaning: The TCP port to listen on and the ESUB-XF user name and password, see below. - Field: Folder
Meaning: The folder in which the subtitle files are stored, for example\\server\share\subtitlelogs\daserste. The folder is created if it does not exist. - Field: MapNetFolder
Meaning: Optional. A network folder that is mapped before Folder is used, so the service can write to the share even if its account has no access to it:\\server\share,username,password. The user name and the password are optional (without them the share is mapped with the account of the service), the password can contain commas. In the Configuration the password is written as plain text, it is stored encrypted. See “MapNetFolder” below. Empty by default. - Field: Filename
Meaning: The name of the subtitle file, see below. - Field: DeleteAfterDays
Meaning: Subtitle files in the folder that are older than this number of days are deleted. Use0to never delete files. The default for a new entry is 100. - Field: Timecode
Meaning: The timecode of the subtitles in the file:ZeroBased(default),TimeOfDayorTimeOfDayUTC, see below. - Field: Framerate
Meaning: The frame rate of the timecodes and of the subtitle file. Select it from the list:25(the default),24,23.98,29.97df,29.97ndf,30ndf,30df,47.95,48,50,59.94df,59.94ndf,60ndfor60df. It can also be written without the decimal separator (2997is 29.97,2398is 23.98), anddforndfcan be added directly after the number, for example2997df. Withoutdfa frame rate of 29.97, 30, 59.94 or 60 is non drop frame. If the field is empty, 25 is used. A frame rate that is not one of these is written to the log file as an error and the logging server is not started. - Field: MinIntervalMS
Meaning: The minimum time in milliseconds between the end of a subtitle and the start of the next one. The default for a new entry is 80. See Timing of the subtitles below. - Field: MinDurationMS
Meaning: The minimum duration of a subtitle in milliseconds. The default for a new entry is 1000. - Field: MaxDurationMS
Meaning: The maximum duration of a subtitle in milliseconds. The default for a new entry is 20000. - Field: EndFileAfterInactiveSec
Meaning: The file is closed when no client has sent a subtitle for this number of seconds, even if clients are still connected (for example clients that forgot to disconnect). The next subtitle then starts a new file. Use0to close the file only when the last client disconnects. The default for a new entry is 1800 (30 minutes). - Field: DisconnectInactiveClientAfterSec
Meaning: A client from which nothing at all is received for this number of seconds is disconnected. Use0to never disconnect clients. The default for a new entry is 3600 (1 hour).
Connection
The Connection has three parts separated by ;:
tcp://@ip:port;username;password
- Part:
tcp://@ip:port
Meaning: The TCP port on which the ESUB-XF connections are accepted, for exampletcp://@0.0.0.0:4161.0.0.0.0means that connections are accepted on all network adapters, this always works (also for a connection from the same computer to127.0.0.1). With the IP address of a network adapter, for exampletcp://@192.168.211.29:4161, only connections to that IP address are accepted. - Part: username
Meaning: The ESUB-XF user name that the clients have to use. - Part: password
Meaning: The password that the clients have to use. It can contain;.
The password is stored encrypted in the configuration. It is shown as plain text only while you edit the entry. Make sure that the Windows firewall allows connections to the TCP port.
MapNetFolder
If Folder is on a network share, MapNetFolder maps the share in the same way as the additional function “Map network drive” does (without a drive letter):
\\server\shareis mapped with the account of the service,\\server\share,usernamewith this user and no password,\\server\share,username,passwordwith a user and a password (DOMAIN\usernamefor a domain account).- The share is mapped by the thread that copies the subtitle files to Folder, before it copies, and again after a copy failed. While the share cannot be mapped (the reason is in the log of the entry) the subtitle files stay on the local disk and are copied when it works again.
- A MapNetFolder that is not written as
\\server\shareis an error: the logging server is not started. - The log of the entry says
Network folder ... is mappedwhen it is mapped for the first time and again after an error, andError mapping network folder ... [Windows error code] ...for an error (the same error once an hour). The password is never written to a log file.
Filename
The Filename is the name of the subtitle file. Text in curly braces {} is replaced by the date and time at which the file was
started (the time at which the TCP connection of the first client was established), everything else is used as it is. The text in the braces is a date and time pattern
with these codes: yyyy year, mm month, dd day, hh hours, nn minutes, ss seconds and zzz milliseconds.
Text that is not in braces, for example the name of the channel, is not changed, so it can contain any letters.
The extension .stl is added if the name does not end with .stl. Characters that cannot be used in a file name are replaced by _.
- Filename:
{yyyy-mm-dd-hh-nn-ss-zzz}-DasErste.stl
Resulting file name:2026-10-03-12-45-12-356-DasErste.stl - Filename:
DasErste-{yyyymmdd}
Resulting file name:DasErste-20261003.stl
Use the date and time in the file name (with milliseconds), otherwise the next file overwrites the previous one.
Only the files in the Folder whose name matches the start and the end of the Filename (the text before the first { and after
the last }) are deleted after DeleteAfterDays days, other files in the folder are never deleted.
Timecode
- Timecode:
ZeroBased
Meaning: The timecode of the subtitles is 00:00:00:00 when the file is started (the time at which the TCP connection of the first client was established). This is the default, also if the field is empty. - Timecode:
TimeOfDay
Meaning: The timecode is the local time of day at which the subtitle was received. - Timecode:
TimeOfDayUTC
Meaning: The timecode is the UTC time of day at which the subtitle was received.
Example configuration
The following is an example of the configuration which can be used to receive ESUB-XF connections on any network adapter on TCP port 4161 and store received subtitle files into folder \server\share\subtitlelogs\daserste and the filename will be in the format 2026-10-03-12-45-12-356-DasErste.stl. The files are deleted after 100 days, the timecode starts at 0 in every file, the frame rate is 25 and the end times of the subtitles are corrected as described above.
Enabled=Y
Description=Subtitle logger for DasErste
Connection=tcp://@0.0.0.0:4161;username;password
Folder=\\server\share\subtitlelogs\daserste
Filename={yyyy-mm-dd-hh-nn-ss-zzz}-DasErste.stl
DeleteAfterDays=100
Timecode=ZeroBased
Framerate=25
MinIntervalMS=80
MinDurationMS=1000
MaxDurationMS=20000
EndFileAfterInactiveSec=1800
DisconnectInactiveClientAfterSec=3600
Notes
- Every entry writes its own log file to the folder
c:\ProgramData\FAB\FAB Subtitler Server\Log. The name of the file starts withAddFunc_followed by the number of the entry (for exampleAddFunc_00012). When the subtitle logging server is started (and every time the port is opened again), the log contains the lineInitializing subtitle logging server ...and, when it listens,Subtitle logging server initialized ..., so you can see when it was started. The log contains all errors, every connection and disconnection of a client, failed logins, ignored deletions of subtitles, every file that is saved (with the number of subtitles) and every file that is deleted. - If the TCP port cannot be opened (for example because it is used by another program), an error is written to the log file and it is tried again every minute.
- The old files (DeleteAfterDays) are deleted from the Folder, and the web interface lists the Folder, by a background task.
The web interface shows the number of files in the Folder with the number of files that are waiting to be copied, and the five newest files.
The row
Current subtitleis updated when the page is refreshed (every second), it shows a new subtitle and an erased subtitle without a delay.
This page was last updated on 2026-10-13