Santhosh's Final Project Video - cu-ecen-aeld/final-project-ajsanthosh14 GitHub Wiki
Overview
This page provides an overview of Santhosh's contribution to the AESD Final Project - BeagleBone Black Broadcaster.
This covers the development, compiling, and testing of GStreamer pipelines and applications to stream videos over the network with various protocols.
- Ubuntu virtual machine set up to work as both GStreamer UDP source and sink.
- Built and tested UDP unicast pipelines to stream video-only files to stream on VM and BeagleBone Black.
- Built and tested UDP unicast pipelines to stream audio + video files to stream on VM and BeagleBone Black.
- Built and tested UDP multicast pipelines to stream video-only files to stream on VM.
- Developed GStreamer reverse pipelines to receive and view the videos being broadcasted.
- VLC setup on the client with the support of SDP files and/or open network setup.
- Development of the server application to broadcast video from Beaglebone black.
Video Outline
Santhosh's AESD final project demo
The video demonstrates:
- The overview of GStreamer and workflow of the model.
- Demonstrates the working model with video-only streaming with UDP unicast mode and the reverse GStreamer pipeline with OpenGL to view the stream.
- Demonstrates the working model with audio+video streaming with UDP unicast mode and the VLC with an open network stream setup to view the stream.
- Demonstrates the working model of the GStreamer server application to stream a video over UDP and VLC on the client end to view the stream.
- Introduction to Real-Time Message Protocol
- Overview of YouTube live streaming engine.
- GStreamer RTMP pipeline to stream audio+video file to YouTube live streaming server from BeagleBone Black.
Challenges
- Understand the working of the GStreamer pipeline's elements and their properties.
- Sending two different queues of encoded video and audio content of a video file, was resulting in video and audio syncing at the client end.
- Demuxing the video and audio to two different queues and phrasing those with GStreamer elements and muxing them back to send it over the network in one queue.
- Even though the built pipelines were able to run successfully on the virtual machine, the same were failing on the hardware.
- GStreamer reverse pipelines were unable to parse the audio+video streams because of filtering issues at the client reverse pipeline setup.
- Several GStreamer pipelines elements were not working as expected as they were in the virtual machine.
Lessons Learnt
The things I learned from this project are as follows:
- I learned about the working model of the GStreamer multimedia framework.
- Experimenting with various components required to build GStreamer pipelines, I understood the importance of each element and its properties associated to support the proper working of the pipelines.
- The pipelines which were working on the Virtual Machine were not giving the same result when we ported it to the BeagleBone Black. Then we realized the hardware restrictions and their capability to encode different elements simultaneously was resulting in erroneous linking issues because of latency in encoding and muxing them together. So we had to modify the pipeline in consideration of the hardware capabilities later.
- Leant about video and audio parsing and different types of encoding techniques required for different modes of transfers.
- Leant the differences between unicast and multicast broadcasting and their applications in use.
- Learnt about online video streaming engines/server and their setup to source the stream using RTMP protocol.
- With the development of the GStreamer server application I learned more about the pipeline construction and linking process by doing it manually to start and stop the stream.
- Gained knowledge with setting up a VLC media player to view the online streams using different protocols and in different modes like with Open Network Streaming and/or with the support of an SDP file.