August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)

Cookbook : Recording a whole DVB broadcast

Find the code for this here:
/Code/Python/Kamaelia/Examples/DVB_Systems/TransportStreamCapture.py

This simple example shows how to record a whole broadcast DVB multiplex at a frequency of 505.83MHz, with specific parameters to help the tuner:

    from Kamaelia.Device.DVB.Core import DVB_Multiplex
    from Kamaelia.Chassis.Pipeline import Pipeline
    from Kamaelia.File.Writing import SimpleFileWriter
    
    import dvb3
    
    freq = 505.833330 # 529.833330   # 505.833330
    feparams = {
        "inversion" : dvb3.frontend.INVERSION_AUTO,
        "constellation" : dvb3.frontend.QAM_16,
        "code_rate_HP" : dvb3.frontend.FEC_3_4,
        "code_rate_LP" : dvb3.frontend.FEC_3_4,
    }
    
    Pipeline(
       DVB_Multiplex(freq, [0x2000],feparams), # BBC Multiplex 1, whole transport stream
       SimpleFileWriter("BBC_MUX_1.ts"),
    ).run()

The DVB_Multiplex component is the simplest and easiest to use combined tuner and demultiplexer component - you simply specify the frequency, a list of packet IDs to demultiplex, and an optional dictionary of tuner control parameters.

By specifying the special PID of 0x2000 the demultiplexer outputs all packets. However, not that not all DVB hardware supports this.