howto:3rdparty_ingest

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
howto:3rdparty_ingest [2020/09/03 19:45] ischluffhowto:3rdparty_ingest [2021/12/21 16:38] (current) – [OBS] 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}/{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.1599155113.txt.gz
  • Last modified: 2020/09/03 19:45
  • by ischluff