====== 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.)