Essex logo VASE logo

Live 4k Ultra-High Definition Graduation


Femi & Louis with the 4K Ultra-HD equipment used for the 2014 graduation

Louis Clift and Femi Adeyemi-Ejeye, two PhD students in Computer Science and Electronic Engineering, were responsible for a world-first in deploying an online 4K Ultra-HD live stream of the University of Essex Graduation during 15th–18th July 2014. All 11 ceremonies were streamed in 4K and were accessible worldwide. The 4K video stream was published at 8 Mbps and 14 Mbps, both below the UK’s national average broadband speed of 14.7 Mbps (Ofcom), making it the lowest ever data rate for Ultra-HD content streaming. The 4K feed proved to be popular with hundreds of viewers from over 33 counties including the UK, Cyprus, Bulgaria, Germany, Australia and many others; thus emphasising the global presence of the University of Essex.

Graduation was used as a real-world technical demonstration of live online Ultra-HD streaming. The workflow is based-on open-source packages from ingest through to display. BMDTools (Based on the Blackmagic SDK) is used to ingest a live Ultra-HD video stream from a remote camera. The video stream is the piped into a LibAV script which encodes the video stream using the H.264/AVC and AAC encoders produced by VideoLAN. The encoder was optimized by adjusting parameters such as group of picture length; which directly affects the rate-control algorithm, macro block sizes, and entropy encoding amongst others.

The Ultra-HD streaming was based around the RTMP video streaming protocols and was supported by an Adobe Media Server instance which handles the live broadcasting out to the world. RTMP works on TCP connections, thus enabling the protocol to monitor bandwidth and maintain persistent connections. The advantage to using RTMP is that viewers are able to watch via open-source flash-based player supported by Adobe Systems.

The integration of these components enables broadcasters to produce a dynamic 4K Ultra-HD online live event. The dynamic nature of this approach allows content provides to online 4K content that can be viewed on a spectrum of broadband speeds whilst still providing a high quality viewing experience.

This successful project was supported morally and financially by Louis and Femi’s supervisors, Dr Adrian F Clark and Prof Stuart D Walker. The School of Computer Science and Electronic Engineering funded the 4k UHD camera. Last, but not least, the University’s Information System Services teams provided the essential infrastructure that made the worldwide live streaming possible. A paper describing the techniques used in this approach appeared in a publication at the International Broadcasting Convention (IBC 2014).

Configuration

Here, we describe all of the settings, platforms and commands used, as well as network topology where applicable.

Encoder/Transcoder Settings

The encoder is based on the fork of FFMPEG provided by LibAV. All commands are from the Ubuntu servers but should work fine on the Windows binaries of avconv too.

Real-time Transcoder Parameters

The commands below are used on the current server configuration. The localhost here is unix3 (isslx047). This is a 64-core server and can handle multiple multi-core transcoders. Unix3 is connected via the machine-room network to CSEE-4KTXR (interface b) and therefore the streaming points to csee-4ktxrb. To view the streams a client would be accessing the csee-4ktxra interface.

The other point to note about the following commands is that the NGIN-X RTMP server is listening on port 1945 on Unix3. This is a non-standard RTMP port. The reason for this is to allow testing of two RTMP servers. The 1935 port is mapped to an AMS install on Unix3 and should not be used.

RTMP input to RTMP output

Video Bitrate Transcoder Command
8 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 8M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-8
10 Mbps avconv -i "rtmp://localhost:1945/stream/inbound"
-vcodec libx264 -preset superfast -b:v 10M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-10
12 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 12M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-12
14 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 14M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-14
16 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 16M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-16
18 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 18M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-18
20 Mbps (Pass-through) avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec copy -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/live/4k-20

RTMP input to HDS stream

Video Bitrate Transcoder Command
8 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 8M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-8?adbe-live-event=uhdlive
10 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 10M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-10?adbe-live-event=uhdlive
12 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 12M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-12?adbe-live-event=uhdlive
14 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 14M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-14?adbe-live-event=uhdlive
16 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 16M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-16?adbe-live-event=uhdlive
18 Mbps avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec libx264 -preset superfast -b:v 18M -g 40 -bf 0 -r 25 -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-18?adbe-live-event=uhdlive
20 Mbps (Pass-through) avconv -i "rtmp://localhost:1945/stream/inbound" -vcodec copy -acodec copy -strict experimental -f flv rtmp://csee-4ktxrb/livepkgr/4k-20?adbe-live-event=uhdlive

Server-Side Dynamic Profiles

(HDS) HTTP Dynamic Streaming Manifest

The manifest tells the player which streams are avliable and at what rate.

⟨file xml live4k.f4m⟩
⟨?xml version="1.0" enconding="utf-8?⟩
⟨!-- UHD Adaptive live streaming system --⟩
⟨manifest xmlns="http://ns.adobe.com/f4m/2.0"⟩
        ⟨baseURL⟩http://csee-4ktxra.essex.ac.uk/hds-live/livepkgr/_definst_/uhdlive/⟨/baseURL⟩
        ⟨media href="4k-8.f4m"  bitrate="8000" /⟩
        ⟨media href="4k-10.f4m" bitrate="10000"/⟩
        ⟨media href="4k-12.f4m" bitrate="12000"/⟩
        ⟨media href="4k-14.f4m" bitrate="14000"/⟩
        ⟨media href="4k-16.f4m" bitrate="16000"/⟩
        ⟨media href="4k-18.f4m" bitrate="18000"/⟩
        ⟨media href="4k-20.f4m" bitrate="20000"/⟩
⟨/manifest⟩
⟨/file⟩

(HLS) Apple HTTP Live Streaming Manifest

This file enables Apple iOS and TS-based devices to watch the dynamic feed.

⟨file txt live4k.m3u8⟩
#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=8000000 
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-8.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10000000 
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-10.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=12000000 
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-12.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=14000000
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-14.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=16000000 
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-16.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=18000000
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-18.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=20000000
http://csee-4ktxra.essex.ac.uk/hls-live/livepkgr/_definst_/uhdlive/4k-20.m3u8
⟨/file⟩