Drones & UAVs – Wireless HD Video Streaming

Drones and UAVs and SBCs

Nearly 7 million drones will be shipped by 2020 according to FAA estimates. UAVs require communication to a ground station over a wireless link providing information such as HD video and telemetry data.

Gateworks has Single Board Computers that are Drone & UAV Ready such as the Ventana GW5510 shown below:

Important Features:

  • HDMI Input for video cameras
  • High Power Mini-PCIe Slot for wireless radio
  • Communication busses for telemetry data
  • Industrial Temperature Ratings from -40 to +85C
  • Made in the USA
  • GStreamer Software Framework for video transmission

For videos and more about Gateworks SBCs for Drones and UAVS, visit the link below:

Gateworks Drone & UAV Showcase

Customizing Android & Yocto Splash Screens

lcd_gateworks_logo

Customizing Android & Yocto Splash Screens

Have you ever wanted to replace that ugly default logo or animation that is shown when your system boots up? Now you can with custom splash screens!

What is a Splash Screen?

  • The logo or image displayed on screen during the boot process of an embedded system

3 Splash Screens can be Customized:

  • Bootloader
  • Linux Kernel
  • Operating System

Why are Splash Screens Important?

  • Splash screen are displayed immediately conveying proper operation and responsiveness to the user
  • Replacing the splash screen logo with a company logo will effectively brand a product for customer deployment

Read more on the Gateworks Software Wiki:
Customizing the Splash Screen

LCD Touchscreens for Gateworks SBCs

lcd

Gateworks offers a LVDS connector on the Ventana Family of Single Board Computers to allow the connection of a LCD touchscreen display. LCD Displays are a great fit for control panel applications as well as Digital Signage. The displays work with Android, OpenEmbedded Yocto, Ubuntu and more.

The LVDS connector has all the necessary pins for the display signaling as well as I2C for touchscreen control.

Gateworks offers a 7-inch LCD Display with a PCAP Touchscreen. This display is great to get started in development as well as for production projects.

All of the cables, adapters and LCD can be found right on the Gateworks Online Shop so getting up and running is very seamless.

Please review the following links for more information:

Adaptive Bitrate Streaming using GStreamer

Gateworks’ SBCs are widely used for streaming audio and video over the network via Ethernet, 802.11 WiFi, or 4G LTE Cellular. Networks are dynamic, whether from network load, RF interference or signal strength thus throughput will vary requiring intelligent and flexible applications to adjust as necessary.

Adaptive Bitrate Streaming is the concept of adjusting the quality of video and/or audio depending on the quality of the network connection or server load. This type of technology is widely implemented throughout technology today, evident in streaming services like Netflix and YouTube.

​Gateworks created an example GStreamer application named gst-variable-rtsp-server. This application includes a mechanism for auto-adjusting the encoding bitrate depending on the number of clients connected to the server.

gst-variable-rtsp-server can change either the quant-param or the bitrate parameters of the imxvpuenc_h264 encoder. The quant-param will only be used if the pipeline is set to Variable Bitrate mode (VBR). This can be accomplished by passing in the -b 0 flag to the program. Otherwise, gst-variable-rtsp-server will change the bitrate of the stream.

The algorithm used to change both bitrate and quant-param are based on the --steps input (defaulted to 5). For example, if using the default steps value of 5, if the min bitrate was 500 and max bitrate was 2000, it would take 5 clients to adjust from the highest to the lowest quality.

In the below example, the rtsp server was configured to degrade from 10mbps to 400kbps bitrate within 5 steps. Please see below for our results.

gst-variable-rtsp-server --steps=5 --max-bitrate=10000 --min-bitrate=400 --src-element=imxv4l2videosrc --video-in=/dev/video0

quality_changes

For higher resolution images of the above, please view here (10Mbps), here (2.8Mbps), and here (400Kbps).

For more information and sample GStreamer pipelines, please visit our Software Wiki Pages:

GStreamer Compositing for Streaming H.264 Video

Gateworks recently featured a blog in which 8 video cameras were connected to a Gateworks Ventana SBC and then displayed on a HDMI monitor. This is useful for localized applications. For remote applications there is another solution.

Remote applications require streaming the multiple video streams over the network (Ethernet or WiFi). For bandwidth efficiency, all camera inputs can be joined together into a single frame and then transmitted across the network.

streamingdiagram3

To join all the streams into a single frame, a software element of GStreamer called a compositor is used. Older versions of the compositor relied on the CPU and caused choppy video. Gateworks recently started using gstreamer-imx which contains a hardware accelerated compositor which is far superior. With this compositor, each stream can be positioned on the frame and then linked to a RTSP stream in the H.264 format.

An example is shown with two Gateworks Ventana SBCs that are on the same network.

Start the following pipeline on the SBC with the cameras connected:

gst-variable-rtsp-server -u \
 "imxv4l2videosrc device=/dev/video2 queue-size=55 ! queue2 ! c.sink_0 \
 imxv4l2videosrc device=/dev/video3 queue-size=55 ! queue2 ! c.sink_1 \
 imxv4l2videosrc device=/dev/video4 queue-size=55 ! queue2 ! c.sink_2 \
 imxv4l2videosrc device=/dev/video5 queue-size=55 ! queue2 ! c.sink_3 \
 imxv4l2videosrc device=/dev/video6 queue-size=55 ! queue2 ! c.sink_4 \
 imxv4l2videosrc device=/dev/video7 queue-size=55 ! queue2 ! c.sink_5 \
 imxv4l2videosrc device=/dev/video8 queue-size=55 ! queue2 ! c.sink_6 \
 imxv4l2videosrc device=/dev/video9 queue-size=55 ! queue2 ! c.sink_7 \
 imxg2dcompositor name=c background-color=0xffffff \
 sink_0::xpos=0 sink_0::ypos=0 sink_0::width=320 sink_0::height=360 sink_0::fill_color=0x00000000 \
 sink_1::xpos=320 sink_1::ypos=0 sink_1::width=320 sink_1::height=360 sink_1::fill_color=0x00000000 \
 sink_2::xpos=640 sink_2::ypos=0 sink_2::width=320 sink_2::height=360 sink_2::fill_color=0x00000000 \
 sink_3::xpos=960 sink_3::ypos=0 sink_3::width=320 sink_3::height=360 sink_3::fill_color=0x00000000 \
 sink_4::xpos=0 sink_4::ypos=360 sink_4::width=320 sink_4::height=360 sink_4::fill_color=0x00000000 \
 sink_5::xpos=320 sink_5::ypos=360 sink_5::width=320 sink_5::height=360 sink_5::fill_color=0x00000000 \
 sink_6::xpos=640 sink_6::ypos=360 sink_6::width=320 sink_6::height=360 sink_6::fill_color=0x00000000 \
 sink_7::xpos=960 sink_7::ypos=360 sink_7::width=320 sink_7::height=360 sink_7::fill_color=0x00000000 \
 ! queue2 ! video/x-raw, width=1280, height=720 ! imxipuvideotransform \
 ! imxvpuenc_h264 bitrate=20000 ! rtph264pay name=pay0 pt=96"

Then, on the receiving board that is connected to an HDMI display, start the following pipeline with the actual IP address (example IP below) of the board with the cameras:

gst-launch-1.0 rtspsrc location=rtsp://172.24.10.210:9099/stream latency=100 ! \
queue2 ! decodebin ! autovideosink

For more information and code examples, please visit the related Gateworks Software Wiki links below:

 

Capturing 8 Video Inputs on Gateworks Ventana SBCs

Gateworks would like to introduce software support for the AVC8000nano Mini-PCIe card on the Ventana Single Board Computers.

final_screen_camerasFigure 1: Screen capture of 8 analog cameras displayed on a monitor using the Gateworks Ventana SBC

Many applications, such as surveillance, require multiple analog video inputs from cameras for monitoring. These cameras can then be displayed on an HDMI monitor or streamed over the network.

final_camerasonboardFigure 2: Eight analog video cameras mounted in a circular fashion for a panoramic capture

Gateworks has added driver support for the AVC8000nano in it’s Yocto Linux board support package. This driver support will reveal 8 video interfaces in Linux, such as /dev/video0, /dev/video1, etc. These video interfaces can then be accessed using GStreamer.

final_pictureofcardFigure 3: The AVC8000nano installed on a Gateworks Ventana SBC with 8 analog cameras connected 

The OpenCV software library could be used to stitch the different inputs together to create a seamless panorama.

For more information and example GStreamer pipelines on how to use this card, please visit our Software Wiki Page:

AVC8000nano Software Wiki Page

Future blog posts will cover streaming multiple camera inputs as well as adaptive bitrate streaming! Please subscribe to the Gateworks blog to the right!

 

 

H.264 Video Streaming over Network

The Gateworks Ventana Family of Single Board Computers is well suited for multimedia applications. The Freescale i.MX6 processor has hardware encoding and decoding making for very little processor overhead. To take advantage of this hardware decoding it is important to always use the ‘vpuenc’ and ‘vpudec’ gstreamer pipeline elements.

  • vpuenc – VPU (Video Processing Unit) encoder
  • vpudec – VPU (Video Processing Unit) decoder

It is also important to use a high compression video format such as H.264 which uses significantly less network bandwidth while retaining good quality. To use this, we encode by using the following pipeline element:

  • vpuenc codec=avc

When streaming over the network, TCP is a reliable protocol but often too stringent for video applications. UDP is often preferred so that even if packets are lost, the stream will continue without waiting for the lost packet. To use UDP, we use the udpsrc and udpsink pipeline elements.

Here is an example pipeline to stream live video over the network using two Ventana Single Board Computers. Be sure the two single board computers are on the same network and can ping each other. Both should also be running OpenEmbedded Yocto operating system. An analog video camera is connected to the video input on a Ventana board. Another Ventana board is connected to a HDMI monitor.

Start the server board pipeline first: (board with HDMI monitor connected)

root@ventana:~# gst-launch udpsrc port=9001 ! h264parse ! queue max-size-time=0 max-size-buffers=0 ! vpudec low-latency=true frame-plus=1 framedrop=false ! mfw_v4lsink sync=false async=false

Then start the client pipeline (board with analog video camera connected)

root@ventana:~# gst-launch tvsrc device=/dev/video0 ! vpuenc codec=avc ! udpsink host=192.168.1.2 port=9001 sync=false async=false

For more information, please view our GStreamer Software Wiki here: http://trac.gateworks.com/wiki/Yocto/gstreamer

Video & Audio On Gateworks Ventana Single Board Computers with Linux GStreamer

The Ventana Family of Single Board Computers from Gateworks offers a multitude of video and audio interfaces to meet the demands of new multimedia embedded systems.  The primary method of accessing these interfaces is through software by the name of GStreamer.  GStreamer is an open-source library that makes the handling of multimedia data more simple using pipelines of elements that operate on multimedia data buffers.  GStreamer can be used directly on the command line of a Ventana Single Board computer for quick prototyping and development with the gst-launch test application.  For example, to play a video file stored on a USB flash drive connected to a Gateworks single board computer, the following GStreamer command would be used:

gst-launch filesrc location=/media/sda1/big_buck_bunny_720p_surround.avi ! decodebin2 ! mfw_v4lsink device=/dev/video16

Using GStreamer, an application can benefit from a large library of OpenSource elements that use well known algorithms to operate on multimedia data, including the elements provided by the fsl-gstreamer package that take advantage of the i.MX6 hardware acceleration.  Customers can create custom applications that utilize GStreamer (above and beyond what gst-launch can provide) through the Gateworks SDK. GStreamer is a very powerful tool with thousands of options and plugins.  Gateworks has created a wiki page that provides some simple examples to make getting started quickly easier on the Ventana Single Board Computers.  Follow this link to the wiki for more examples and tutorials!

Gateworks GStreamer Software Wiki Page