team-synackd / progressive-streaming Goto Github PK
View Code? Open in Web Editor NEWA simple progressive streaming application uses TCP socket as tranport and build with ffmpeg on top of a simple OpenGL player.
A simple progressive streaming application uses TCP socket as tranport and build with ffmpeg on top of a simple OpenGL player.
Instead of directly downloading the video entirely over TCP, we can try via an HTTP request and response pair.
A simple approach can be:
This is just my view on how this could be designed, feel free to add your perspective into the context :).
Hi,
Currently, this repo contains code which does a basic implementation of progressive streaming, which in a nutshell means that we retrieve the entire video file send it through a TCP connection to the requesting peer. Which is, of course, a redundant mechanism to follow as far as streaming is concerned as this process is subjected to stall and buffering events in case of congestion effects.
Hence it is vital to us to improve this scenario with additional features implementation that could be done which could actually get us better performance and ease of usage.
Further note, I currently, only intend to implement this project for purely research purpose where users of this project could plug and play their implementation with our code.
Both the network and video side of things could be designed as different engines which is used to drive the core principles of this project implementation. Below you can find the detailed implementation design suggestion which I would like to make:
This is just the initial plans which I would like to put forward. We could further discuss the design of the whole project within this issue.
Currently, the main player window is just a static window which basically just plays out the video frames. It should be convenient if the window could be resizable by the user on runtime with a few manageable buttons to close etc.
Currently, there exists a good enough logging base that can be built upon. We should play smart on how the logging should occur, devise some command-line arguments to show whether we need verbose or basic logging, write logs to a file and much more.
The readme could contain details about:
The current makefile is messy. There is a correct usage of Autotools to process the C code and objects. We should integrate it as such.
Currently, the player waits for the TCP module to download and fill it's receiving buffer to be completely filled before the buffer is given out to the player. This isn't an ideal workflow.
What I would suggest is, once the buffer is filled up to a threshold, the buffer should be passed on to the player for playback. Though, this will let us encounter, buffering. That is something else which we need to focus on as well.
cc main_window.cpp decoder.cpp -lstdc++ -lavcodec -lavformat -lavutil -lswresample -lswscale -lglfw -lGL -o bin/player
/usr/bin/ld: cannot open output file bin/player: No such file or directory
collect2: error: ld returned 1 exit status
If bin/ directory doesn't exist, make sure it is created before the compilation process.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.