Starting from the 220.127.116.1119 SDK version, the DVB compatible streaming is supported.
MWriter example configuration string
format='dvb' protocol='udp://' video::codec='mpeg2video' video::b='5M' audio::codec='aac'
Please make sure your network connection between the DVB encoder and DVB receiver stable and reliable in other cases you will have PCR and other errors on the side of your receiver.
I will try to explain what is PCR, for more detailed information please refer to the DVB standard description - ETSI TS 101 154
Program Clock Reference (PCR) is a special packet that is sent at a specific interval by DVB compatible encoder, so we can think about it like a "heartbeat" for the DVB stream.
(Different DVB standards using a different PCR interval value in most cases an old standard waiting a 40 ms, the new ones refers to 100 ms)
For example, we have a DVB-compatible encoder that provides a perfect DVB stream.
Also, we have a DVB hardware muxer (or any other hardware/software) that is receiving DVB stream provided by the DVB encoder.
Let's suppose that the DVB encoder located in network A, and receiver hardware located in network B.
If the ping interval between networks greater than 20-30ms you will never get the DVB compatible stream even if the encoder provides the perfect DVB.
PCR will never be received in the time -PCR error will be increased and as result, Priority1 and Priority2 errors also will be increased.
Note please that you should specify the muxrate attribute according to this formula:
muxrate = (video_bitrate + audio_bitrate)*1.25
The resulting stream bitrate will be of the muxrate value. The non-video and non-audio part is filled with null-packets.
So, the above configuration should be like this:
format='dvb' protocol='udp://' muxrate='7M' video::codec='mpeg2video' video::b='5M' audio::codec='aac'
Here is a list of main attributes specific for DVB streaming:
|embed_cc||false||Enable embedding Closed Captions (ATSC) into an elementary video stream|
|embed_scte35||false||Enable embedding SCTE-35 triggers into MPEG transport stream|
|service_name||MPService001||Set Service Name|
|service_provider||Medialooks||Set Service Provider|
|transport_stream_id||1||Set transport_stream_id field|
|original_network_id||1||Set original_network_id field|
|muxrate||1||The combined rate of all video and audio elementary stream packets common to one program. This rate also includes the VBI and sub-picture private stream data, which MPEG treats as a private stream type.|
|service_id||1||Set service_id field|
|service_type||digital_tv||Set Service type. Possible values: digital_tv, mpeg2_digital_hdtv, advanced_codec_digital_sdtv, advanced_codec_digital_hdtv, hevc_digital_hdtv|
|pmt_start_pid||129||Set the first pid of the PMT. Possible values: from '16.0' to '7936.0'|
|start_pid||1024||Set the first pid. Possible values: from '256.0' to '3840.0|
|pes_payload_size||2930||Minimum PES packet payload in bytes|
|mpegts_flags||MPEG-TS muxing flags. Possible values:
|start_timecode||auto||Set start timecode for encoding. Possible values are: auto (default), disabled, local_time or a custom string like "10:00:00:00"|
|resend_headers||0||Reemit PAT/PMT before writing the next packet|
|tables_version||0||Set PAT, PMT and SDT version|
|pcr_period||20||Override the default PCR retransmission time in milliseconds (default 20ms)|
|pat_period||0.1||PAT/PMT retransmission time limit in seconds (default 100 msec)|
|sdt_period||0.5||SDT retransmission time limit in seconds (default 500 msec, no transmit -1)|
|nit_period||3||NIT retransmission time limit in seconds (default 3 s, no transmit -1)|
|tdt_period||10||TDT retransmission time limit in seconds (default 10 s, no transmit -1)|
|eit_period||0.5||EIT present/following retransmission time limit in seconds (default 500 ms, no transmit -1)|
|start_pcr||0||Set start PCR value (in seconds)|
|muxer.buffer_min||0||Set minimum muxer buffer value|
|muxer.buffer_max||0||Set maximum muxer buffer value|