Skip to content

A cross-platform subtitle player with easy synchronization

License

Notifications You must be signed in to change notification settings

vincemann/subtitle-buddy

Repository files navigation

Subtitle Buddy

This is an opensource, crossplatform Subtitle Player, written in pure Java, as an alternative to Penguin Subtitleplayer.
This program focuses on simple synchronization.
It is used to add subtitles to movies, beeing streamed online, that offer no subtitles (or not the language you want).
You can simply download the matching subtitle-file (.srt format) for the movie you are streaming, load them into this program and overlay your screen with the subtitles.
Those subtitle-files (.srt) are present,in a big variety of languages, for almost every movie.
Snychronizing the subtitles with the movie is as easy as shown here:

features

  • easy start/stop synchronisation (next-click-counts, start/stop via spacekey)
  • Skip to specified time
  • time fine tuning (stepping small steps for- and backwards)
  • Customizable subtitles (size, color, font)
  • add own fonts

installation

There are 3 ways for installation:

1. download installer (win / linux / mac )

Download your favorite installer or app bundle from here and double click it.

2. homebrew (linux / mac)

Install homebrew like shown here.
Open terminal and type:

brew tap vincemann/homebrew-repo
brew install subtitle-buddy

start with subtitle-buddy

for mac users:
You probably need to go to "Settings" -> "Security & Privacy" -> "Accessibility", click on the lock and add sh
to the allowed programs. (/bin/sh)
This is needed bc there is a wrapper shell script (sh) that is executed in order to run the program.

3. manual (advanced)

Download image.zip file for your os here.
Unzip it and hook up the start script:
For linux/mac you may want to create a symlink to the start script like this:
ln -sf $(pwd)/appLauncher-<linux|mac>/bin/appLauncher /usr/local/bin/subtitle-buddy
For Windows you may want to create a Desktop shortcut to the start script.
After unzipping the start script is at ./appLauncher-<linux|mac|win>/bin/appLauncher.

synchronisation

There are two convient ways to synchronize the loaded subtitles (.srt) with the movie.

  1. The gif shows the "next-click-counts"- feature in action:
    Press alt+n, then a finger icon will appear.
    This means, that the next click (left mouse click) will start/stop the loaded sutitles. Your next click should be a click on the play/pause button of the browsers movie-player.

  2. You can also start/stop the loaded subtitles, by pressing the space-key.
    Most online video players start/stop the movie, if you focus the player and press space.
    This feature is disabled by deafault, to prevent accidental pause/resuming of the loaded subtitles.
    Both features can be enabled/disabled in the options window.

After that you can finetune by pressing << and >> until its perfect. You can hide/display the deafault subtitle via alt+d when you are all set up.

navigation

You can get from settings mode (default) to movie mode, by pressing on the "movie-mode" button.
A double-click on the subtitles, or pressing escape will bring you back from movie mode to settings mode.

configuration

You can configure stuff by opening the options window.
You can configure even more by modifying the application.properties file in the config directory:
linux/mac: ~/.subtitle-buddy
windows: %appdata%\subtitle-buddy
If you break anything, just remove this folder, it will be regenerated.
For example you can permanently hide the default subtitle by setting defaultSubtitle = "".
You can change the font size by dragging on the edge of the blue subtitle box in movie mode.

adding your own fonts

The program will generate a folder named "fonts" in the config directory, you can add your own fonts to this folder.
It is expected that there is always a font pair present, for example:
myAwesomeFont.otf and myAwesomeFont.italic.otf
Supported font types are at least .otf and .ttf.

requirements

Should run on most gui based OS.
Tested on Windows 10 x86_64, Debian 10 x86_64 and MacOs X 11.5 x86_64.
This program makes use of this library for capturing hotkeys and mouse clicks.
See its "Software and Hardware Requirements" for additional details.
The installers are build for x86_64 if no architecture is in the filename.

encoding issues

If you experience encoding isses ( some characters are not displayed properly),
you should transform your srt file to utf-8 here.
If you want a different encoding, you can set it in application.properties file -
You could replace the encoding line to encoding = ISO-8859-1 for example.

building from sources

Clone the repo and build the artifacts like shown here:
(files will be built into ./build/releases and ./build/jpackage)
image (see manual installation)
linux/mac: ./gradlew jlinkZip
windows: gradlew.bat jlinkZip

linux
deb: ./gradlew jpackage
AppImage: ./gradlew buildLinuxAppImage

mac
app: ./gradlew jpackage

windows
(can only be built on linux)
installer: ./gradlew buildWindowsInstaller -PtargetPlatform=win