====== 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 just need to configure your encoder for one of the formats below.
===== Icecast Matroska Ingest =====
This is our preferred format for origin streams, because it supports open codecs and multiple audio/video-channels in a single-stream.
=== Stream-Format ===
* Transport: Icecast
* Container: mkv (Matroska)
* Video-Streams:
* H.264**\*\***, 1920x1080, 25 fps
* For detailed recommendations see bottom of the page
* Audio-Streams:
* (atleast 1, up to 3)
* AAC LC, Stereo, 48KHz, 192KBit/s
=== ffmpeg example ===
ffmpeg -re -y -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 matroska \
-content_type video/webm \
-password {your_password} \
icecast://ingest.c3voc.de:8000/{your_endpoint}
===== 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**\*\***, 1920x1080, 25 fps
* For detailed recommendations see 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: 1920x1080
* Output (Scaled) Resolution: 1920x1080
* 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}
===== SRT Ingest =====
SRT is a relatively new streaming protocol featuring ARQ, which can theoretically support a wide range of container formats. Currently however only MPEG-TS is widely used.
=== Stream-Format ===
* Transport: SRT
* Container: MPEG-TS
* Video-Streams:
* H.264**\*\***, 1920x1080, 25 fps
* For detailed recommendations see 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 [[howto:3rdparty_ingest#obs-studio_example|RTMP]], but use the following in **Settings -> Stream**:
* Service: `Custom…`
* Server: `srt://{host}:1337?streamid=publish/{your_endpoint}/{auth_key}`
**Audio:** Use [[https://github.com/lukas2511/obs-studio|this OBS Fork]] ([[https://cloud.cccv.de/s/bczAqcWHXX8EkL6|compiled version]]) to be able to stream multiple audio Streams (for translations).
=== 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:a 48000 -ac:a 2 \
-map 0:a:0 \
\
-f mpegts \
srt://ingest.c3voc.de:1337?streamid=publish/{your_endpoint}/{auth_key}
=== 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}
==== 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 1920x1080 (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 213x120 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/
You can test your uploaded content at:
* http://cdn.c3voc.de/dash/yourname/manifest.mpd
* http://cdn.c3voc.de/hls/yourname/native_hd.m3u8
* http://cdn.c3voc.de/thumbnail/yourname/poster.jpeg
* http://cdn.c3voc.de/thumbnail/yourname/thumb.jpeg
==== 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.)