「DVB-T」の版間の差分
(en:DVB-Tへの転送ページ) |
|||
1行目: | 1行目: | ||
+ | [[Category:音声/動画]] |
||
− | #redirect[[en:DVB-T]] |
||
+ | [[Category:他のハードウェア]] |
||
+ | [[en:DVB-T]] |
||
+ | {{Related articles start}} |
||
+ | {{Related4|DVB-S}} |
||
+ | {{Related|LIRC}} |
||
+ | {{Related|RTL-SDR}} |
||
+ | {{Related articles end}} |
||
+ | |||
+ | [https://en.wikipedia.org/wiki/DVB-T DVB-T] は地上デジタルビデオ放送に使われている国際規格です。DVB-T は様々なハードウェアを使って受信することができますが、この記事では RTL2832U チップセットを搭載した DVB-T USB ドングルだけを扱います ([[RTL-SDR]] による安価なソフトウェア無線としても広く使われています)。 |
||
+ | |||
+ | ==ドライバー== |
||
+ | |||
+ | 使用するメインのドライバーは {{Ic|dvb_usb_rtl28xxu}} です。最新カーネルに含まれています。ドライバーが[[カーネルモジュール|ロード]]されていない場合、手動でロードしてください: |
||
+ | # modprobe dvb_usb_rtl28xxu |
||
+ | |||
+ | {{Ic|rtl2832}} や {{Ic|rtl2830}} もロードする必要があるかもしれません: |
||
+ | # modprobe rtl2830 |
||
+ | # modprobe rtl2832 |
||
+ | |||
+ | {{Warning|[[RTL-SDR]] をインストールしている場合、上記のドライバーと衝突するので、ドライバーはブラックリストに入れられます。ドライバーをロードする前にブラックリストに追加されていないか確認して、存在する場合は削除してください。ブラックリストファイルはデフォルトでは {{Ic|/etc/modprobe.d/rtlsdr.conf}} に存在します。}} |
||
+ | |||
+ | デバイスを接続すると、{{Ic|dmesg}} で以下のように確認できるはずです: |
||
+ | |||
+ | [ 4009.326338] usb 7-5: new high-speed USB device number 4 using ehci-pci |
||
+ | [ 4009.466712] usb 7-5: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state |
||
+ | [ 4009.531594] usb 7-5: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer |
||
+ | [ 4009.531613] DVB: registering new adapter (Realtek RTL2832U reference design) |
||
+ | [ 4009.534554] usb 7-5: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))... |
||
+ | [ 4009.534627] r820t 4-001a: creating new instance |
||
+ | [ 4009.546177] r820t 4-001a: Rafael Micro r820t successfully identified |
||
+ | [ 4009.552681] Registered IR keymap rc-empty |
||
+ | [ 4009.552783] input: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb7/7-5/rc/rc1/input20 |
||
+ | [ 4009.552854] rc1: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb7/7-5/rc/rc1 |
||
+ | [ 4009.553275] input: MCE IR Keyboard/Mouse (dvb_usb_rtl28xxu) as /devices/virtual/input/input21 |
||
+ | [ 4009.554466] rc rc1: lirc_dev: driver ir-lirc-codec (dvb_usb_rtl28xxu) registered at minor = 0 |
||
+ | [ 4009.554474] usb 7-5: dvb_usb_v2: schedule remote query interval to 400 msecs |
||
+ | [ 4009.565930] usb 7-5: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected |
||
+ | |||
+ | {{Note|上記の例ではドングルには R820T チューナーが搭載されているのが確認できますが、よく使われているチューナーは他にも存在します。また、赤外線センサーデバイスが使える場合、正しく設定すればリモコンで操作することが可能です。詳しくは [[LIRC]] を見てください。}} |
||
+ | |||
+ | さらに、{{Ic|/dev/dvb/adapter0}} 下でアダプタデバイスが確認できれば問題ありません。 |
||
+ | |||
+ | ==ユーティリティ== |
||
+ | |||
+ | {{Pkg|linuxtv-dvb-apps}} パッケージに様々な DVB ユーティリティが入っています。 |
||
+ | |||
+ | ===スキャン=== |
||
+ | |||
+ | {{AUR|w_scan}} を使うことでチャンネルの自動スキャンが行えます (設定不要)。プログラムをインストールしたら次を実行してください: |
||
+ | |||
+ | # w_scan -ft -c [country_code] > ~/channels.conf |
||
+ | |||
+ | 国名コードがわからない場合、以下を実行することでコードのリストを確認できます: |
||
+ | # w_scan -c ? |
||
+ | |||
+ | 高度なスキャンオプションは [[en2:DVB-S#Scanning channels|DVB-S#Scanning channels]] に記載されています。''w_scan'' の [http://dev.man-online.org/man2/w_scan/ man ページ] や [http://linuxtv.org/wiki/index.php/W_scan ドキュメント] も参照してください。 |
||
+ | |||
+ | ==クライアント== |
||
+ | |||
+ | プレイヤーを起動する前あるいは後に、設定ファイルや {{ic|xset}} コマンドを使って[[XScreenSaver|ビデオや TV の再生中にスクリーンセーバーを無効化する方法]]を見てください。{{Pkg|xscreensaver}} をインストールしている場合、{{ic|xset}} ではなく {{ic|xscreensaver-command}} を使ってコマンドラインからスクリーンセーバーを有効化・無効化する必要があります。 |
||
+ | |||
+ | ===VLC=== |
||
+ | |||
+ | 以下のコマンドで [[VLC]] を使って DVB-T ストリームを表示できます: |
||
+ | |||
+ | $ vlc dvb://frequency=543000000 |
||
+ | |||
+ | 周波数は Hz 単位でセットします。あなたの地域で送波に使われている基準周波数を指定する必要があります。また、復調方式は自由に指定することができます。{{ic|dvb}} の代わりに {{ic|dvb-t}} や {{ic|dvb-t2}} などが利用可能です。 |
||
+ | |||
+ | VLC では様々なコマンドライン引数を使うことができ、例えば、他のプログラムに同調したい場合: |
||
+ | |||
+ | $ vlc dvb://frequency=543000000 :program=3 |
||
+ | |||
+ | ===MPlayer=== |
||
+ | |||
+ | DVB をストリーミングするとき、MPlayer は {{Ic|~/.mplayer/channels.conf}} にチャンネルの設定ファイルを必要とします。[[#スキャン]]の指示に従ってファイルを生成してください。ただし、コマンドで {{Ic|-M}} フラグを使って MPlayer から利用できるフォーマットで生成するようにしてください。{{Ic|w_scan}} を使用する場合: |
||
+ | |||
+ | $ w_scan -ft -c [country_code] -M > ~/.mplayer/channels.conf |
||
+ | |||
+ | {{ic|mplayer dvb://}} を実行して設定をテストしてください。最初のチャンネルが再生されるはずです。再生されない場合、ストリームを受信するために {{Ic|-demuxer lavf}} や {{Ic|-demuxer mpegts}} を使う必要があります。 |
||
+ | |||
+ | 設定が上手くいったら次を実行: |
||
+ | |||
+ | $ mplayer dvb://"STREAM NAME" |
||
+ | |||
+ | {{Ic|STREAM NAME}} はチャンネルの設定ファイルに記載されている適当なチャンネル名に置き換えてください。 |
||
+ | |||
+ | {{Warning|MPlayer は {{ic|/}} など Linux の特殊記号を名前に含んでいるチャンネルをコマンドラインから再生することはできません。ただし、{{ic|~/.mplayer/channels.conf}} を編集することで手動で名前を変更することができます。}} |
||
+ | |||
+ | ==== チャンネルセレクタ ==== |
||
+ | |||
+ | 以下の {{AUR|lstv}} スクリプトは {{ic|~/.mplayer/channels.conf}} ファイルからデータを読み込んで、チャンネルの番号付きリストを表示します。スクリプトによって表示された番号をコマンドラインで使うだけで、チャンネルの名前を入力しなくてもチャンネルを視聴することができるようになります。例: {{ic|lstv 3}}。スクリプトによって表示されるチャンネル番号はチューニング設定の行番号と対応しています。また、''mplayer'' を起動する前にスクリプトはディスプレイの省電力機能とスクリーンセーバーを無効化して、スクリプトを終了した後に、もういちど有効化します。スクリプトのスクリーンセーバー管理を無効化したいときは [[MPlayer]] の前後にある {{ic|xset ...;}} を削除してください。 |
||
+ | |||
+ | {{hc|/usr/local/bin/lstv|<nowiki> |
||
+ | #!/bin/bash |
||
+ | if [ "$1" ];then |
||
+ | CC='^[0-9]+$'; |
||
+ | if ! [[ "$@" =~ $CC ]];then echo Is not a channel number!; |
||
+ | else |
||
+ | ## |
||
+ | awk -F':' -v AA="$1" '//{ZZ++; |
||
+ | if(AA == ZZ)system("xset -dpms s off;mplayer dvb://""\""$1"\";xset +dpms s on")} |
||
+ | END{if(AA > ZZ)printf "The highest channel number is: "ZZ"\n"}' "$HOME/.mplayer/channels.conf" |
||
+ | ## |
||
+ | fi; |
||
+ | else |
||
+ | awk -F':' '// { ZZ++; printf ZZ " | " $1 "\n"}' "$HOME/.mplayer/channels.conf" |
||
+ | fi; |
||
+ | </nowiki>}} |
||
+ | |||
+ | {{Note|1= |
||
+ | * {{ic|channels.conf}} ファイルは次のコマンドで作成できます: {{ic|w_scan -ft -c ''country_code'' -C UTF-8 -M -E 0 -O 0 > ~/.mplayer/channels.conf}}。 |
||
+ | * If the list of channels is too long then you can use something like {{ic|<nowiki>lstv | less</nowiki>}} and search for channels name by pressing {{ic|/}} and writing its name. When found press {{ic|q}} for exiting of [http://unixhelp.ed.ac.uk/CGI/man-cgi?less less] and use the channel associated number with {{AUR|lstv}}. |
||
+ | * 動画の再生に問題が発生するときは [https://bbs.archlinux.org/viewtopic.php?id=57650 Arch Linux Forum] を見てください。 |
||
+ | }} |
||
+ | {{Warning|同じ名前のチャンネルが複数存在する場合、''mplayer'' はリストのどちらか近いほうしか再生しません。}} |
||
+ | |||
+ | ===ffmpeg=== |
||
+ | |||
+ | [[FFmpeg]] では DVB-T の MPEG ストリームを入力に指定できますが、{{Ic|tzap}} が必要になります。 |
||
+ | |||
+ | {{Note|This might not necessarily be the case, if a better method is known, please update.}} |
||
+ | |||
+ | まず、{{Ic|w_scan}} を使って tzap 互換の {{Ic|channels.conf}} ファイルを生成してください: |
||
+ | |||
+ | $ w_scan -ft -A1 -X > ~/.tzap/channels.conf |
||
+ | |||
+ | そして、次を実行: |
||
+ | |||
+ | $ tzap -r "CHANNEL NAME" |
||
+ | |||
+ | 正しく設定されていれば、以下のように出力されます: |
||
+ | |||
+ | $ tzap -r "CHANNEL NAME" |
||
+ | using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' |
||
+ | reading channels from file '/home/user/.tzap/channels.conf' |
||
+ | Version: 5.10 FE_CAN { DVB-T } |
||
+ | tuning to 506000000 Hz |
||
+ | video pid 0x0a21, audio pid 0x0a22 |
||
+ | status 00 | signal 0000 | snr 0000 | ber 0000ffff | unc 00007fbd | |
||
+ | status 1f | signal 0000 | snr 0126 | ber 00000000 | unc 00007fbd | FE_HAS_LOCK |
||
+ | status 1f | signal 0000 | snr 0129 | ber 0000000f | unc 00007fbd | FE_HAS_LOCK |
||
+ | status 1f | signal 0000 | snr 0120 | ber 00000003 | unc 00007fbd | FE_HAS_LOCK |
||
+ | status 1f | signal 0000 | snr 0125 | ber 00000011 | unc 00007fbd | FE_HAS_LOCK |
||
+ | # .... |
||
+ | |||
+ | {{Ic|tzap}} に関する詳細は [http://www.linuxtv.org/wiki/index.php/Zap zap の wiki ページ] を見てください。 |
||
+ | |||
+ | {{Ic|tzap}} でストリームを符号化することで、{{Ic|ffmpeg}} (やその他のプログラム) から {{Ic|/dev/dvb/adapter0/dvr0}} が使えるようになります。 |
||
+ | |||
+ | 余計なエンコードを行わないで番組をストリームするシンプルなコマンドは以下のようになります: |
||
+ | |||
+ | $ ffmpeg -f mpegts -i /dev/dvb/adapter0/dvr0 out.mp4 |
||
+ | |||
+ | ==トラブルシューティング== |
||
+ | |||
+ | 何か問題が発生した場合、以下のツールを使ってデバッグできます: |
||
+ | |||
+ | * {{AUR|dvbsnoop}} はバンド幅・シグナル・フロントエンドなどに関するあらゆるデータを表示することができる上級者向けのツールです。 |
||
+ | * {{Ic|femon -H}} は信号の状態を表示します。 |
2016年1月14日 (木) 21:01時点における版
DVB-T は地上デジタルビデオ放送に使われている国際規格です。DVB-T は様々なハードウェアを使って受信することができますが、この記事では RTL2832U チップセットを搭載した DVB-T USB ドングルだけを扱います (RTL-SDR による安価なソフトウェア無線としても広く使われています)。
ドライバー
使用するメインのドライバーは dvb_usb_rtl28xxu
です。最新カーネルに含まれています。ドライバーがロードされていない場合、手動でロードしてください:
# modprobe dvb_usb_rtl28xxu
rtl2832
や rtl2830
もロードする必要があるかもしれません:
# modprobe rtl2830 # modprobe rtl2832
デバイスを接続すると、dmesg
で以下のように確認できるはずです:
[ 4009.326338] usb 7-5: new high-speed USB device number 4 using ehci-pci [ 4009.466712] usb 7-5: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state [ 4009.531594] usb 7-5: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer [ 4009.531613] DVB: registering new adapter (Realtek RTL2832U reference design) [ 4009.534554] usb 7-5: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))... [ 4009.534627] r820t 4-001a: creating new instance [ 4009.546177] r820t 4-001a: Rafael Micro r820t successfully identified [ 4009.552681] Registered IR keymap rc-empty [ 4009.552783] input: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb7/7-5/rc/rc1/input20 [ 4009.552854] rc1: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb7/7-5/rc/rc1 [ 4009.553275] input: MCE IR Keyboard/Mouse (dvb_usb_rtl28xxu) as /devices/virtual/input/input21 [ 4009.554466] rc rc1: lirc_dev: driver ir-lirc-codec (dvb_usb_rtl28xxu) registered at minor = 0 [ 4009.554474] usb 7-5: dvb_usb_v2: schedule remote query interval to 400 msecs [ 4009.565930] usb 7-5: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected
さらに、/dev/dvb/adapter0
下でアダプタデバイスが確認できれば問題ありません。
ユーティリティ
linuxtv-dvb-apps パッケージに様々な DVB ユーティリティが入っています。
スキャン
w_scanAUR を使うことでチャンネルの自動スキャンが行えます (設定不要)。プログラムをインストールしたら次を実行してください:
# w_scan -ft -c [country_code] > ~/channels.conf
国名コードがわからない場合、以下を実行することでコードのリストを確認できます:
# w_scan -c ?
高度なスキャンオプションは DVB-S#Scanning channels に記載されています。w_scan の man ページ や ドキュメント も参照してください。
クライアント
プレイヤーを起動する前あるいは後に、設定ファイルや xset
コマンドを使ってビデオや TV の再生中にスクリーンセーバーを無効化する方法を見てください。xscreensaver をインストールしている場合、xset
ではなく xscreensaver-command
を使ってコマンドラインからスクリーンセーバーを有効化・無効化する必要があります。
VLC
以下のコマンドで VLC を使って DVB-T ストリームを表示できます:
$ vlc dvb://frequency=543000000
周波数は Hz 単位でセットします。あなたの地域で送波に使われている基準周波数を指定する必要があります。また、復調方式は自由に指定することができます。dvb
の代わりに dvb-t
や dvb-t2
などが利用可能です。
VLC では様々なコマンドライン引数を使うことができ、例えば、他のプログラムに同調したい場合:
$ vlc dvb://frequency=543000000 :program=3
MPlayer
DVB をストリーミングするとき、MPlayer は ~/.mplayer/channels.conf
にチャンネルの設定ファイルを必要とします。#スキャンの指示に従ってファイルを生成してください。ただし、コマンドで -M
フラグを使って MPlayer から利用できるフォーマットで生成するようにしてください。w_scan
を使用する場合:
$ w_scan -ft -c [country_code] -M > ~/.mplayer/channels.conf
mplayer dvb://
を実行して設定をテストしてください。最初のチャンネルが再生されるはずです。再生されない場合、ストリームを受信するために -demuxer lavf
や -demuxer mpegts
を使う必要があります。
設定が上手くいったら次を実行:
$ mplayer dvb://"STREAM NAME"
STREAM NAME
はチャンネルの設定ファイルに記載されている適当なチャンネル名に置き換えてください。
チャンネルセレクタ
以下の lstvAUR スクリプトは ~/.mplayer/channels.conf
ファイルからデータを読み込んで、チャンネルの番号付きリストを表示します。スクリプトによって表示された番号をコマンドラインで使うだけで、チャンネルの名前を入力しなくてもチャンネルを視聴することができるようになります。例: lstv 3
。スクリプトによって表示されるチャンネル番号はチューニング設定の行番号と対応しています。また、mplayer を起動する前にスクリプトはディスプレイの省電力機能とスクリーンセーバーを無効化して、スクリプトを終了した後に、もういちど有効化します。スクリプトのスクリーンセーバー管理を無効化したいときは MPlayer の前後にある xset ...;
を削除してください。
/usr/local/bin/lstv
#!/bin/bash if [ "$1" ];then CC='^[0-9]+$'; if ! [[ "$@" =~ $CC ]];then echo Is not a channel number!; else ## awk -F':' -v AA="$1" '//{ZZ++; if(AA == ZZ)system("xset -dpms s off;mplayer dvb://""\""$1"\";xset +dpms s on")} END{if(AA > ZZ)printf "The highest channel number is: "ZZ"\n"}' "$HOME/.mplayer/channels.conf" ## fi; else awk -F':' '// { ZZ++; printf ZZ " | " $1 "\n"}' "$HOME/.mplayer/channels.conf" fi;
ffmpeg
FFmpeg では DVB-T の MPEG ストリームを入力に指定できますが、tzap
が必要になります。
まず、w_scan
を使って tzap 互換の channels.conf
ファイルを生成してください:
$ w_scan -ft -A1 -X > ~/.tzap/channels.conf
そして、次を実行:
$ tzap -r "CHANNEL NAME"
正しく設定されていれば、以下のように出力されます:
$ tzap -r "CHANNEL NAME" using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' reading channels from file '/home/user/.tzap/channels.conf' Version: 5.10 FE_CAN { DVB-T } tuning to 506000000 Hz video pid 0x0a21, audio pid 0x0a22 status 00 | signal 0000 | snr 0000 | ber 0000ffff | unc 00007fbd | status 1f | signal 0000 | snr 0126 | ber 00000000 | unc 00007fbd | FE_HAS_LOCK status 1f | signal 0000 | snr 0129 | ber 0000000f | unc 00007fbd | FE_HAS_LOCK status 1f | signal 0000 | snr 0120 | ber 00000003 | unc 00007fbd | FE_HAS_LOCK status 1f | signal 0000 | snr 0125 | ber 00000011 | unc 00007fbd | FE_HAS_LOCK # ....
tzap
に関する詳細は zap の wiki ページ を見てください。
tzap
でストリームを符号化することで、ffmpeg
(やその他のプログラム) から /dev/dvb/adapter0/dvr0
が使えるようになります。
余計なエンコードを行わないで番組をストリームするシンプルなコマンドは以下のようになります:
$ ffmpeg -f mpegts -i /dev/dvb/adapter0/dvr0 out.mp4
トラブルシューティング
何か問題が発生した場合、以下のツールを使ってデバッグできます:
- dvbsnoopAUR はバンド幅・シグナル・フロントエンドなどに関するあらゆるデータを表示することができる上級者向けのツールです。
femon -H
は信号の状態を表示します。