Linuxで使えるUSBアナログビデオキャプチャ



# はじめに

Linuxでアナログのコンボジット映像信号をキャプチャーしようと思うと選択肢が妙に少ないことに気づきました。さらにノートパソコンを使っているためUSBでつながる必要があるのです。Linuxでビデオキャプチャー可能かつUSB接続となると、まともに使えるものはかなり限られるようです。

そこでいろいろあれこれ買って試してみた結果をここに記しておきます。というのも自分が今その状況でありまして、まだ正解にたどり着けてないため同じことを考えている人に向けて情報を共有しておきたいと思います。

# チェック項目

## Linux(Ubuntu20.04)においての使用可否

普通にUSBを刺してすぐに認識するか確かめます。

## 疑似NTSC信号の入力

疑似NTSC信号を読み取れるか確かめます。PS1、Nintendo64、スーパーファミコンなどの垂直解像度がNTSC標準ではない映像信号が取り込めないものがあるので要注意です。


# 接続テスト

## IODATA GV-MVP/RZ3 

**全く使える見込みがありません、Linuxにおいては地雷なので注意！**

```
[261146.390588] usb 3-1: new high-speed USB device number 58 using xhci_hcd
[261146.538695] usb 3-1: New USB device found, idVendor=0409, idProduct=0059, bcdDevice= 1.00
[261146.538700] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[261146.539291] hub 3-1:1.0: USB hub found
[261146.539331] hub 3-1:1.0: 4 ports detected
[261147.454543] usb 3-1.2: new high-speed USB device number 59 using xhci_hcd
[261147.555223] usb 3-1.2: New USB device found, idVendor=04bb, idProduct=0519, bcdDevice= 8.00
[261147.555227] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[261147.555230] usb 3-1.2: Product: I-O DATA GV-MVP/RZ3
[261147.555232] usb 3-1.2: Manufacturer: Conexant
```

l4v2が読み込まられずvideo0などが有効になりませんので使えません。
ivtvのcardlistにも乗ってませんので無理そうです。
https://www.kernel.org/doc/html/v4.12/media/v4l-drivers/ivtv-cardlist.html

リストはつぎの通りになっています。

- 12 I/O Data GV-MVP/RX, GV-MVP/RX2W (dual tuner)
- 13 I/O Data GV-MVP/RX2E

RX3はNECの専用チップに変更になったので使えないそうです。使うためには自分でドライバーを書く必要が有りそうです。

## EasyCap DC60+

```
[260303.118244] usb 3-1: new high-speed USB device number 47 using xhci_hcd
[260303.266520] usb 3-1: config 1 interface 0 altsetting 0 endpoint 0x81 has invalid wMaxPacketSize 0
[260303.266703] usb 3-1: New USB device found, idVendor=05e1, idProduct=0408, bcdDevice= 0.05
[260303.266707] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[260303.266710] usb 3-1: Product: USB 2.0 Video Capture Controller
[260303.266712] usb 3-1: Manufacturer: Syntek Semiconductor
[260303.267379] usb 3-1: New device Syntek Semiconductor USB 2.0 Video Capture Controller @ 480 Mbps (05e1:0408, interface 0, class 0)
[260303.267382] usb 3-1: video interface 0 found
[260303.930317] saa7115 8-0025: saa7113 found @ 0x4a (stk1160)
[260305.310381] stk1160: Device uses internal 8-bit ADC, skipping AC97 setup.
[260305.470415] stk1160 3-1:1.0: V4L2 device registered as video0
```

saa7115というチップが使われてるようです。
疑似NTSC、具体的にはSony Playstation1の信号入力できました。
バッチリ使えます。でも画質、音質とても悪いです。

特に音声は**かなり悪い**です。画質はSビデオだとまあまあ改善するみたいです。


## プリンストン PCA-DAV2

細工をすれば正常に動きます。

```
[260434.183063] usb 3-1: New USB device found, idVendor=eb1a, idProduct=2861, bcdDevice= 1.00
[260434.183067] usb 3-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[260434.183069] usb 3-1: Product: USB 2861 Device
[260434.183728] em28xx 3-1:1.0: New device  USB 2861 Device @ 480 Mbps (eb1a:2861, interface 0, class 0)
[260434.183733] em28xx 3-1:1.0: Video interface 0 found: isoc
[260434.243744] em28xx 3-1:1.0: chip ID is em2860
[260434.376391] em28xx 3-1:1.0: EEPROM ID = 1a eb 67 95, EEPROM hash = 0x1369388a
[260434.376395] em28xx 3-1:1.0: EEPROM info:
[260434.376397] em28xx 3-1:1.0: 	AC97 audio (5 sample rates)
[260434.376399] em28xx 3-1:1.0: 	500mA max power
[260434.376402] em28xx 3-1:1.0: 	Table at offset 0x04, strings=0x226a, 0x0000, 0x0000
[260434.467648] em28xx 3-1:1.0: Identified as EM2860/TVP5150 Reference Design (card=29)
[260434.467651] em28xx 3-1:1.0: analog set to isoc mode.
[260434.467691] em28xx 3-1:1.0: Registering V4L2 extension
[260434.531986] tvp5150 8-005c: tvp5150 (4.0) chip found @ 0xb8 (3-1:1.0)
[260434.531988] tvp5150 8-005c: tvp5150am1 detected.
[260437.343755] em28xx 3-1:1.0: Config register raw data: 0x50
[260437.375655] em28xx 3-1:1.0: AC97 vendor ID = 0x83847650
[260437.391648] em28xx 3-1:1.0: AC97 features = 0x6a90
[260437.391651] em28xx 3-1:1.0: Empia 202 AC97 audio processor detected
[260443.172608] em28xx 3-1:1.0: V4L2 video device registered as video0
[260443.172613] em28xx 3-1:1.0: V4L2 VBI device registered as vbi0
[260443.172618] em28xx 3-1:1.0: V4L2 extension successfully initialized
```

card=29という記述があると思います。
これを指定すれば動きます。ソースコードをさかのぼって調べました。29でバッチリだと思います。
カード番号の指定は`/etc/modprobe.d/em28xx.conf`というファイルを作り、その中で

```conf:/etc/modprobe.d/em28xx.conf
options em28xx card=29
```

という記述があるファイルを設置すると、次回からはかならず29番が選ばれるようになります。

ただし、疑似NTSCは入力できませんでしたので、古いゲーム機のキャプチャーには使えませんでした。

接続すると、必ず音声入力がミュートになっていますので、音声を取り込む場合は`qv4l2`などの設定が変更できるソフトウェアから、ミュートを解除する必要が有ります。


# 結果：どのビデオキャプチャーが使えるか

まとめとしては、下のようになりました。

新しい機器を入手したら追記したいと思います。

| 名前 | lsusb | 使用可否 | 疑似NTSC入力 | 備考 |
|:-:|:-:|:-:|:-:|:-:|
| IODATA GV-MVP/RZ3    |  0409:0059(usbハブ) 04bb:0519(キャプチャー)| ×  | -  |  RZ3じゃなくて、GV-MVP/RX, RX2E, RX2Wは使えるらしいです  |
| Easy CAP DC60+  | 05e1:0408  | ○  | ○  |  ハードオフに売ってました、使えるけど画質、音質悪いです |
| プリンストン PCA-DAV2  | eb1a:2861  | △(em28xx card=29を指定しないと動かない)  | ×  | 画質は良いです。でも古いゲーム機などの取り込みには使えません。  |