Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
howto:3rdparty_ingest [2020/09/03 19:45] ischluffhowto:3rdparty_ingest [2021/12/19 00:55] – [OBS-studio example] derchris
Line 20: Line 20:
  * Video-Streams:  * Video-Streams:
    * H.264**\*\***, 1920x1080, 25 fps    * H.264**\*\***, 1920x1080, 25 fps
 +   * For detailed recommendations see bottom of the page
  * Audio-Streams:  * Audio-Streams:
    * (atleast 1, up to 3)    * (atleast 1, up to 3)
Line 52: Line 53:
  * Video-Streams:  * Video-Streams:
    * H.264**\*\***, 1920x1080, 25 fps    * H.264**\*\***, 1920x1080, 25 fps
 +   * For detailed recommendations see bottom of the page
  * Audio-Streams:  * Audio-Streams:
-   * AAC LC, Stereo, 48KHz, 192KBit/s+   * 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 example ===
Line 85: Line 96:
           * Rate-Control: VBR (if selectable)           * Rate-Control: VBR (if selectable)
           * Bitrate: 4000 Kbps           * Bitrate: 4000 Kbps
-          * Keyframe Interval: seconds+          * Keyframe Interval: seconds
     * Video     * Video
       * Base (Canvas) Resolution: 1920x1080       * Base (Canvas) Resolution: 1920x1080
Line 91: Line 102:
       * Integer FPS Value: 25       * Integer FPS Value: 25
  
-==== **Required H.264 encoder settings ==== +=== How to test === 
-The stream needs to adhere to a certain GOP-Size/Keyframe Interval to work properly with the DASH-/HLS-ChunkerWe can reencode your stream to fix thatbut this degrades quality and requires additional capacity on our part.+You can play back your stream at the same endpoint you pushed to, e.g.: 
 +<code> 
 +mpv rtmp://ingest.c3voc.de/stream/{your_endpoint} 
 +</code> 
 + 
 + 
 +===== 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}` 
 +* Stream-Key: `{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 === 
 +<code> 
 +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} 
 +</code> 
 + 
 +=== How to test === 
 +You can play back your stream at the same endpoint you pushed to, e.g.: 
 +<code> 
 +mpv srt://ingest.c3voc.de:1337?streamid=play/{your_endpoint} 
 +</code> 
 + 
 + 
 +==== 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 toYou 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: <code>host/upload/yourname/</code> 
 + 
 +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 ====
  
- * GOP-Size (Keyframe Interval): 3s +  * H.264: 
- * Encoding-Mode: VBR (Variable Bitrate) +    * GOP-Size (Keyframe Interval): 3s 
- Maximum Bitrate: 4Mbit/s+    * 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.)
  
  
  
  • howto/3rdparty_ingest.txt
  • Last modified: 2021/12/21 16:38
  • by derchris