Decode, Decompress, and HACK!
In-line with nearly every technology-oriented organization on the market, Bitmovin allows our creative minds to flow by breaking away from our standard day-to-day tasks with a quarterly Hackathon. Q1 of the new year was no different! February 2020 was an exciting experience that brightened our moods in the wake of harsh deadlines and looming global concern. This hackathon yielded a few fun projects, like a Slackbot that notifies our offices that it’s time for beer, the gamification of video encoding, a local travel guide, and yet another project that’s up for a patent! Check out what some of our team worked on for 72hrs this time:
Hackathon Project #1: Segment Quality Game – gamifying your encode
Collaborator: Armin Trattnig
Goal: Gamify setting different encoder settings for a short video clip and receive scores for quality, speed, and bitrate. The user can play around with settings and can see their direct impact.
Summary of Experience:
I used Python3 and Tkinter for a very simple UI. OpenCV was used to display and play the input and output video. The output video was encoded with FFmpeg using x265, which was configured with the settings, set by the user. The user can almost immediately see how well he did for quality, speed, and bitrate. There is a leaderboard with the best encoding attempts based on the most popular objective quality metrics on the market.
There are lots of settings for an encoder to consider and one can easily lose track of them all. For the first version, only a few selected settings were implemented.
Next steps? (bulleted list)
- Add more encoding settings
- Compare input/output video side-by-side
- Add nice plots for quality per frame and bd-rate chart
- Online ranking
- Better weights for the combined ranking
- Beautify GUI
- Different input video sequences
Hackathon Project #2: DASH on iOS
Collaborators: Kenny Krainer, Wolfram Hofmeister, Mukul Kamar
Goal: To achieve native DASH playback on iOS
Short Summary of Experience (2 – 4 sentences):
Safari on iOS does not have MSE(Media Source Extension) but supports native HLS playback. As we use MSE in our player to playback DASH source there is no support for DASH on iOS. For our project, we used ServiceWorker to intercept DASH manifest calls and map them to an HLS playlist so that the player can play it natively.
There is no DOMParser in ServiceWorker and we use DOMParser to parse DASH manifest. So had to create a message tunnel from worker to the main thread and parse DASH manifest on the main side.
Next Steps? (bulleted list)
- Support Live DASH properly.
- Support smooth streaming
Hackathon Project #3: Raspberry Pi
Collaborator: Andrea Fassina
Goal: Stream video from GoPro to WWW
Short Summary of Experience:
Use an action cam connected to a raspberry pi, set up an AWS RTMP Nginx instance which can accept the stream from the Raspberry Pi then use Bitmovin products to encode the stream and have it play on a page hosted on S3
Problems faced? Holding a steady connection from Gopro Access point to Raspberry Pi4 added wifi interface
Next Steps? (bulleted list)
- Set up network interfaces, routes and DHCP to hold a steady connection to Pi
- Stream video from FFMPEG on Pi to AWS EC2 Nginx instance, RTMP server
- From Nginx RTMP instance stream to Bitmovin live encoder
- From Bitmovin encoder playback stream with Bitmovin video player
We had many other excellent projects in this quarter’s hackathon, so great in fact, they are withheld from our blog due to patent applications! We wish the best of luck to our Bitmovers and thank all of the participants! Interested in joining our team? We’re hiring all around the world and for almost all of our teams! Check out our career page to find the right position for you!
Did you like our post? Check out this other great content!