GithubHelp home page GithubHelp logo

coursal / ffmpeg-streaming-video Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 1.0 883 KB

A 3-part Java application of video streaming and management using the FFMPEG tool and wrapper.

License: GNU General Public License v3.0

Java 100.00%
ffmpeg ffmpeg-wrapper streaming stream stream-processing streaming-video java swing swing-gui awt

ffmpeg-streaming-video's Introduction

FFMPEG-Streaming-Video

A 3-part Java application of video streaming and management using the FFMPEG tool and wrapper.

In more detail, the application is divided into 3 apps:

  • Streaming Director, which given every video file in the raw_videos directory, generates different video editions with different formats (avi, mp4, mkv) and different bitrates (200Kbps, 500Kbps, 1Mbps, 3Mbps) each and stores them in the videos directory.
  • Streaming Server, which is responsible for the management and streaming of videos that are available based on the client's specifications.
  • Streaming Client, which is responsible for the communication with the server and playing the video streamed video that was selected by the end user.

Project Description

Streaming Director

Execution Steps

  • Scanning the /raw_videos directory for videos
  • Generating 12 different files (with differences in the file format and/or the bitrate) for each video (using the ffmpeg-cli-wrapper)
  • Saving the generated videos to the /videos directory
  • Deleting all videos from the /raw_videos directory

App GUI Example

Streaming Server

Execution Steps

  • Waiting and receiving a client request (that contains the selected bitrate and file format by the end user)
  • Creating a list from the videos in the /videos directory that match the info given by the request (every video with this particular format and smaller or equal bitrate to the one chosen)
  • Sending this list of video names to the client
  • Receiving the response of the client (that contains the selected video from the list, along with a given network protocol of TCP, UDP, RTP/UDP)
  • Streaming the selected video through the given protocol to the client (by creating a ffmpeg.exe process in the local system)

App GUI Example

Streaming Client

Execution Steps

  • Sending the initial request to the server (that contains the selected bitrate and file format by the end user)
  • Receiving the server's response with the list of filenames for the videos that meet the criteria of the user
  • Sending the final request to the server with the stream specifications (that contains the selected video from the list, along with a given network protocol of TCP, UDP, RTP/UDP)
  • Receiving the selected video that is being streamed and presenting it to the end-user (by creating a ffplay.exe process in the local system)

App GUI Example

Stream Example Snapshot

Project Info/Limitations (as of now)

  • Every app/part of the project is written in a way that its implementation and operation is strictly contained to one class/file.
  • The project assumes that you have FFMPEG installed under /usr/bin/ in Linux.
  • There is no check whether the files inside /raw_videos are actual videos or not.
  • For the RTP/UDP network protocol, the video.sdp file with the essential stream characteristics is located locally inside the project.
  • The video stream might seem like "freezing" after a few tests. This is not the project's fault. FFMPEG is really not that optimised for this kind of tasks.

ffmpeg-streaming-video's People

Contributors

coursal avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

billpol1997

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.