{"id":13657778,"url":"https://github.com/mkrufky/libdvbtee","last_synced_at":"2026-03-09T08:31:38.500Z","repository":{"id":3401014,"uuid":"4450703","full_name":"mkrufky/libdvbtee","owner":"mkrufky","description":"dvbtee: a digital television streamer / parser / service information aggregator supporting various interfaces including telnet CLI \u0026 http control","archived":false,"fork":false,"pushed_at":"2023-06-22T12:29:40.000Z","size":2145,"stargazers_count":79,"open_issues_count":25,"forks_count":30,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-10-20T01:52:36.598Z","etag":null,"topics":["atsc","dvb","dvb-t","eit","hdhomerun","linuxtv","mpeg2","mpegts","network-stream","network-streams","parse","parser","pat","pmt","psip","streaming","transport-stream","tv","tv-apps","udp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkrufky.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","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}},"created_at":"2012-05-25T22:21:56.000Z","updated_at":"2025-09-14T10:29:49.000Z","dependencies_parsed_at":"2022-08-25T07:34:22.987Z","dependency_job_id":null,"html_url":"https://github.com/mkrufky/libdvbtee","commit_stats":{"total_commits":1805,"total_committers":18,"mean_commits":"100.27777777777777","dds":0.09473684210526312,"last_synced_commit":"6c1f4135d840241048dc2f693867986195572b6a"},"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/mkrufky/libdvbtee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkrufky%2Flibdvbtee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkrufky%2Flibdvbtee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkrufky%2Flibdvbtee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkrufky%2Flibdvbtee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkrufky","download_url":"https://codeload.github.com/mkrufky/libdvbtee/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkrufky%2Flibdvbtee/sbom","scorecard":{"id":652910,"data":{"date":"2025-08-18","repo":{"name":"github.com/mkrufky/libdvbtee","commit":"dc35145d0ada84a4b042f3b81ad49a3653f6a7fe"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU Lesser General Public License v2.1: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T13:55:21.386Z","repository_id":3401014,"created_at":"2025-08-21T13:55:21.386Z","updated_at":"2025-08-21T13:55:21.386Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["atsc","dvb","dvb-t","eit","hdhomerun","linuxtv","mpeg2","mpegts","network-stream","network-streams","parse","parser","pat","pmt","psip","streaming","transport-stream","tv","tv-apps","udp"],"created_at":"2024-08-02T05:00:50.776Z","updated_at":"2026-03-09T08:31:38.479Z","avatar_url":"https://github.com/mkrufky.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"## dvbtee \u0026 libdvbtee\n\n#### Introduction\n\nlibdvbtee is a stream parser and service information aggregator library for\nMPEG2 transport streams. The library includes a program service information\n(PSI) parser and support for various network streaming methods and is aware\nof the linux-dvb kernel API as well as HDHomeRun network streaming APIs.\n\nThe library contains enough functionality to power a full featured television\nmiddleware application, including the ability to acquire and stream data\nthrough UDP, TCP, HTTP, DMA and various other mechanisms.\n\n`libdvbtee_server` allows for these features to be controlled from an http\nsession or command line interface, and can be used to control multiple tuners.\n\n`libdvbtee_parser` is a library built from [libdvbtee](https://github.com/mkrufky/libdvbtee) sources for use by [node-dvbtee](https://www.npmjs.com/package/dvbtee)\n`libdvbtee_parser` is hosted within the same git development repository as `libdvbtee` and as such,\nthey share this same single README.md file.\n\nThe dvbtee executable application provides a variety of features, including:\nscanning, tuning, EPG browsing, receive incoming network streams,\nstream out network streams, manage multiple tuners, and more...\n\nThe server can be accessed either by telnet or http. The default port number\nis `64080`, but this is configurable. The `server_example` uses port number `62080`.\n\nWhen accessing the server via http, precede commands by / and arguments by =.\nWhen accessing the server via telnet, enter in the form 'command=argument'\nand press enter.\n\nMichael Ira Krufky  \nmkrufky at linuxtv dot org\n\n#### How to build / run\nThe recommended way to build libdvbtee is by using the `build-auto.sh` script:\n```\n./build-auto.sh\ndvbtee/dvbtee \u003c mpegfile.ts\n```\n\n#### Other build methods\nlibdvbtee was originally developed using the qmake build system for easy\nmulti-platform build support. libdvbtee still supports the qmake system,\nbut now uses autotools as the preferred build system for various reasons.\n```\nautoreconf --install\n./configure\nmake\ndvbtee/dvbtee \u003c mpegfile.ts\n```\n\nIf, for some odd reason, you want to build libdvbtee using the old version of\nthe table / descriptor decoder, specify --enable-olddecoder to configure\n```\nautoreconf --install\n./configure --enable-olddecoder\nmake\ndvbtee/dvbtee \u003c mpegfile.ts\n```\n\nIf you prefer to use qmake rather than autotools, use the following commands:\n```\nqmake -r\nmake\nLD_LIBRARY_PATH=libdvbtee:libdvbtee_server dvbtee/dvbtee \u003c mpegfile.ts\n```\n\nIf, for some odd reason, you want to build libdvbtee using the old version of\nthe table / descriptor decoder, specify CONFIG+=olddecoder to qmake\n```\nqmake -r CONFIG+=olddecoder\nmake\nLD_LIBRARY_PATH=libdvbtee:libdvbtee_server dvbtee/dvbtee \u003c mpegfile.ts\n```\n\nlibdvbtee depends on libdvbpsi for PSIP parsing.\nAlthough libdvbtee will build against older libdvbpsi releases,\na more recent build is required in order to provide\nall of libdvbtee's latest features, such as ATSC support.\n\nlibdvbtee's build system is capable of building and linking\nagainst the latest version of libdvbpsi by placing a copy of the\nlibdvbpsi repository in the top level of libdvbtee's source tree.\n\nRather than giving step-by-step instructions in this README,\nshell scripts are provided that will fetch the latest libdvbpsi sources,\nconfigure the build system, and build both libraries together.\n\nFor the integrated build of libdvbtee along with the latest version of libdvbpsi using autotools (recommended):\n```\n./build-auto.sh\ndvbtee/dvbtee \u003c mpegfile.ts\n```\n\nFor the integrated build of libdvbtee along with the latest version of libdvbpsi using qmake:\n```\n./build-qmake.sh\nLD_LIBRARY_PATH=libdvbtee:libdvbtee_server dvbtee/dvbtee \u003c mpegfile.ts\n```\n\n#### Command line arguments\n```\n-a      adapter id\n-A      (1 for ATSC, 2 for ClearQAM)\n-b      display bitrates \u0026 statistics\n-c      channel to tune /\n        comma (,) separated list of channels to scan /\n        scan minimum channel\n-C      channel to tune /\n        comma (,) separated list of channels to scan /\n        scan maximum channel\n-f      frontend id\n-F      filename to use as input\n-t      timeout\n-T      number of tuners (dvb adapters) allowed to use, 0 for all\n-s      scan, optional arg when using multiple tuners:\n        1 for speed, 2 for redundancy,\n        3 for speed AND redundancy,\n        4 for optimized speed / partial redundancy\n-S      server mode, optional arg 1 for command server,\n        2 for http stream server, 3 for both\n-i      pull local/remote tcp/udp port for data\n-n      bind to a specific network interface\n-I      request a service and its associated PES streams by its service id\n-E      enable EPG scan, optional arg to limit the number of EITs to parse\n-e      enable ETT extended text tables (EPG descriptions, ATSC only)\n-o      output filtered data, optional arg is a filename / URI, ie udp://127.0.0.1:1234\n-O      output options: (or-able) 1 = PAT/PMT, 2 = PES, 4 = PSIP, 8 = AUDIO, 16 = VIDEO\n-H      use a HdHomeRun device, optional arg to specify the device string\n-j      enable json output of decoded tables \u0026 descriptors\n-d      debug level\n-q      quiet most logging\n-h      display additional help\n```\n#### Example Usage\n\nTo tune to service id 1 of physical channel 33 and stream it to a udp port:\n```\n  dvbtee -c33 -I1 -oudp://192.168.1.100:1234\n```\n\nTo tune the second frontend of adapter 1 and stream the full TS of physical channel 44 to a tcp listener:\n```\n  dvbtee -c44 -otcp://192.168.1.200:5555\n```\n\nTo listen to a TCP port and stream to a UDP port:\n```\n  dvbtee -itcp://5555 -oudp://192.168.1.100:1234\n```\n\nTo parse a captured file and filter out the PSIP data, saving the PAT/PMT and PES streams to a file:\n```\n  dvbtee -Finput.ts -O3 -ofile://output.ts\n```\n\nTo parse a UDP stream for ten seconds:\n```\n  dvbtee -iudp://127.0.0.1:1234 -t10\n```\n\nTo scan for services using the first connected tuner:\n```\n  dvbtee -s -a0\n```\n\nTo scan for ClearQAM services using 5 tuners optimized for speed and partial redundancy:\n```\n  dvbtee -A2 -T5 -s4\n```\n\nTo scan for ATSC services using 2 HdHomeRun tuners optimized for speed and redundancy:\n```\n  dvbtee -A1 -H -T2 -s3\n```\n\nTo start a server using adapter 0:\n```\n  dvbtee -a0 -S\n```\n\nTo start a server using tuner1 of a specific HdHomeRun device (ex: ABCDABCD):\n```\n  dvbtee -H ABCDABCD-1 -S\n```\n\n#### Example output:\n\nTo scan a channel with JSON output enabled, the following command:\n```\n  dvbtee -s -c13 -j\n```\n...should generate output similar to the following:\n```\nscan channel 13...\nstore PAT: v0, ts_id: 2011\n           3 | 30\n           4 | 40\n           5 | 50\nstore PMT: v12, service_id 3, pcr_pid 49\n  es_pid | type\n      31 | 0x02 (Video MPEG-2) |\n      34 | 0x81 (Audio AC3 (ATSC)) | eng\n      35 | 0x81 (Audio AC3 (ATSC)) | spa\n      36 | 0x81 (Audio AC3 (ATSC)) | fre\nstore VCT: v6, ts_id 2011, b_cable_vct 0\n  channel | service_id | source_id | service_name\n     13.1 |          3 |         1 | WNET-HD | eng, spa, fre\n     13.2 |          4 |         2 | KIDS | eng, spa, fre\n     13.3 |          5 |         3 | V-Me | eng\nstore MGT: v6\n  table type |   pid  | ver | bytes\n    0x0000   | 0x1ffb |   6 | 187\n    0x0100   | 0x1d00 |   6 | 1103\n    0x0101   | 0x1d01 |   6 | 1105\n    0x0102   | 0x1d02 |   6 | 1132\n    0x0103   | 0x1d03 |   6 | 1305\n    0x0200   | 0x1e00 |   6 | 1197\n    0x0201   | 0x1e01 |   6 | 1220\n    0x0202   | 0x1e02 |   6 | 1157\n    0x0203   | 0x1e03 |   6 | 1213\nstore PMT: v12, service_id 5, pcr_pid 81\n  es_pid | type\n      51 | 0x02 (Video MPEG-2) |\n      54 | 0x81 (Audio AC3 (ATSC)) | eng\nstore PMT: v12, service_id 4, pcr_pid 65\n  es_pid | type\n      41 | 0x02 (Video MPEG-2) |\n      44 | 0x81 (Audio AC3 (ATSC)) | eng\n      45 | 0x81 (Audio AC3 (ATSC)) | spa\n      46 | 0x81 (Audio AC3 (ATSC)) | fre\n\n# channel 13, 213000000,\n13.1-WNET-HD:213000000:8VSB:49:52:3\n13.2-KIDS:213000000:8VSB:65:68:4\n13.3-V-Me:213000000:8VSB:81:84:5\nfound 3 services\n\nTSID#07db: [ { \"programs\": [ { \"number\": 3, \"pid\": 48 }, { \"number\": 4, \"pid\": 64 }, { \"number\": 5, \"pid\": 80 } ], \"tableId\": 0, \"tableName\": \"PAT\", \"tsId\": 2011, \"version\": 0 }, { \"pcrPid\": 49, \"program\": 3, \"streams\": [ { \"pid\": 49, \"streamType\": 2, \"streamTypeString\": \"Video MPEG-2\" }, { \"descriptors\": [ { \"bitRateCode\": 14, \"bsid\": 8, \"bsmod\": 0, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"eng\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"eng\" } ], \"descriptorTag\": 10 } ], \"pid\": 52, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"descriptors\": [ { \"bitRateCode\": 8, \"bsid\": 8, \"bsmod\": 0, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"spa\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"spa\" } ], \"descriptorTag\": 10 } ], \"pid\": 53, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"descriptors\": [ { \"bitRateCode\": 8, \"bsid\": 8, \"bsmod\": 2, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"fre\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"fre\" } ], \"descriptorTag\": 10 } ], \"pid\": 54, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" } ], \"tableId\": 2, \"tableName\": \"PMT\", \"version\": 12 }, { \"channels\": [ { \"accessControlled\": false, \"carrierFreq\": 0, \"descriptors\": [ { \"descriptorTag\": 161, \"serviceLocation\": [ { \"esPid\": 49, \"streamType\": 2, \"streamTypeString\": \"Video MPEG-2\" }, { \"esPid\": 52, \"lang\": \"eng\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"esPid\": 53, \"lang\": \"spa\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"esPid\": 54, \"lang\": \"fre\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" } ] } ], \"etmLocation\": 0, \"hidden\": false, \"hideGuide\": false, \"major\": 13, \"minor\": 1, \"modulation\": 4, \"outOfBand\": true, \"pathSelect\": true, \"program\": 3, \"serviceName\": \"WNET-HD\", \"serviceType\": 2, \"sourceId\": 1, \"tsId\": 2011 }, { \"accessControlled\": false, \"carrierFreq\": 0, \"descriptors\": [ { \"descriptorTag\": 161, \"serviceLocation\": [ { \"esPid\": 65, \"streamType\": 2, \"streamTypeString\": \"Video MPEG-2\" }, { \"esPid\": 68, \"lang\": \"eng\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"esPid\": 69, \"lang\": \"spa\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"esPid\": 70, \"lang\": \"fre\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" } ] } ], \"etmLocation\": 0, \"hidden\": false, \"hideGuide\": false, \"major\": 13, \"minor\": 2, \"modulation\": 4, \"outOfBand\": true, \"pathSelect\": true, \"program\": 4, \"serviceName\": \"KIDS\", \"serviceType\": 2, \"sourceId\": 2, \"tsId\": 2011 }, { \"accessControlled\": false, \"carrierFreq\": 0, \"descriptors\": [ { \"descriptorTag\": 161, \"serviceLocation\": [ { \"esPid\": 81, \"streamType\": 2, \"streamTypeString\": \"Video MPEG-2\" }, { \"esPid\": 84, \"lang\": \"eng\", \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" } ] } ], \"etmLocation\": 0, \"hidden\": false, \"hideGuide\": false, \"major\": 13, \"minor\": 3, \"modulation\": 4, \"outOfBand\": true, \"pathSelect\": true, \"program\": 5, \"serviceName\": \"V-Me\", \"serviceType\": 2, \"sourceId\": 3, \"tsId\": 2011 } ], \"isCableVCT\": false, \"tableId\": 200, \"tableName\": \"VCT\", \"tsId\": 2011, \"version\": 6 }, { \"tableId\": 199, \"tableName\": \"MGT\", \"tables\": [ { \"bytes\": 187, \"pid\": 8187, \"type\": 0, \"version\": 6 }, { \"bytes\": 1103, \"pid\": 7424, \"type\": 256, \"version\": 6 }, { \"bytes\": 1105, \"pid\": 7425, \"type\": 257, \"version\": 6 }, { \"bytes\": 1132, \"pid\": 7426, \"type\": 258, \"version\": 6 }, { \"bytes\": 1305, \"pid\": 7427, \"type\": 259, \"version\": 6 }, { \"bytes\": 1197, \"pid\": 7680, \"type\": 512, \"version\": 6 }, { \"bytes\": 1220, \"pid\": 7681, \"type\": 513, \"version\": 6 }, { \"bytes\": 1157, \"pid\": 7682, \"type\": 514, \"version\": 6 }, { \"bytes\": 1213, \"pid\": 7683, \"type\": 515, \"version\": 6 } ], \"version\": 6 }, { \"pcrPid\": 81, \"program\": 5, \"streams\": [ { \"descriptors\": [ { \"CaptionService\": [ { \"digital_cc\": \"708\", \"easyReader\": false, \"iso639lang\": \"eng\", \"line21field\": true, \"serviceNumber\": 1, \"wideAspectRatio\": false } ], \"descriptorTag\": 134 } ], \"pid\": 81, \"streamType\": 2, \"streamTypeString\": \"Video MPEG-2\" }, { \"descriptors\": [ { \"bitRateCode\": 10, \"bsid\": 8, \"bsmod\": 0, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"eng\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"eng\" } ], \"descriptorTag\": 10 } ], \"pid\": 84, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" } ], \"tableId\": 2, \"tableName\": \"PMT\", \"version\": 12 }, { \"pcrPid\": 65, \"program\": 4, \"streams\": [ { \"descriptors\": [ { \"CaptionService\": [ { \"digital_cc\": \"708\", \"easyReader\": false, \"iso639lang\": \"eng\", \"line21field\": true, \"serviceNumber\": 1, \"wideAspectRatio\": false } ], \"descriptorTag\": 134 } ], \"pid\": 65, \"streamType\": 2, \"streamTypeString\": \"Video MPEG-2\" }, { \"descriptors\": [ { \"bitRateCode\": 14, \"bsid\": 8, \"bsmod\": 0, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"eng\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"eng\" } ], \"descriptorTag\": 10 } ], \"pid\": 68, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"descriptors\": [ { \"bitRateCode\": 8, \"bsid\": 8, \"bsmod\": 0, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"spa\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"spa\" } ], \"descriptorTag\": 10 } ], \"pid\": 69, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" }, { \"descriptors\": [ { \"bitRateCode\": 8, \"bsid\": 8, \"bsmod\": 2, \"description\": \"\", \"descriptorTag\": 129, \"fullSvc\": true, \"language\": \"fre\", \"numChannels\": \"2/0\", \"sampleRate\": \"48\", \"surroundMode\": \"Not indicated\" }, { \"ISO639Lang\": [ { \"audioType\": 0, \"language\": \"fre\" } ], \"descriptorTag\": 10 } ], \"pid\": 70, \"streamType\": 129, \"streamTypeString\": \"Audio AC3 (ATSC)\" } ], \"tableId\": 2, \"tableName\": \"PMT\", \"version\": 12 } ]\n```\n\n#### Server commands\n\n```\ntuner           specify tuner id\nfeeder          specify feeder id\nscan            scan for services, optional arg comma (,) separated list of channels to scan\nscanepg         same as 'scan' with EPG data collection enabled during scan\nstartscan       same as 'scan' but asynchronous\nstartscanepg    combo of 'scanepg' and 'startscan'\ntune            tune to a channel or service, ie:\n                tune=33 (full mux) / tune=44~3 (svc id 3)\nchannels        list channels\nchannel         tune physical channel (unsafe - use tune instead)\nservice         select service (unsafe - use tune instead)\nstream          add output file / tcp / udp / http stream, ie:\n                stream=udp:192.168.1.100:1234\n                stream=tcp:192.168.1.200:5555\n                stream=file:output.ts\n                stream (over http with no arg will begin streaming to current socket)\nepg             dump collected EPG data\nxmltv           dump collected EPG data in XMLTV format\nstop            stop the tuner\nstopoutput      stop the tuner and output\ncheck           display debug info if debug is enabled\ndebug           enable debug\nparser          enable / disable the parser for data shovel\nlisten          listen for TS on a TCP or UDP port\nsave            save scanned channels\nquit            stop the server and exit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkrufky%2Flibdvbtee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkrufky%2Flibdvbtee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkrufky%2Flibdvbtee/lists"}