{"id":30859030,"url":"https://github.com/videolan/dvblast","last_synced_at":"2025-09-07T14:56:21.273Z","repository":{"id":53560170,"uuid":"114354448","full_name":"videolan/dvblast","owner":"videolan","description":"Please send patches as pull requests.","archived":false,"fork":false,"pushed_at":"2025-01-21T11:06:23.000Z","size":536,"stargazers_count":61,"open_issues_count":0,"forks_count":26,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-01-21T12:19:51.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.videolan.org/projects/dvblast.html","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/videolan.png","metadata":{"files":{"readme":"README","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-15T09:45:49.000Z","updated_at":"2025-01-21T11:06:27.000Z","dependencies_parsed_at":"2025-01-21T12:29:22.547Z","dependency_job_id":null,"html_url":"https://github.com/videolan/dvblast","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/videolan/dvblast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videolan%2Fdvblast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videolan%2Fdvblast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videolan%2Fdvblast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videolan%2Fdvblast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/videolan","download_url":"https://codeload.github.com/videolan/dvblast/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videolan%2Fdvblast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274052000,"owners_count":25214030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-07T14:56:14.761Z","updated_at":"2025-09-07T14:56:21.246Z","avatar_url":"https://github.com/videolan.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nWelcome to DVBlast!\n===================\n\nDVBlast is a simple and powerful MPEG-2/TS demux and streaming\napplication with several input methods:\n - linux-dvb-supported cards (DVB-S, DVB-S2, DVB-C, DVB-T...)\n - DVB-ASI cards\n - UDP or RTP stream carrying a transport stream\n\nIt outputs one or several RTP streams carrying transport streams with:\n - hardware or software PID filtering\n - PID-based or service-based demultiplexing\n - optional descrambling via CAM device\n - optional DVB tables\n\nDVBlast is written to be the core of a custom IRD, CID,or ASI gateway,\nbased on a PC with a Linux-supported card. It is very lightweight and\nstable, designed for 24/7 operation.\n\n\nCurrent features\n================\n\n - Lightweight program designed for extreme memory and CPU conditions\n - No runtime dependancy; one build dependancy (biTStream)\n - CAM menus (MMI) support via an external application\n - The configuration file describing outputs can be reloaded without losing\n   a single packet\n - Support for the new S2API of linux-dvb\n - IPv6 network support\n - UDP rather than RTP output for IPTV STBs which don't support RTP\n\n\nTuning DVBlast\n==============\n\nYou usually want to supply DVBlast with the parameters of a transponder,\nfor instance for DVB-S :\n\ndvblast -f 11570000 -s 27500000 -v 18\n\nThis tunes to frequency 11570 MHz, symbol rate 27500, horizontal (-v 18).\n\nFor DVB-S2 you must indicate a modulation with -m qpsk|psk_8|apsk_16|apsk_32.\n\nFor DVB-T you must indicate a bandwidth, usually -b 8 for 8 MHz multiplexes.\n\nPlease note that frequencies are in kHz for DVB-S/S2/C, but Hz for DVB-T.\nSymbol rates are in symbols/s, and bandwidths in MHz. If you have several\nlinux-dvb cards in the machine, specify which one to use with -a.\n\nYou generally want to run DVBlast in DVB compliance mode with option -C.\nThis option will pass through or generate mandatory DVB tables (NIT, SDT,\nEITp/f, TOT, TDT). If you also want to pass-through the EIT schedule tables,\nuse the -e switch. It is considered a good practice to configure the name\nof the network (for the NIT) with the -M option.\n\nIf you don't want to set these options on a general basis, you can set them\nper output - see below.\n\nOther rarely used options are available - run dvblast -h for more\ninformation.\n\n\nAlternative inputs\n==================\n\nDVBlast may handle several DVB adapters in the same machine with the -a switch:\n-a 3 will use /dev/dvb/adapter3.  Additionally, selecting between frontends on\na single card is supported with the -n switch.  This is useful for hybrid \nDVB/S + DVB/T cards.\n\nIf you own a Computer Modules DVB-ASI input card, you can have DVBlast\nfilter and demultiplex the inputs. You just need to specify the slot number\nwith -A.\n\nIf you own a Deltacast ASI input card, you can have DVBlast filter and\ndemultiplex the inputs. You just need to specify the input as\n\"-A deltacast:\u003cx\u003e\" where \u003cx\u003e is 100 * the card number (0 based) + the channel\nnumber (0 based).\n\nDVBlast can also read from a UDP or RTP IPv4 source carrying for\ninstance a multi-program transport stream. The address is specified with\n-D. See the 'advanced features' section for information on how to create\nsuch a stream for instance to cross network boundaries between the\nreceivers and the target network.\n\nThe syntax of the -D option is:\n[\u003csrc host\u003e[:\u003csrc port\u003e]@]\u003csrc mcast\u003e[:\u003cport\u003e][/\u003copts\u003e]*\nwhere \u003csrc mcast\u003e is the multicast address carrying the stream, and \u003csrc\nhost\u003e is optionally the address of the source, for source-specific multicast.\nOptions include:\n /udp (for streams without an RTP header)\n /mtu=XXXX (sets the maximum UDP packet size)\n /ifindex=X (binds to a specific network interface, by link number)\n /ifaddr=XXX.XXX.XXX.XXX (binds to a specific network interface, by address)\n\nFor example:\n-D 239.255.0.2:1234/udp/ifindex=1\n\n\nConfiguring outputs\n===================\n\nDVBlast reads a configuration file containing one or several lines in the\nformat :\n\u003cIP\u003e[:\u003cport\u003e][@\u003cIP\u003e[:\u003cport\u003e]][/\u003coption\u003e]*\t\u003calways on\u003e\t\u003cSID\u003e\t[\u003cPID\u003e,]*\n\nFor instance :\n239.255.0.1:1234\t\t1\t10750\t1234,1235,1236\n\nThe configuration file can be reloaded by sending \"HUP\" to the program, or\nvia the dvblastctl program.\n\nIPv6 is supported, the destination address must be specified in the format \ndescribed by RFC2732.  When using link-local scope addresses, it is\nmandatory to include the interface name in the address, as shown in the \nexample below.  If you do not include the interface name, you will see an\n\"invalid argument\" error.  The interface name is optional for site-local and \nglobal scope addresses.\n\nFor example :\n[ff12::1%eth0]:1234\t\t1\t10750\n[ff15::abcd]:1234\t\t1\t10750\n\nAn optional bind address can be specified after an '@' sign. The typical\nusage of this is to allow binding to a specific interface in a system which\nhas several. For instance:\n239.255.0.1:1234@192.168.42.1\t1\t10750\n\nFor IPv6 the bind address is not relevant; binding to an interface is achieved\nvia the option \"/ifindex=X\" where X is the number of the link, as given by\nthe command `ip link`.\n\nThe \"always on\" flag tells DVBlast whether the channel is expected to\nbe on at all times or if it may break. If set to \"1\", then DVBlast will\nregularly reset the CAM module if it fails to descramble the service,\nassuming the module is dead. Every time it is reset a few TS packets\nwill be lost, that is why this feature is optional.\n\nOther options can be set by appending / to the multicast address definition.\nAvailable options include :\n /udp (turns on -U for a specific output)\n /dvb (turns on -C for a specific output)\n /epg (turns on -C -e for a specific output)\n /tsid=XXX (sets the transport stream ID)\n /ssrc=XXX.XXX.XXX.XXX (sets the RTP synchronization source IPv4)\n /retention=XXX (see -E)\n /latency=XXX (see -L)\n /ttl=XX (see -t)\n /tos=XX (sets the IPv4 Type Of Service option)\n /mtu=XXXX (sets the maximum UDP packet size)\n /srvname=Some_Channel (set service name in SDT)\n /srvprovider=Some_Provider (set provider name in SDT)\n /pidmap=pmt_pid,audio_pid,video_pid,spu_pid\n /newsid=XX (set output service ID)\n /srcaddr=XXX.XXX.XXX.XXX (use RAW packets and set source IPv4)\n /srcport=XX (set source port, depends on /srcaddr)\n\nWhen setting text options like /srvname or /srvprovider, remember\nthat the underscore character (_) will be replaced by space ( ).\n\nSeveral options can be appended, for instance:\n\n239.255.0.1:1234/udp/epg/tsid=42/ssrc=192.168.0.1\n\nThe optional \"/udp\" parameter can be used to force DVBlast to output\nraw UDP stream. This functionality is provided for backwards compatibility\nwith IPTV set top boxes that don't support RTP and should only be used\nif absolutely necessary. If you need both RTP and UDP streams of the same\nprogram, specify them on separate lines like this:\n\n239.255.0.1:1234\t1\t10750\n239.255.0.2:1234/udp\t1\t10750\n\n\nThere are three ways of configuring the PIDs to stream :\n\n1. SID-based\n\n239.255.0.1:1234\t1\t10750\t\n\nDVBlast will stream all known PIDs from service 10750 (video, audio, and\nsubtitles). The resulting stream is fully MPEG-compliant, with PAT and PMT.\n\n2. SID and PIDs\n\n239.255.0.1:1234\t1\t10750\t1234,1235\n\nDVBlast will stream SID 10750, but only PID 1234 and 1235 will be output.\nOther known PIDs will be discarded and removed from the PMT. The list of\nPIDs in the config file does not include the PAT and PMT, but it must\ninclude the PCR PID if it is different from the video or audio PID, otherwise\nthe stream won't be compliant.\n\n3. PIDs only\n\n239.255.0.1:1234\t1\t0\t0,128,1234,1235\n\nDVBlast will only stream the PIDs passed. No PAT and PMT will be generated,\nso if they are not included the stream won't be compliant. Also the\nincluded PAT and PMT may contain ghost programs or ESes.\n\n4. PID remapping\n\n239.255.0.1:1234/udp/epg/tsid=42/ssrc=192.168.0.1/pidmap=pmt_pid,audio_pid,video_pid,spu_pid\n\nAll four PIDs are required!\n\nNote that the CAM will not be programmed in that case (unless it has\nbeen programmed by another line of the config file).\n\n5. Pass-through\n\n239.255.0.1:1234\t1\t*\t\n\nThe entire received stream will be passed through the output. Please bear in\nmind that when reading from a DVB adapter, hardware PID filtering is used by\ndefault, so not all packets will be output unless you specify the -u option.\n\n\nThe file is read from the command-line :\n\ndvblast -c /tmp/dvblast.conf\n\n\nBuffering\n=========\n\nDVB cards usually output packets in big chunks. This can be problematic\nwith low bitrate multiplexes. By default, DVBlast bufferizes 200 ms\nand tries to smooth the output. It may be desired to change this value\nwith the -L option. The appropriate value for the output latency should be :\n  chunk_size / multiplex_bitrate\n\nThe chunk size for saa7146-based cards is 512000 bits ; for\ncx23885-based cards is 192512 bits. The chunk size can be modified with\nan appropriate kernel patch (see extra/). The multiplex_bitrate depends\non the symbol rate and many other factors such as the modulation.\n\nThe current default value allows for multiplex_rates as low as 2.56 Mbi/s.\nSmaller multiplexes are rare but exist, so in that case you may want to\nincrease the buffer size. A typical DVB multiplex is 30 or 40 Mbi/s, so\nthe default introduces a superfluous latency ; the buffer can be lowered\nto 50 ms if latency is an issue.\n\nDVBlast also has another parameter called \"max retention time\" (-E).\nThis controls how TS packets are grouped together in IP datagrams : the\ndifference between the theorical output times of the first and the last\nTS packets cannot exceed the maximal retention time.\n\nIP datagrams are normally output at the output time of the earliest TS\npacket ; it implies that the next TS packets are sent too soon and must\nbe buffered at the receiver level. ISO/IEC 13818-1 makes no provision for\nthis, since IP wasn't in mind when designing TS, so in theory we risk a\nbuffer overflow.\n\nHowever normal IP receivers feature a jitter buffer which can absorb the\noverflow ; DVB recommends a 50 ms buffer. DVBlast's default maximal\nretention time is just below, at 40 ms, which should be fine in most\nsituations.\n\nIf some anal set-top-box complains about buffer overflows or clock issues,\nyou may try to lower the value ; the drawback is that on low bitrate\nstreams it will introduce padding. People with low bitrate streams and\nnice receivers with big buffers can raise this value to avoid superfluous\npadding and lower the total bitrate.\n\nPlease bear in mind though that setting a value for max retention time\ngreater than the output latency has no effect.\n\n\nMonitoring\n==========\n\nIf dvblast is run with the -r option, the dvblastctl program can be used\nto retrieve information from DVBlast about the front-end or CAM module.\n\ndvblastctl -r /tmp/dvblast.sock fe_status\ndvblastctl -r /tmp/dvblast.sock mmi_status\ndvblastctl -r /tmp/dvblast.sock shutdown\n\n\nCAM menu\n========\n\nFor easier access to the CAM menus, the dvblast_mmi.sh shell script is\nprovided :\n\ndvblast_mmi.sh -r /tmp/dvblast.sock\n\n\nAdvanced features\n=================\n\nFor better latency, run DVBlast in real-time priority: -i 1 (requires root\nprivileges).\n\nDVBlast can also stream the entire transponder to an IPv4 or IPv6 address :\ndvblast -u -d 172.16.42.42:1235 -f 11570000 -s 27500000 -v 18\ndvblast -u -d [fe80::0ca:feff:fec0:ffee]:1235 -f 11570000 -s 27500000 -v 18\n\nNote that IPv6 addresses specified on command line may need to have the square\nbrackets escaped (\\[ and \\]), depending on your shell.\n\nThe -u switch disables the PID filters, so that all PIDs, even the\nunused ones, can be output.\n\nOther options are self-understandable, and are listed in dvblast -h.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvideolan%2Fdvblast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvideolan%2Fdvblast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvideolan%2Fdvblast/lists"}