読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

KRTV-7131で地アナを録画する

Linux

地デジじゃなくて地アナ。

KRTV-7131は玄人志向のテレビキャプチャカードです。2006年秋に買ってしばらく使ってませんでしたが、引越しで地アナが受信できるようになったので復活させてみました。マンションをダウングレードしたら地アナが受信できるようになったという不思議。

玄人志向 KRTV-7131 TVチューナカード

玄人志向 KRTV-7131 TVチューナカード

KRTV-7131はすでに発売終了しており、後継機が発売されています。Vistaドライバが付属するとかリモコンが大きくなった以外、基本的なスペックは同等のようです。地アナ録画サーバとして使う分には違いはないと思われます。スペックは以下です。

接続バス PCI
ビデオキャプチャ Philips SAA7131
チューナー Philips TDA8275
背面ポート アンテナ(F接栓コネクタ)、A/V端子(専用ケーブルでComposite/S/Audioに分岐)、リモコン端子

スペックに基づいてLinuxカーネルを構築します。モジュール化しておくと、パラメータを変えながら試行錯誤できるので便利です。

--- Multimedia support                                            
      *** Multimedia core support ***                             
<M>   Video For Linux                                             
[ ]     Enable Video For Linux API 1 (DEPRECATED)                 
[*]     Enable Video For Linux API 1 compatible Layer             
      *** Multimedia drivers ***                                  
[*]   Load and attach frontend and tuner driver modules as needed 
[*]   Customize analog and hybrid tuner modules to build  --->    
[*]   Video capture adapters  --->                                

--- Video capture adapters                                             
[ ]   Enable advanced debug functionality                              
[ ]   Enable old-style fixed minor ranges for video devices            
[*]   Autoselect pertinent encoders/decoders and other helper chips    
<M>   Philips SAA7134 support                                          
<M>     Philips SAA7134 DMA audio support                              

--- Customize analog and hybrid tuner modules to build
< >   Simple tuner support                            
<M>   TDA 8290/8295 + 8275(a)/18271 tuner combo       
-M-   Philips TDA827X silicon tuner                   
-M-   NXP TDA18271 silicon tuner                      

Google先生カーネルドキュメント(Documentation/video4linux/CARDLIST.saa7134)を参考に、カードナンバーを調べます。カードナンバーが判明したら、/etc/modprobe.d/の下に設定ファイルを作成します*1。私は以下の設定でうまく認識できました。

# /etc/modprobe.d/saa7134.conf
options saa7134 card=65 alsa=1

update-modulesでmodprobe.confを最新化しておきましょう。再起動は不要です。

いよいよsaa7134モジュールを読み込みます。

modprobe saa7134

dmesgに以下のような内容が出力されていれば成功です。no eeprom presentとかdsp access errorと出ていても問題ないようです。

Linux video capture interface: v2.00
saa7130/34: v4l2 driver version 0.2.15 loaded
saa7133[0]: found at 0000:05:01.0, rev: 209, irq: 19, latency: 32, mmio: 0xf5105000
saa7133[0]: subsystem: 1131:0000, board: V-Stream Studio TV Terminator [card=65,insmod option]
saa7133[0]: board init: gpio is 40
input: saa7134 IR (V-Stream Studio TV  as /devices/pci0000:00/0000:00:1e.0/0000:05:01.0/input/input15
IRQ 19/saa7133[0]: IRQF_DISABLED is not guaranteed on shared IRQs
saa7133[0]: Huh, no eeprom present (err=-5)?
i2c-adapter i2c-1: Invalid 7-bit address 0x7a
tuner 1-004b: chip found @ 0x96 (saa7133[0])
tda829x 1-004b: setting tuner address to 61
tda829x 1-004b: type set to tda8290+75a
saa7133[0]: dsp access error
saa7133[0]: registered device video0 [v4l2]
saa7133[0]: registered device vbi0
saa7133[0]: registered device radio0
saa7134 ALSA driver for DMA sound loaded
IRQ 19/saa7133[0]: IRQF_DISABLED is not guaranteed on shared IRQs
saa7133[0]/alsa: saa7133[0] at 0xf5105000 irq 19 registered as card -1

テレビキャプチャカードが認識されたら録画に移りましょう。以下のパッケージがあると便利です。

地アナのチャンネルを選ぶには、xawtvに含まれるv4lctlか、mplayerに含まれるmencoderを使用します。

mencoder
 -tv driver=v4l2:width=704:height=480:fps=29.97:norm=NTSC-M-JP:amode=1:outfmt=yv12:chanlist=japan-bcast:alsa:audiorate=32000:volume=100
 -ovc lavc
 -oac lavc
 -lavcopts vcodec=mpeg4:vbitrate=2048:acodec=mp2
 -endpos 10
 -o test.avi
 tv://10

録画にはffmpegmencoderを使用します。私の環境ではmencoderがうまく動かないため、ffmpegを使用しています。参考までに、先ほどミュージックステーションを録画した設定を書いておきます。

ffmpeg
 -y
 -f video4linux2
 -s 640x480
 -r 29.97
 -i /dev/video0
 -f alsa
 -ac 2
 -ar 32000
 -i hw:0,0
 -vcodec mpeg4
 -b 1536k
 -deinterlace
 -acodec libfaac
 -ab 128k
 -t 4:30:00
 -f mp4
 20091225_1900.mp4

*1:Gentoo Linuxでは/etc/modprobe.d/*がmodprobe.confに集約されます