Date post: | 28-Nov-2014 |
Category: |
Documents |
Upload: | alexander-stevens |
View: | 317 times |
Download: | 0 times |
Real-Time Transmission of Video Using WLAN
Engineering Thesis Progress Seminar
by Alexander Stevens
----------------------------
Supervisor
Konstanty Bialkowski
Motivation for Project
Need a cost effective way to stream high quality video from experimental UAV's (Unmanned Aerial Vehicles)
What if the UAV travels out of eye sight? Immediate feedback on performance of UAV Computer vision systems are processor
intensive; need video transmission to off-board computer
Previous Work into UAV Traffic Surveillance
Carried out by University of Florida Investigated the use of UAV's instead of CCTV Found it cheaper to use UAV's on microwave
tower infrastructure (TV, Radio, etc) Regulations dictate licensing and bandwidth
Previous Work into UAV Traffic Surveillance
Model relied on high data throughputs Because of this, raw video lacks quality of
compressed video
The Task
Real-time video streaming from portable device Rate control algorithm to adhere to <200ms of lag Optimise stream to keep high frame-rate Control quality of video to acceptable levels
200ms
The Platform
Needs to be portable, low power Needs to be able to encode video in real time High processing speed... Low power?! D: Will need an ARM based platform with Digital
Signal Processors (Hardware Acceleration) PandaBoard vs BeagleBoard-xM
Pandaboard by Texas Instruments
BeagleBoard-xM
30 FPS Encode/Decode
802.11 b/g/n
Pandaboard (<5W Power)
BeagleBoard (~2W Power)
If optimisations don't kick in, need extra processing power!
720p Video 30 FPS Encode/Decode
The Operating System
Since platforms are both ARM based, need ARM based Operating System
Linux vs Android (Essentially, C/C++ vs Java) Linux wins for PandaBoard development
Choice of compiler Pre-built libraries (x264, ioctl, libv4l2, etc)
Therefore use Ubuntu, as headless images are provided (and supported by Texas Instruments)
Capture
Need library to interface with camera Video4Linux2 (V4L2) built into Linux Kernel libV4L2 as an abstraction layer to V4L2
Enables us to use essentially any camera Open source!
V4L2 not cross platform, but that's okay
Linux KernelLogitech
Video4Linux2Camera Driver
libV4L2
Camera Program/Encoder
The Encoder
Need an encoder with adequate compression Has to be open source or have libraries, so we can
freely modify the code Google's VP8 and H.264 (x264), both open source VP8 has no hardware acceleration on the
Pandaboard, where as H.264 does Therefore, the x264 open source implementation
of H.264 is most appropriate encoder
The Encoder – H.264
Achieves compression through different frame types; I, P and B-frames
Intra-Frames: Minimal compression, Quality Predictive-Frames: Medium compression Bi-directional-Frames: Maximum compression
Transmission
Need library to interface with encoder and packet into a standardised protocol
RTCP (Real-time Transport Control Protocol) ideal for conference calls and in this case, transmission of portable video
RTCP gives feedback on transmission stats Need these stats to determine dropped
frames (need to know when intra-frame dropped), and to have feedback control
UAV Application
Transmission continued...
RTCP standardised within many media players (VLC, MPlayer, etc)
Live555 establishes RTCP connections while interfacing on the back end of an encoder
Open source! Can freely modify code
libV4L2
x264 Encoder
Camera
Live555
Control Algorithm Client
RTCP Compliant PlayerWireless Wireless
Video
Stats
Screen
RTCP
Current Progress
First Step Capturing images from Camera (V4L2) Setting images up into a Buffer (mmap) Save images (for experimentations sake) Demonstration
Second Step – Currently at (almost finished) Writing x264 calls to pull buffered images Encode buffered images into video frames Save encoded stream (experimentation) Demonstration
Future Progress
Third Step – About to Begin Write H.264 interface for Live555, so Live555
understands how to packet H.264 stream Connect encoded stream to Live555 Experiment with wireless connection to VLC
Fourth Step Write control algorithm that reads data from
RTCP statistics and controls encode rates (kb/s, frame-rate, resolution, etc)
Optimise program and control
Future Potential
Potential for extensions to software... Examples:
Bunny hopping data over wireless routers Pan and Zoom functionality (for camera) Control of UAV remotely Open the video stream for computer vision
projects
Questions?
http://code.launchpad.net/~alex-stevens/+junk/spyPanda