良い一日。
Linuxで衛星のエンコードされていないTVチャネルの受信を設定し、それらをローカルネットワークにブロードキャストすることについてお伝えしたいと思います。
ソースデータは、ある程度調整された衛星放送受信アンテナ(たとえば
www.lyngsat.com/amos2.html )とlinuxを実行しているコンピューターの存在であると想定しています(私の場合、Slackwareがどのディストリビューションであっても)。 このタスクは私たちの時代に非常に興味深く、関連性があります。
理論のビット
信号を受信するには、次のプログラムが必要です。
scan-トランスポンダーのチャネルをスキャンします。
szap-タンポンポンからのデータの受信を確認します。
vlc-受信およびブロードキャスト用。
最初の2つのユーティリティは、linuxtv-dvb-appsパッケージに含まれています。 それらをインストールするには、配布キットのパッケージマネージャーを使用するか、
LinuxTVにアクセスしてソースをダウンロードしてコンパイルします。
vlcは、パッケージマネージャーを使用して、または公式の
VLC Webサイトからインストールすることもできます。
frec-周波数またはトランスポンダー
sr(シンボルレート)-シンボルレート
fec-エラー修正頻度
V、H、L、R-分極
受信できる信号は、CバンドとKuバンド、直線偏光(v、h)および円偏光(l、r)になります。
信号をキャッチ
まず、システムでdvbカードが定義されているかどうかを確認する必要があります。
見つけるのは非常に簡単です
。lspciを実行して、同様の行を見つけてください。
03:05.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
03:06.0 Network controller: Techsan Electronics Co Ltd B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card (rev 02)
03:05.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
03:05.2 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
03:05.4 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (rev 05)
1番目のデバイス-skystar3
2番目のデバイス-skystar2
3番目、4番目、5番目のデバイス-Twinhan 1027
これは私にとってどのように見えるかです:
root@sat:/# lspci
00:00.0 Host bridge: ATI Technologies Inc Unknown device 7910
00:01.0 PCI bridge: ATI Technologies Inc Unknown device 7912
00:07.0 PCI bridge: ATI Technologies Inc Unknown device 7917
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)
00:14.0 SMBus: ATI Technologies Inc SB600 SMBus (rev 14)
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE
00:14.2 Audio device: ATI Technologies Inc SB600 Azalia
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge
00:14.4 PCI bridge: ATI Technologies Inc SB600 PCI to PCI Bridge
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:05.0 VGA compatible controller: ATI Technologies Inc Radeon X1200 Series
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
03:05.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
03:06.0 Network controller: Techsan Electronics Co Ltd B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card (rev 02)
次のステップは、これらのdvbカードのカーネルモジュールを起動することです。
必要なモジュールはdvbカードのチップセットに依存しますが、dvb_coreとdvb_pllの2つの必須モジュールがあります。
SkyStar 2の場合:b2c2_flexcop
SkyStar 3の場合:budjet
Twinhan 1027の場合:cx88_dvb
100のうち99のケースでは、必要なモジュールがシステム起動時にロードされました。
lsmodをチェックするのが非常に簡単かどうか
grep dvbこれは同じシステムでどのように見えるかです:
root@sat:/# lsmod | grep dvb
dvb_pll 15876 2 b2c2_flexcop,lgh06xf
dvb_core 74280 5 b2c2_flexcop,budget,lgdt330x,budget_core,stv0299
モジュールが正常に起動すると、/ dev / dvbディレクトリに新しいデバイスが表示されます。
root@sat:/# ls /dev/dvb/
adapter0/ adapter1/
さて、信号をキャッチする必要があります。
まず第一に、利用可能なトランスポンダーのいずれかをスキャンし、受信できるチャネルを見つける必要があります。
私たちがインストールした
スキャンユーティリティが役立ちます。
トランスポンダーをスキャンし、利用可能なチャンネルに関する情報を標準出力ストリームに提供します。
パラメーターから、構成ファイルへのパス、スキャンするdvbアダプターの番号を転送し、円偏光の周波数を手動で設定する必要があります。
スキャン構成ファイルは、
lyngsat.comの情報を使用して簡単に作成できます。 その上で、設定した程度まで衛星を見つけ、この衛星からトランスポンダーを選択する必要があります。
この例
www.lyngsat.com/amos2.htmlでは、トランスポンダー(freq)10759、水平(H)偏光、シンボルレート(sr)30000およびエラー修正周波数(fec)3/4を選択します。 スキャン用の構成ファイルは次のようになります。
S 10759000 H 30000000 3/4
次のように使用します。
root@sat:/etc/sat/test# scan -a 0 /path/to/trans.conf
scanning /path/to/trans.conf
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 10759000 H 30000000 3
>>> tune to: 10759:h:0:30000
Network Name 'NET'
0x0000 0x0001: pmt_pid 0x0020 Spacecom -- KIEV STB (running, scrambled)
0x0000 0x0002: pmt_pid 0x0030 Spacecom -- M1 (running, scrambled)
0x0000 0x0003: pmt_pid 0x0040 Spacecom -- TONIS (running, scrambled)
0x0000 0x0005: pmt_pid 0x0060 Spacecom -- ICTV (running, scrambled)
0x0000 0x0006: pmt_pid 0x0070 Spacecom -- M2 (running, scrambled)
0x0000 0x0008: pmt_pid 0x1079 Spacecom -- NEWS 24 (running, scrambled)
0x0000 0x0009: pmt_pid 0x0200 Spacecom -- Radio Antoshka (running, scrambled)
0x0000 0x000a: pmt_pid 0x0100 Spacecom -- MTV UKRAINE (running, scrambled)
0x0000 0x000b: pmt_pid 0x0080 Spacecom -- QTV (running, scrambled)
dumping lists (9 services)
KIEV STB:10759:h:0:30000:33:34:1
M1:10759:h:0:30000:49:50:2
TONIS:10759:h:0:30000:65:66:3
ICTV:10759:h:0:30000:97:98:5
M2:10759:h:0:30000:113:114:6
NEWS 24:10759:h:0:30000:4194:4195:8
Radio Antoshka:10759:h:0:30000:0:513:9
MTV UKRAINE:10759:h:0:30000:257:258:10
QTV:10759:h:0:30000:129:130:11
Done.
円偏光の場合、値10750.10750.0の-lスイッチを追加する必要があります
scan -a 0 /path/to/trans.conf -l 10750,10750,0
データを受信するようにカードを設定してみましょう。 このためには、szapの構成ファイルが必要です。 取得するのは非常に簡単です:
root@sat:~# scan -a 0 ~/trans36.conf -l 10750,10750,0 > ~/channels.conf
root@sat:~# cat ./channels.conf
Sport 1:11727:h:0:27500:101:201:1
Sport 2:11727:h:0:27500:102:202:2
First Automotive:11727:h:0:27500:103:203:3
BIZ TV:11727:h:0:27500:104:204:4
Che-Pe_INFO:11727:h:0:27500:105:205:5
TBi:11727:h:0:27500:106:206:6
TV3:11727:h:0:27500:107:207:7
CHANSON:11727:h:0:27500:108:208:8
TOPSHOP TV:11727:h:0:27500:109:209:9
Expert test:11727:h:0:27500:110:210:10
Football test:11727:h:0:27500:111:211:11
Engineer_1:11727:h:0:27500:114:214:14
次に、この構成ファイルをszapにスリップします。
root@sat:~# szap -c ./channels.conf -n 1 -x -l 10750,10750,0
reading channels from file './channels.conf'
zapping to 1 'Sport 1':
sat 0, frequency = 11727 MHz H, symbolrate 27500000, vpid = 0x0065, apid = 0x00c9
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 00 | signal 6262 | snr fcfc | ber 00000000 | unc 00000000 |
status 1f | signal 4d4d | snr 3535 | ber 00000000 | unc 00000006 | FE_HAS_LOCK
「FE_HAS_LOCK」という碑文が表示された場合、すべてが正常であり、正しく調整されています。
szapのパラメーターは、スキャンのパラメーターに似ています。
-c /path/to/channels.conf-チャネルを含む構成ファイルへのパス。
-n Xは、channels.confファイルのチャネル番号です。Xは1から始まる番号です。
-x-szapがロックされるとすぐに終了します。
-l 10750.10750.0-円偏波アンテナに必要です。
ネットワークで放送します
そのため、トランスポンダーで使用可能なチャネルのリストを取得しました。
周波数、偏光、および目的のチャネルのpid(各行の最後の桁、チャネルm1 = 2のpid)がわかったので、ストリームを直接受信することができます。
これを行うには、全能のvlcプレーヤーを使用します。
起動時に渡されるパラメーターは多数あり、毎回入力するのは無意味です。vlc起動コマンド全体をシェル実行可能ファイルに書き込むことをお勧めします。
#!/bin/bash
/usr/bin/vlc -vvv --color --ttl 12 --ts-es-id-pid --dvb-adapter=0 --programs=1,2,3,6,8,10,11 dvb:
--dvb-frequency=10759000 --dvb-srate=30000000 --dvb-voltage=18 --dvb-fec=9 -d --sout '#duplicate{
dst="standard{access=http,mux=ts,url=0.0.0.0:8011}",select="program=1"
dst="standard{access=http,mux=ts,url=0.0.0.0:8012}",select="program=2"
dst="standard{access=http,mux=ts,url=0.0.0.0:8013}",select="program=3"
dst="standard{access=http,mux=ts,url=0.0.0.0:8014}",select="program=6"
dst="standard{access=http,mux=ts,url=0.0.0.0:8015}",select="program=8"
dst="standard{access=http,mux=ts,url=0.0.0.0:8016}",select="program=10"
dst="standard{access=http,mux=ts,url=0.0.0.0:8017}",select="program=11"}'
パラメーターについて少し:
-vvv-デバッグに役立つ詳細なメッセージ出力。
--color-メッセージ出力を色分けし、重要なメッセージを赤で強調表示します。-vvvを使用すると非常に便利です。
--dvb-adapter-コンピュータに複数のインストールがある場合、/ dev / dvb /からのdvbアダプタ番号。
--programs-受信する必要があるチャネルのPID。
-d-デーモンとして動作します。
--dvb-fec-fec 1/2 9の値-自動的に決定されます
dst = "標準{access = http、mux = ts、url = 0.0.0.0:8011}"、select = "program = 1"
これらの各行は、チャネルpidをコンピューターポートに接続します。 この場合、pid 1のチャネルはポート8011でブロードキャストされます。
確認するだけです。
クライアントから始めて見てみましょう:
mplayer h_t_t_p://10.16.0.12:8012
