Setup of Output Streams

This article will show how to setup your Output Streams for different purposes.

In this article:
Introduction
Using Parameter and Config String
Config Samples
Multiple Audio Tracks
Closed Captions and SCTE
Troubleshooting


1. Introduction

You are able to setup 15 different Stream Configurations for any Source, being Channel, Inputs and Director View. As a default, your Video Format is copied from the Source, once the Stream starts, but you can transcode into any Resolution.

Once you pick your Protocol, the other Fields for Video/Audio Codec and URL will change according to your selection, meaning: Not every Video/Audio Codec will be available for every Stream Protocol.

INFO: NVIDIA Encoder do NOT support Interlaced Formats anymore. Pick Intel QuickSync instead.

Your URL will show a suggestion of the required URL Format. Click on “URL Info” to show more examples, e.g. how to integrate Username/Password. The Preview URL will not be used by PLAYDECK, it’s just for your convenience to open the Internet Browser upon clicking “Preview”.


2. Using Parameter and Config

Further Parameter can be set to Protocol and Codecs, which are specific for your selection. These can be used to finetune your Settings, e.g. make your Stream CBR or add Metadata.

Clicking on “Parameter” will open a Editor, which will only show the possible Settings for your selection. It will highlight any Value that differs from the Default Value.

The “Config String” is a representation of all your Protocol/Codec selection as well as their respective Parameter. The Config String works both ways: You can also copy/paste a Config String into the Text Field, then click “Update from String” to apply the Values upwards. This allows you to simply copy Settings between Stream ID’s or share with other User.


3. Config Samples

Here is a quick selection of recommended Configurations for different purposes. Copy and Paste to PLAYDECK and click “Update from String”.


DVB Stream with CBR and GOP B-frames. No PCR or PTS-DTS or Buffer underrun Error

format='dvb' protocol='udp://' mpegts_start_pid='60' video::streamid='80' video::disable_sps_pps='true' video::codec='n264' video::profile='high' video::level='4.1' video::rc_type='cbr' muxrate='10M' video::b='7.5M' video::bufsize='1.25M' video::g='32' video::bf='2' video::ref_frames='3' audio::streamid='81' audio::metadata::language='deu' audio::codec='mp2' audio::b='192k' pmt_start_pid='100' mpegts_flags='-system_b' rc_buffers='4' pcr_period='35' pat_period='0.1' sdt_period='0.5' tdt_period='10' start_pcr='0' service_name='TEST' service_provider='PD' service_id='1' original_network_id='1' transport_stream_id='201' service_type='advanced_codec_digital_hdtv'


Or in Short Form:

format='dvb' protocol='udp://' video::disable_sps_pps='true' video::codec='n264' video::profile='high' video::level='4.1' video::rc_type='cbr' muxrate='10M' video::b='7.5M' video::bufsize='1.25M' video::g='32' video::bf='2' video::ref_frames='3' audio::metadata::language='deu' audio::codec='mp2' audio::b='192k' service_type='advanced_codec_digital_hdtv'

INFO: Every DVB Receiver is different und you might need different Parameters. Some Receiver will not allow ANY deviancy from official guidelines, and will show BLACK. The most reliable solution to encode DVB signals are Hardware Encoder, e.g. Haivision.

Best practice to test DVB Streams for PCR Error or other, is using one of these Tools:
DVBControl DVBAnalyzer (costs ~2000 EUR, but is most reliable and detects PTS-DTS Error)
StreamGURU (costs ~300 EUR, can detect any ETR Error and shows Bitrate Graphic)
TSAnalyzer (free, but can ingest Stream URL, needs TS File on HD)
– Others worth mentioning: DVBInspector, Elecard Stream Analyzer, StreamXpert


Stream to Twitch (or similar Streaming Website) in CBR

format='flv' protocol='rtmp://' merge_tracks='true' video::codec='n264' video::b='6M' video::rc_type='cbr' video::bf='2' video::preset='low_latency' video::profile='High' video::maxrate='6M' video::bufsize='2M' video::maxnumrefframes='4' audio::codec='aac' audio::ar='44100' audio::b='160K'

Best practice to test your Twitch Streams is to use Twitch Inspector. This will show you any Stream Error and if your Bitrate is stable. If you add “?bandwidthtest=true” to your Stream URL, your Twitch Stream will NOT go live.

rtmp://<hostname_or_ip>/<app_name>/<stream-key>?bandwidthtest=true

4. Multiple Audio Tracks

If you need to send multiple Audio Tracks, e.g. for different Languages or for Director Audio, you can do so with all supported Protocols (DVB, RTMP, UDP and some more).

The way this works is, that you have ALL Audio Tracks already active in your Channel, then SPLIT the Audio Tracks for your Stream Output in e.g. Stereo Pairs.

First, make sure your Channel is set to more then 2 Audio Channel:

Then “fill” these Audio Channel with Audio Content, e.g. by enabling All Audio Tracks on a Clip or ingesting all Tracks via SDI (up to 16 Audio Tracks). You can also use Audio Mapping to mix up/down your Audio Tracks or use Audio Filter to copy and delay certain Audio Tracks.

Then you open your Stream Settings, especially the Parameter of your Stream Protocol and enable Audio Track Splitting:

You can add Metadata to specify a Language Descriptor for each Audio Track, which will be picked up from Receiver Devices (e.g. DVB Settopbox). These need to be added to the Config String directly. Please note the added and increasing Numbers for every Audio Tracks after the first one:

audio::metadata::language='eng' audio.1::metadata::language='ita' audio.2::metadata::language='french'

5. Closed Captions and SCTE

Both can be enabled in the Parameter Settings of your Protocol:

INFO: SCTE-35 is only available for Protocols: SRT, DVB, UDP (any Video Codec). Closed Caption will only work with Video Codecs: MPEG-2, H.264 (any Protocol)

This will require both to be enabled and available in your Channel already. Please refer to the following articles for more information on SCTE and/or Closed Captions:

Sending SCTE-35 to Stream Server
Closed Captions / Subtitles

6. Troubleshooting

If your Streams are lagging or even stopping completely, you are often in the dark what exactly happened. Here are some pointer to help you identify the problem.

There are 2 possible Sources for Problems: 1. Encoding and 2. Network/Bandwidth


1. Encoding Problems are identified in the PLAYDECK Monitoring (or Logs):

FPS 50/60 (FPS Average/Desired)
Compares the current and average encoding frame rate against the desired level. A drop here indicates the system cannot keep up with real-time encoding.

Elapsed (Frame Waiting Time in Millisecond)
Shows Time elapsed after the last Frame has been processed. This could indicate false Settings (e.g. Video Format not supported by Encoder) or that no Frames can be send (Loss of Connection or Bad Connection).

Skipped (Dropped Frames)
The most critical indicator of performance bottlenecks. If this value increases, the encoder is intentionally dropping frames because it cannot process them fast enough.

Buffer (Frames waiting)
Monitors the number of frames waiting in the internal queue. A constantly growing buffer typically precedes skipped frames and suggests a CPU/GPU bottleneck.


2. Network/Bandwidth Problems

Turn of all your Streams, open your Windows Console (“cmd” in Start Menu) and type

tracert <hostname_or_ip>

Use your Target URLs Hostname or IP Address. If you see any Values >100 ms, this will indicate a slow connection to your Stream Target.

Also keep in mind, that while today Download Speeds with Fibre, Cable or DSL or mostly high speed (>100 Mbps), the Upload Speed could be very much slower than that. Use a Tool like Speedtest to determine your actual Upload Speed.

Also use Bandwidth Profiler on the Stream Server to check, if your desired Bitrate is also received on the Server. Most Provider or Software will provide with Tools to measure the received Bitrate. Ideally it is shown as Graph, which can point out any Gaps during the Transmission, e.g. Twitch Inspector.

Also check, if your Provider provides any local Ingest URLs, e.g. Twitch Ingest Endpoints.

image_pdf