A system consisted of 3 applications capable of video conversion, streaming and bidirectional communication (server-client model).
- Java 8
- JavaFX framework
- FFmpeg
-
Download and install ffmpeg (https://ffmpeg.org/download.html).
-
Run the .jar files of the applications (download them from Releases).
-
That's it!
To log messages generated by the applications, run the .jar files from a console (java -jar <application-name>.jar
).
- StreamDirector application - converts a video to 3 formats (avi, mp4, mkv) and 4 bitrates (0.2Mbps, 0.5Mbps, 1Mbps, 3Mbps) (a total of 12 outputs).
- StreamingServer application - accesses the videos to be streamed and implements the server logic.
- StreamingClient application - communicates with the server to request a subset of the available videos and to then request the streaming of a specific video.
Click to see it in action
1. Initial flow
(GIF - Duration: 15 seconds)
2. Changing connection speed, video format and streaming protocol
(GIF - Duration: 18 seconds)
- New: Locate the path to ffmpeg's directory on the user's computer automatically, without the user having to declare it in any system variable.
- Server-Client communication is performed using sockets and threads. The server can accept and will respond to multiple different requests from a client. Supports TCP and UDP communication protocols.
- The system can extract information from the title of a video which is of type videoName-bitrate.format (eg The.Invisible.Guest-3.0Mbps.mp4).
- The client receives a list with videos that have a bitrate less or equal with his/her connection speed.
- Built with MVC Architecture Pattern.
University project for the course of Multimedia and Multimedia Communications. It is built to work on windows machines.