This is a tool to allow synchronized video playback over the network utilizing the mpv video player. It has a server and a client.
The server has a GUI, and controls the video playback of all the connected clients. The server changes the playback speed of the clients to obtain a better synchronization across them.
- Linux
- Xorg
- Java 8
- mpv installed and is able to play videos smoothly
- x86/x64 architecture (Optional: other architectures require compilation of junixsocket)
rsync
,ssh
,termite
(Optional: Used for pushing video files over the network. This requires further setup)
javac
and jar
needs to be installed and in the PATH
.
./build.sh
Videos should be placed in the videos
directory for both the client and the server.
Running server:
./start_server.sh [listen port]
Running client:
./start_client.sh [server address] [server port]
Notes:
- For the current setup, the audio will only be played on the server. This behaviour can be changed by modifying the arguments passed to mpv in
VideoSyncServer.java
andVideoSyncClient.java
. - The
scripts
directory contain some scripts that can be called within the server GUI. They need to be manually customized for your setup. For all the scripts, the first argument passed in is the IP address of the client.
- Better build system
- Easier setup process
- Integrated file pushing
- Encrypted connections
- Better synchronization for connections with >500ms ping