HowTo: Third-Party Stream Ingest

You want your live content to be streamed over the C3VOC infrastructure during CCCongress or another large event? Here's how.

(Recordings have to be dealt with separately)

Get in Touch

To make sure your stream works on day 1 of the event we need to know of it beforehand so we can:

configure your ingest endpoint

provide appropriate transcoding-capacity

adapt the streaming website

When we have provided you with an ingest endpoint name to use you need to configure your encoder for one of the formats below.

SRT Ingest

SRT is our preferred method of ingest, because it performs well even over flaky networks.Please note however that SRT won't prevent you from saturating your uplink, so choose a streaming bitrate appropriate for your ISPs bandwidth.

Stream-Format

Transport: SRT

Container: MPEG-TS

Video-Streams:

H.264, 1920×1080, 25 fps

For detailed recommendations see “Recommended encoder settings” at the bottom of the page

Audio-Streams:

(atleast 1, up to 3)

AAC LC, Stereo, 48KHz, 192kbit/s

URLs

Hosts:

ingest.c3voc.de

ingest2.c3voc.de

Publish:

srt://{host}:1337?streamid=publish/{your_endpoint}/{auth_key}

Play:

srt://{host}:1337?streamid=play/{your_endpoint}/{auth_key}

OBS

Same settings as with RTMP, but use the following in Settings → Stream:

Service: Custom…

Server: srt://{host}:1337?streamid=publish/{your_endpoint}/{auth_key}

Audio: Use this OBS Fork (compiled version) to be able to stream multiple audio Streams (for translations).

ffmpeg example

<code>ffmpeg -y -re -nostdin -hidebanner \ -threadqueuesize 512 -i … \ -c:v libx264 -preset:v veryfast -profile:v main -pixfmt yuv420p -flags +cgop \

threads:v 0 -aspect 16:9 \

\

r:v:0 25 -g:v:0 75 -crf:v:0 23 -maxrate:v:0 4M -bufsize:v:0 12M \

map 0:v:0 \

\

c:a aac -b:a 192k -ar:a 48000 -ac:a 2 \

map 0:a:0 \

\

f mpegts \

srt://ingest.c3voc.de:1337?streamid=publish/{yourendpoint}/{authkey}</code>

How to test

You can play back your stream at the same endpoint you pushed to, e.g.:

mpv srt://ingest.c3voc.de:1337?streamid=play/{your_endpoint}

The transcoded streams should be available at

http://cdn.c3voc.de/hls/yourname/native_hd.m3u8

RTMP Ingest

RTMP is the most widely used format for origin streams and is supported by many hardware/software-encoders. It is however limited to H264 video and Stereo MP3/AAC audio.

Stream-Format

Transport: RTMP

Container: FLV

Video-Streams:

H.264, 1920×1080, 25 fps

For detailed recommendations see “Recommended encoder settings” at the bottom of the page

Audio-Streams:

AAC LC, Stereo, 48KHz, 192kbit/s

URLs

Hosts:

ingest.c3voc.de

ingest2.c3voc.de

Publish/Play:

rtmp://{host}/stream/{your_endpoint}?auth={key}

Note: Play is currently always possible without auth

ffmpeg example

ffmpeg -y -re -nostdin -hide_banner \
-thread_queue_size 512 -i … \
-c:v libx264 -preset:v veryfast -profile:v main -pix_fmt yuv420p -flags +cgop \
-threads:v 0 -aspect 16:9 \
\
-r:v:0 25 -g:v:0 75 -crf:v:0 23 -maxrate:v:0 4M -bufsize:v:0 12M \
-map 0:v:0 \
\
-c:a aac -b:a 192k -ar 48000 -ac 2 \
-map 0:a:0 \
\
-f flv \
rtmp://ingest.c3voc.de:1935/stream/{your_endpoint}?auth={key}

OBS-studio example

Settings

Stream

Service: Custom

Server: rtmp://ingest.c3voc.de/stream/

Stream Key: {your_endpoint}?auth={key}

Output

Output Mode: Advanced

Streaming

Encoder: Your choice (x264, vaapi, nvenc)

Encoder Settings:

Rate-Control: VBR (if selectable)

Bitrate: 4000 Kbps

Keyframe Interval: 1 seconds

Video

Base (Canvas) Resolution: 1920×1080

Output (Scaled) Resolution: 1920×1080

Integer FPS Value: 25

How to test

You can play back your stream at the same endpoint you pushed to, e.g.:

mpv rtmp://ingest.c3voc.de/stream/{your_endpoint}

Direct Upload

If you have agreed with us on directly uploading muxed stream to our CDN-master we will provide you with HTTP-credentials and a base-URL to upload to. You will have to provide the following formats:

A HLS master playlist at http://baseurl/hls/native_hd.m3u8

Segments must be in MPEG-TS format with .ts file ending

Segments must be inside http://baseurl/hls/

A MPEG-DASH manifest at http://baseurl/dash/manifest.mpd

Segments must be in WebM format with .webm file endings

Segments must be inside http://baseurl/dash/

A 1920×1080 (or full-res) JPEG poster image at http://baseurl/thumbnail/poster.jpeg

Poster images should ideally not exceed 150k in size

The poster image will be shown in the stopped player

A 213×120 JPEG thumbnail at http://baseurl/thumbnail/thumb.jpeg

The thumbnail will be shown in the stream list

The upload path supports GET/PUT/DELETE aswell as directory listing.The baseurl is currently assembled as follows:

host/upload/yourname/

Recommended encoder settings

H.264:

GOP-Size (Keyframe Interval): 3s

Encoding-Mode: VBR (Variable Bitrate)

Max-Bitrate 6Mbit/s (more is possible if your uplink allows it, but please stay below 20Mbit/s. If you want to push even more please ask.)