libdvbtee は、MPEG2 トランスポート ストリーム用のストリーム パーサーおよびサービス情報集約ライブラリです。このライブラリには、プログラム サービス情報 (PSI) パーサーとさまざまなネットワーク ストリーミング メソッドのサポートが含まれており、linux-dvb カーネル API および HDHomeRun ネットワーク ストリーミング API を認識します。
このライブラリには、UDP、TCP、HTTP、DMA、およびその他のさまざまなメカニズムを通じてデータを取得およびストリーミングする機能など、フル機能のテレビ ミドルウェア アプリケーションを強化するのに十分な機能が含まれています。
libdvbtee_server
使用すると、これらの機能を http セッションまたはコマンド ライン インターフェイスから制御できるようになり、複数のチューナーの制御に使用できます。
libdvbtee_parser
、node-dvbtee で使用するために libdvbtee ソースから構築されたライブラリです。 libdvbtee_parser
libdvbtee
と同じ git 開発リポジトリ内でホストされているため、同じ単一の README.md ファイルを共有します。
dvbtee 実行可能アプリケーションは、スキャン、チューニング、EPG ブラウズ、受信ネットワーク ストリームの受信、ネットワーク ストリームのストリーミング出力、複数のチューナーの管理などを含むさまざまな機能を提供します。
サーバーには Telnet または http でアクセスできます。デフォルトのポート番号は64080
ですが、これは構成可能です。 server_example
ポート番号62080
を使用します。
http 経由でサーバーにアクセスする場合は、コマンドの前に / を付け、引数の前に = を付けます。 Telnet 経由でサーバーにアクセスする場合は、「command=argument」の形式で入力して Enter キーを押します。
マイケル・アイラ・クラフキー
linuxtv dot org の mkrufky
libdvbtee をビルドする推奨方法は、 build-auto.sh
スクリプトを使用することです。
./build-auto.sh
dvbtee/dvbtee < mpegfile.ts
libdvbtee はもともと、簡単なマルチプラットフォーム ビルド サポートのために qmake ビルド システムを使用して開発されました。 libdvbtee は引き続き qmake システムをサポートしていますが、さまざまな理由から現在は autotools を優先ビルド システムとして使用しています。
autoreconf --install
./configure
make
dvbtee/dvbtee < mpegfile.ts
何らかの奇妙な理由で、古いバージョンのテーブル/記述子デコーダーを使用して libdvbtee をビルドしたい場合は、 --enable-olddecoder を指定して構成します
autoreconf --install
./configure --enable-olddecoder
make
dvbtee/dvbtee < mpegfile.ts
autotools ではなく qmake を使用したい場合は、次のコマンドを使用します。
qmake -r
make
LD_LIBRARY_PATH=libdvbtee:libdvbtee_server dvbtee/dvbtee < mpegfile.ts
何らかの奇妙な理由で、古いバージョンのテーブル/記述子デコーダーを使用して libdvbtee をビルドしたい場合は、qmake に CONFIG+=olddecoder を指定します。
qmake -r CONFIG+=olddecoder
make
LD_LIBRARY_PATH=libdvbtee:libdvbtee_server dvbtee/dvbtee < mpegfile.ts
libdvbtee は、PSIP 解析のために libdvbpsi に依存します。 libdvbtee は古い libdvbpsi リリースに対してビルドされますが、ATSC サポートなどの libdvbtee の最新機能をすべて提供するには、より新しいビルドが必要です。
libdvbtee のビルド システムは、libdvbpsi リポジトリのコピーを libdvbtee のソース ツリーの最上位に配置することで、libdvbpsi の最新バージョンを構築し、リンクすることができます。
この README では段階的な手順を説明するのではなく、最新の libdvbpsi ソースをフェッチし、ビルド システムを構成し、両方のライブラリを一緒にビルドするシェル スクリプトが提供されています。
autotools を使用した libdvbtee と最新バージョンの libdvbpsi の統合ビルドの場合 (推奨):
./build-auto.sh
dvbtee/dvbtee < mpegfile.ts
qmake を使用した libdvbtee と最新バージョンの libdvbpsi の統合ビルドの場合:
./build-qmake.sh
LD_LIBRARY_PATH=libdvbtee:libdvbtee_server dvbtee/dvbtee < mpegfile.ts
-a adapter id
-A (1 for ATSC, 2 for ClearQAM)
-b display bitrates & statistics
-c channel to tune /
comma (,) separated list of channels to scan /
scan minimum channel
-C channel to tune /
comma (,) separated list of channels to scan /
scan maximum channel
-f frontend id
-F filename to use as input
-t timeout
-T number of tuners (dvb adapters) allowed to use, 0 for all
-s scan, optional arg when using multiple tuners:
1 for speed, 2 for redundancy,
3 for speed AND redundancy,
4 for optimized speed / partial redundancy
-S server mode, optional arg 1 for command server,
2 for http stream server, 3 for both
-i pull local/remote tcp/udp port for data
-n bind to a specific network interface
-I request a service and its associated PES streams by its service id
-E enable EPG scan, optional arg to limit the number of EITs to parse
-e enable ETT extended text tables (EPG descriptions, ATSC only)
-o output filtered data, optional arg is a filename / URI, ie udp://127.0.0.1:1234
-O output options: (or-able) 1 = PAT/PMT, 2 = PES, 4 = PSIP, 8 = AUDIO, 16 = VIDEO
-H use a HdHomeRun device, optional arg to specify the device string
-j enable json output of decoded tables & descriptors
-d debug level
-q quiet most logging
-h display additional help
物理チャネル 33 のサービス ID 1 に調整して、udp ポートにストリーミングするには、次の手順を実行します。
dvbtee -c33 -I1 -oudp://192.168.1.100:1234
アダプター 1 の 2 番目のフロントエンドを調整し、物理チャネル 44 の完全な TS を TCP リスナーにストリーミングするには、次のようにします。
dvbtee -c44 -otcp://192.168.1.200:5555
TCP ポートをリッスンして UDP ポートにストリーミングするには:
dvbtee -itcp://5555 -oudp://192.168.1.100:1234
キャプチャされたファイルを解析して PSIP データを除外し、PAT/PMT および PES ストリームをファイルに保存するには、次の手順を実行します。
dvbtee -Finput.ts -O3 -ofile://output.ts
UDP ストリームを 10 秒間解析するには:
dvbtee -iudp://127.0.0.1:1234 -t10
最初に接続されたチューナーを使用してサービスをスキャンするには:
dvbtee -s -a0
速度と部分冗長性が最適化された 5 つのチューナーを使用して ClearQAM サービスをスキャンするには:
dvbtee -A2 -T5 -s4
速度と冗長性が最適化された 2 つの HdHomeRun チューナーを使用して ATSC サービスをスキャンするには:
dvbtee -A1 -H -T2 -s3
アダプター 0 を使用してサーバーを起動するには、次の手順を実行します。
dvbtee -a0 -S
特定の HdHomeRun デバイスのチューナー 1 を使用してサーバーを起動するには (例: ABCDABCD):
dvbtee -H ABCDABCD-1 -S
JSON 出力を有効にしてチャネルをスキャンするには、次のコマンドを実行します。
dvbtee -s -c13 -j
...次のような出力が生成されるはずです。
scan channel 13...
store PAT: v0, ts_id: 2011
3 | 30
4 | 40
5 | 50
store PMT: v12, service_id 3, pcr_pid 49
es_pid | type
31 | 0x02 (Video MPEG-2) |
34 | 0x81 (Audio AC3 (ATSC)) | eng
35 | 0x81 (Audio AC3 (ATSC)) | spa
36 | 0x81 (Audio AC3 (ATSC)) | fre
store VCT: v6, ts_id 2011, b_cable_vct 0
channel | service_id | source_id | service_name
13.1 | 3 | 1 | WNET-HD | eng, spa, fre
13.2 | 4 | 2 | KIDS | eng, spa, fre
13.3 | 5 | 3 | V-Me | eng
store MGT: v6
table type | pid | ver | bytes
0x0000 | 0x1ffb | 6 | 187
0x0100 | 0x1d00 | 6 | 1103
0x0101 | 0x1d01 | 6 | 1105
0x0102 | 0x1d02 | 6 | 1132
0x0103 | 0x1d03 | 6 | 1305
0x0200 | 0x1e00 | 6 | 1197
0x0201 | 0x1e01 | 6 | 1220
0x0202 | 0x1e02 | 6 | 1157
0x0203 | 0x1e03 | 6 | 1213
store PMT: v12, service_id 5, pcr_pid 81
es_pid | type
51 | 0x02 (Video MPEG-2) |
54 | 0x81 (Audio AC3 (ATSC)) | eng
store PMT: v12, service_id 4, pcr_pid 65
es_pid | type
41 | 0x02 (Video MPEG-2) |
44 | 0x81 (Audio AC3 (ATSC)) | eng
45 | 0x81 (Audio AC3 (ATSC)) | spa
46 | 0x81 (Audio AC3 (ATSC)) | fre
# channel 13, 213000000,
13.1-WNET-HD:213000000:8VSB:49:52:3
13.2-KIDS:213000000:8VSB:65:68:4
13.3-V-Me:213000000:8VSB:81:84:5
found 3 services
TSID#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 } ]
tuner specify tuner id
feeder specify feeder id
scan scan for services, optional arg comma (,) separated list of channels to scan
scanepg same as 'scan' with EPG data collection enabled during scan
startscan same as 'scan' but asynchronous
startscanepg combo of 'scanepg' and 'startscan'
tune tune to a channel or service, ie:
tune=33 (full mux) / tune=44~3 (svc id 3)
channels list channels
channel tune physical channel (unsafe - use tune instead)
service select service (unsafe - use tune instead)
stream add output file / tcp / udp / http stream, ie:
stream=udp:192.168.1.100:1234
stream=tcp:192.168.1.200:5555
stream=file:output.ts
stream (over http with no arg will begin streaming to current socket)
epg dump collected EPG data
xmltv dump collected EPG data in XMLTV format
stop stop the tuner
stopoutput stop the tuner and output
check display debug info if debug is enabled
debug enable debug
parser enable / disable the parser for data shovel
listen listen for TS on a TCP or UDP port
save save scanned channels
quit stop the server and exit