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
en:services:mobile_working:live_streaming:start [2021/05/21 23:22]
mhellka [Troubleshooting]
en:services:mobile_working:live_streaming:start [2021/07/08 22:00] (current)
mhellka [Table]
Line 2: Line 2:
 ====== Live-Streaming ====== ====== Live-Streaming ======
  
-The GWDG live-streaming infrastructure makes it possible to broadcast lectures, conferences or other live-events to large audiences and offers an alternative to [[en:services:mobile_working:videoconferencing_tools:start|video conferencing]] for particularly large events. Live video can be recorded and streamed with [[https://obsproject.com/|OBS Studio]] (free, desktop, multi-platform) or any other RTMP-enabled software, including conferencing solution such as Zoom, Cisco WebEx or DFNconf. The audience follows live-streaming events via a browser-based video-player, which can also be integrated into existing websites if needed. No software download or account registration required for viewing.+The GWDG live-streaming infrastructure makes it possible to broadcast lectures, conferences or other live-events to large audiences and offers an alternative or addition to [[en:services:mobile_working:videoconferencing_tools:start|video conferencing]] for particularly large events. Live video can be recorded and streamed with [[https://obsproject.com/|OBS Studio]] (free, desktop, multi-platform) or any other RTMP-enabled software, including conferencing solution such as Zoom, Cisco WebEx or DFNconf. The audience follows live-streaming events via a browser-based video-player, which can also be integrated into existing websites if needed. No software download or account registration is required for viewing.
  
-<WRAP center round important 100%+<WRAP round important> 
-This service is still in development and offered **with no warranty** and for **testing purpose** only. If you like to test this service, please request a key via our [[mailto:support@gwdg.de|ticket system]].+This service is still in development and offered **with no warranty** and for **testing purpose** only. If you like to test this service, please request a key via our [[support@gwdg.de|ticket system]].
 </WRAP> </WRAP>
 ===== Getting started ===== ===== Getting started =====
  
-To start streaming, you need a channel and a channel-secret. Please file a [[mailto:support@gwdg.de|support ticket]] to request your channel credentials, then follow the instructions or tutorials matching your recording tool of choice.+To start streaming, you need a channel and a channel-secret. Please file a [[support@gwdg.de|support ticket]] to request your channel credentials and tell us your preferred channel name. Once the channel is createdyou can follow the instructions or tutorials matching your recording tool of choice and start streaming.
  
 ^ Setting         ^ Value                                               ^ Example                                     ^ ^ Setting         ^ Value                                               ^ Example                                     ^
 | **Stream-URL**  | ''%%rtmp://live.gwdg.de/stream%%''                  |                                             | | **Stream-URL**  | ''%%rtmp://live.gwdg.de/stream%%''                  |                                             |
 | **Stream-Key**  | ''<channel>?secret=<secret>''                       | ''myChannel?secret=1234''                   | | **Stream-Key**  | ''<channel>?secret=<secret>''                       | ''myChannel?secret=1234''                   |
-| **Player URL**  | ''%%https://live.gwdg.de/player.html#<channel>%%''  | https://live.gwdg.de/player.html#myChannel  | +| **Player URL**  | ''%%https://live.gwdg.de/play/<channel>%%''  | https://live.gwdg.de/play/myChannel  |
- +
-Some tools combine stream-server and stream-key into a single URL:+
  
 +Some tools combine stream-server and stream-key into a single URL:\\
 ''%%rtmp://live.gwdg.de/stream/<channel>?secret=<secret>%%'' (full stream URL) ''%%rtmp://live.gwdg.de/stream/<channel>?secret=<secret>%%'' (full stream URL)
  
 ==== Named streams ==== ==== Named streams ====
-You can publish more than one stream at the same time or create private streams by appending a unique stream name to the channel part of your stream-key. Channel and stream name are separated by a colon (e.g. ''<channel>:<stream>?secret=...'') and the stream name should be between 3 and 16 characters (letters, digits,''-'' or ''_''). The player URL changes accordingly, so only viewers knowing the full stream name can watch a stream.+You can publish more than one stream at the same time or create private streams by appending a unique stream name to the channel part of your stream-key. Channel and stream name are separated by a colon (e.g. ''<channel>:<stream>?secret=...'') and the stream name should be between 3 and 16 characters (letters, digits,''-'' or ''_''long. The player URL changes accordingly, so only viewers knowing the full stream name can watch a stream.
  
-**Example:** To create a private stream, change your stream-key to ''myChannel:someRandomName?secret=1234'' and direct your viewers to the player URL ''%%https://live.gwdg.de/player.html#myChannel:someRandomName%%''.+**Example:** To create a private stream, change your stream-key to ''myChannel:someRandomName?secret=1234'' and direct your viewers to the player URL ''%%https://live.gwdg.de/play/myChannel:someRandomName%%''.
  
 ==== Stream profiles ==== ==== Stream profiles ====
Line 29: Line 28:
 The streaming server will automatically downscale submitted video to 720p (1280×720, 30fps) if necessary. Higher or lower video profiles can be selected by adding a ''&profile=<name>'' parameter to the stream-key. Available profiles are: The streaming server will automatically downscale submitted video to 720p (1280×720, 30fps) if necessary. Higher or lower video profiles can be selected by adding a ''&profile=<name>'' parameter to the stream-key. Available profiles are:
  
-^ Profile  ^ Resolution   ^ FPS  ^ Bitrate (v+a)  ^ Alias            ^ +^ Profile      ^ Resolution   ^ FPS  ^ Bitrate (v+a)  ^ Alias            ^ ABR?  
-576p30   | 720  576   | 30   1500k + 96k    | sd               | +''360p30''   | 640 x 360    | 30   | 400k + 96k                      | no    | 
-| 720p30   | 1280 x 720   | 30   3000k + 128k   | hd, **default** +| ''480p30''   | 854  480   | 30   600k + 96k     | sd               | no    
-| 1080p30  | 1920 x 1080  | 30   4500k + 128k   | fhd              | +''720p30''   | 1280 x 720   | 30   1600k + 128k   | hd, **default**  | yes   
-| 1080p60  | 1920 x 1080  | 60   | 6000k + 128k                    |+''1080p30''  | 1920 x 1080  | 30   2400k + 128k   | fhd              | yes   |
  
-The profile should match the resolution and framerate of the transmitted stream as closely as possible to avoid unnecessary down-scaling and frame-dropping on server side. Higher profiles may not be available to all channels. If a profile is not supported, the default profile is selected automatically.+The profile should match the resolution and framerate of the transmitted stream as closely as possible to avoid unnecessary down-scaling or frame-dropping on server side. Higher profiles may not be available to all channels. If a profile is not supported, the default profile is selected automatically.
  
 **Example:** To transmit fullHD video, the stream key would be ''myChannel?secret=1234&profile=1080p30'' **Example:** To transmit fullHD video, the stream key would be ''myChannel?secret=1234&profile=1080p30''
 +
 +=== Adaptive Bitrate Streaming (experimental) ===
 +
 +Some profiles can be combined with [[https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming|Adaptive Bitrate Streaming]] to increase the experience of mobile or low-bandwidth viewers. If enabled, the video stream will be encoded with multiple resolutions and bitrates at the same time. The video player automatically chooses the highest possible resolution based on the clients available bandwidth, and will automatically switch to a lower resolution if it detects bandwidth issues.
 +
 +To enable "Adaptive Bitrate Streaming", choose a profile that supports it, and add '',abr'' to its name. For example: ''profile=1080p30,abr''. Note that ABR requires significantly more CPU resources on server-side and should only be activated if necessary.
  
 ===== Streaming guides ===== ===== Streaming guides =====
Line 43: Line 48:
 ==== OBS Studio ==== ==== OBS Studio ====
  
-[[https://obsproject.com/|OBS Studio]] is very popular in the streaming community and there are are hundreds of guides available online. The only real difference is that you are not streaming to twitch or youtube, but to a custom streaming server. If you discover online resources that you find particularly useful, please [[mailto:support@gwdg.de|tell us]] so we can link them here.+[[https://obsproject.com/|OBS Studio]] is very popular in the streaming community and there are many guides available online. The only real difference is that you are not streaming to twitch or youtube, but to a custom streaming server. If you discover online resources that you find particularly useful, please [[support@gwdg.de|tell us]] so we can link them here.
  
-==== Zoom ====+==== BigBlueButton ===
  
-Zoom allows direct streaming of meetings, but the feature is disabled by default. Follow the [[https://support.zoom.us/hc/en-us/articles/115001777826-Live-Streaming-Meetings-or-Webinars-Using-a-Custom-Service|official Instructions]] to enable this feature. In short: Log into your accountgo to "Settings", open the "Meeting" tab, then in the "In Meeting (Advanced)" section locate the "Allow livestreaming of meetings" setting and verify that it is enabled. Make sure the "Custom Live Streaming Service" option is selected.+[[https://meet.gwdg.de/|BigBlueButton]] does not have an integrated live-streaming feature, but can of course be recorded and streamed client-side with OBS or similar software
  
-Once activated, you will have a new "More" button in your zoom client which allows you to activate live streaming for meetings hosted by yourself. Planned meetings can be configured via a new "Live-Streaming" tab below the meeting details.+==== Zoom ====
  
-Warning: Zoom relies heavily on cloud-resources outside of the EU to record and stream your meetingeven if you enabled on-premise for your accountVideo and audio data will be transferred and processed in non-EU data centres if you enable this feature. Make sure you meet the GDPR (DSGVO) requirements.+Zoom allows direct streaming of meetingsbut the feature is disabled by defaultFollow the [[https://support.zoom.us/hc/en-us/articles/115001777826-Live-Streaming-Meetings-or-Webinars-Using-a-Custom-Service|official instructions]] to enable this feature. Once activated, you will have a new "More" button in your zoom client which allows you to activate live streaming for meetings hosted by yourself. Planned meetings can be configured via a new "Live-Streaming" tab below the meeting details.
  
-==== BigBlueButton ===+Warning: Zoom relies heavily on cloud-resources outside of the EU to record and stream your meetings, even if your account is 'on-premise' enabled. Video and audio data will be transferred and processed in non-EU data centres if you enable this feature. Make sure you meet the GDPR (DSGVO) requirements.
  
-[[https://meet.gwdg.de/|BigBlueButton]] does not have an integrated live-streaming feature, but can of course be recorded and streamed client-side with OBS or similar software+==== Cisco Webex ==== 
 + 
 +If live-streaming is enabled for your paid Webex Meetings or Events plan, you can stream directly from within Webex. No additional software required. Details can be found on the [[https://help.webex.com/en-us/a6cmw/Live-Stream-Your-Webex-Meetings-or-Events|official documentation]] page.
  
-===== Troubleshooting =====+===== Troubleshooting and F.A.Q =====
  
 ** What software to use?** ** What software to use?**
-    * We recommend [[https://obsproject.com/|OBS Studio]], a free any very popular video recording and live streaming software for Windows, macOS and Linux.+    * Any software that supports RTMP will work. We recommend [[https://obsproject.com/|OBS Studio]], a free and very popular video recording and live streaming software for Windows, macOS and Linux.
  
 **The stream does not connect, or disconnects immediately.** **The stream does not connect, or disconnects immediately.**
Line 72: Line 79:
     * The stream must begin with video data available. Audio-only streams are not supported. Timestamp correction (e.g. to fix audio/video synchronisation issues) may cause video to arrive late, and not being detected correctly.     * The stream must begin with video data available. Audio-only streams are not supported. Timestamp correction (e.g. to fix audio/video synchronisation issues) may cause video to arrive late, and not being detected correctly.
     * Transcoding can only begin at I-frame borders. Make sure the video stream contains at least one I-frame every 4 seconds.     * Transcoding can only begin at I-frame borders. Make sure the video stream contains at least one I-frame every 4 seconds.
 +    * If ''abr'' (Adaptive Bitrate Streaming) is enabled, the input resolution must match the selected profile. Odd or non-standard video resolutions cause errors.
   * The system may be overloaded, a worker process may have crashed or you may have triggered a bug. Please try to reconnect and  contact support if that does not work.   * The system may be overloaded, a worker process may have crashed or you may have triggered a bug. Please try to reconnect and  contact support if that does not work.
  
 **Viewers complain about a delay.** **Viewers complain about a delay.**
-  * A delay of 6-12 seconds is normal. Lager delays are usually caused by buffering within the streaming software.+  * A delay of 6-12 seconds is normal. Larger delays are usually caused by buffering within the streaming software.
  
 **Viewers complain about buffering** **Viewers complain about buffering**
   * The maximum bandwidth required for viewing a stream depends on the selected stream profile. Try a profile with a lower bitrate if a lot of your viewers depend on mobile or unreliable networks.   * The maximum bandwidth required for viewing a stream depends on the selected stream profile. Try a profile with a lower bitrate if a lot of your viewers depend on mobile or unreliable networks.
   * Video data with low image complexity can be compressed extremely well. Streaming might work well for most viewers during scenes with low complexity, but start buffering during scenes with high contrasts and lots of moving objects. Try a profile with a lower bitrate.   * Video data with low image complexity can be compressed extremely well. Streaming might work well for most viewers during scenes with low complexity, but start buffering during scenes with high contrasts and lots of moving objects. Try a profile with a lower bitrate.
-  * Occasional buffering at the beginning of a stream is normal, as the clients need to calculate a sensible buffer size first. If image complexity changes drastically (e.g. switching from a mostly static scene to rapid movement) then this calculation may be off. The stream usually runs well after a while, once the client has increased its buffer.+  * Occasional buffering at the beginning of a stream is normal, as the clients need to calculate a sensible buffer size first. If image complexity changes drastically (e.g. switching from a mostly static scene to rapid movement) then this calculation may be off. Unstable networks with varying bandwidth have the same effect. The stream usually runs well after a while, once the client has increased its buffer size. 
 +  * Our current infrastructure can handle 2000 to 4000 concurrent viewers in total, depending on stream profile and content. This is an untested theoretical limit, though. If you are expecting close to or more than a thousand viewers, please tell us in advance and be prepared for technical difficulties. We are still in testing phase and do not have experience yet with exceptionally large audiences.
  
 **Video quality is bad** **Video quality is bad**
   * Video quality should be good enough for most use cases, even on low stream profiles. If your stream looks blurry or distorted, please first make sure that your streaming software sends video with high-enough quality to begin with. Dropped frames or bad video quality may also be caused by an overloaded streaming PC.    * Video quality should be good enough for most use cases, even on low stream profiles. If your stream looks blurry or distorted, please first make sure that your streaming software sends video with high-enough quality to begin with. Dropped frames or bad video quality may also be caused by an overloaded streaming PC. 
-  * Rapid movement and complex scenes (e.g. fast paced games) do not compress very well and may appear blurry. This is normal. The default stream profiles are optimized for lectures or presentations with mostly static content. Choose a higher bitrate stream profile if necessary.+  * Rapid movement and complex scenes (e.g. fast paced games) do not compress very well and may appear blurry. This is normal. The default stream profiles are optimized for lectures or presentations with mostly static content. Choose a higher bitrate stream profile if necessary, or tell us about your use-case. There might be non-public streaming profiles available that better suit your needs.
  
 ** Audio and video is out of sync ** ** Audio and video is out of sync **
Line 90: Line 99:
  
 ** Audio is in wrong language ** ** Audio is in wrong language **
-  * When streaming a video that contains more than one audio track, make sure to only transmit the correct track. If multiple tracks are found, all but the first track are ignored.+  * When streaming a video that contains more than one audio track, all but the first track are ignored. Multi-track audio is not supported (yet).
  
 ** Video skips or jumps forward in time ** ** Video skips or jumps forward in time **
-  * When streaming a pre-recorded video, make sure to send data in realtime and not faster. With ''ffmpeg'' this can be enforced with the ''-re'' input parameter.+  * When streaming a pre-recorded video, make sure to send data in real-time and not faster. For ''ffmpeg'' this can be enforced with the ''-re'' input parameter.
  
 ** Video won't play on some devices ** ** Video won't play on some devices **