|
|||||||
Как захватывать видео через Pinnacle PCTV Hybrid Pro Stick в Linux
Время создания: 23.01.2024 15:28
Текстовые метки: linux, pinnacle, RCA, композитный, вход, захват, оцифровка, TV, телевизионный, тюнер
Раздел: Компьютер - Linux - Видео в Linux - Работа с видео
Запись: xintrea/mytetra_syncro/master/base/1706012902k6r51luwa5/text.html на raw.github.com
|
|||||||
|
|||||||
Здесь записываются действия, которые необходимо сделать в Linux для захвата видео через композитный (RCA) вход USB-адаптера Pinnacle PCTV Hybrid Pro Stick. Вначале надо установить пакеты: v4l-utils v4l-conf Не забыть добавить своего пользователя в группу video и, если есть, в группу usb. Проверить, что USB-устройство видится в системе: # lsusb | grep innac Bus 001 Device 032: ID 2304:0226 Pinnacle Systems, Inc. PCTV 330e Полная информация об USB-устройстве: # lsusb -v -d 2304:0226 Посмотреть что увидело ядро: сразу после втыкания в USB дать команду: # dmesg Около 50 строк будет написано про данное устройство, так как оно составное: usb 1-4: new high-speed USB device number 32 using xhci_hcd usb 1-4: config 1 interface 0 altsetting 1 endpoint 0x82 has invalid wMaxPacketSize 0 usb 1-4: New USB device found, idVendor=2304, idProduct=0226, bcdDevice= 1.10 usb 1-4: New USB device strings: Mfr=3, Product=1, SerialNumber=2 usb 1-4: Product: PCTV 330e usb 1-4: Manufacturer: Pinnacle Systems usb 1-4: SerialNumber: 070301868563 mc: Linux media interface: v0.10 videodev: Linux video capture interface: v2.00 em28xx 1-4:1.0: New device Pinnacle Systems PCTV 330e @ 480 Mbps (2304:0226, interface 0, class 0) em28xx 1-4:1.0: Audio interface 0 found (Vendor Class) em28xx 1-4:1.0: Video interface 0 found: isoc em28xx 1-4:1.0: DVB interface 0 found: isoc em28xx 1-4:1.0: chip ID is em2882/3 em28xx 1-4:1.0: EEPROM ID = 1a eb 67 95, EEPROM hash = 0x32b3abbf em28xx 1-4:1.0: EEPROM info: em28xx 1-4:1.0: AC97 audio (5 sample rates) em28xx 1-4:1.0: 500mA max power em28xx 1-4:1.0: Table at offset 0x27, strings=0x168e, 0x1ca4, 0x246a em28xx 1-4:1.0: Identified as Pinnacle Hybrid Pro (330e) (card=56) em28xx 1-4:1.0: analog set to isoc mode. em28xx 1-4:1.0: dvb set to isoc mode. usbcore: registered new interface driver em28xx em28xx 1-4:1.0: Registering V4L2 extension tvp5150 11-005c: tvp5150 (4.0) chip found @ 0xb8 (1-4:1.0) tvp5150 11-005c: tvp5150am1 detected. tuner: 11-0061: Tuner -1 found with type(s) Radio TV. xc2028 11-0061: creating new instance xc2028 11-0061: type set to XCeive xc2028/xc3028 tuner em28xx 1-4:1.0: firmware: failed to load xc3028-v27.fw (-2) em28xx 1-4:1.0: Config register raw data: 0xd0 em28xx 1-4:1.0: Direct firmware load for xc3028-v27.fw failed with error -2 em28xx 1-4:1.0: AC97 vendor ID = 0xffffffff em28xx 1-4:1.0: AC97 features = 0xffff em28xx 1-4:1.0: Unknown AC97 audio processor detected! em28xx 1-4:1.0: V4L2 video device registered as video0 em28xx 1-4:1.0: V4L2 VBI device registered as vbi0 em28xx 1-4:1.0: V4L2 extension successfully initialized em28xx: Registered (Em28xx v4l2 Extension) extension em28xx 1-4:1.0: Binding audio extension em28xx 1-4:1.0: em28xx-audio.c: Copyright (C) 2006 Markus Rechberger em28xx 1-4:1.0: em28xx-audio.c: Copyright (C) 2007-2016 Mauro Carvalho Chehab em28xx 1-4:1.0: Endpoint 0x83 high-speed on intf 0 alt 7 interval = 8, size 196 em28xx 1-4:1.0: Number of URBs: 1, with 64 packets and 192 size em28xx 1-4:1.0: Audio extension successfully initialized em28xx: Registered (Em28xx Audio Extension) extension em28xx 1-4:1.0: Binding DVB extension xc2028 11-0061: attaching existing instance xc2028 11-0061: type set to XCeive xc2028/xc3028 tuner em28xx 1-4:1.0: xc3028 attached dvbdev: DVB: registering new adapter (1-4:1.0) em28xx 1-4:1.0: DVB: registering adapter 0 frontend 0 (Micronas DRXD DVB-T)... dvbdev: dvb_create_media_entity: media entity 'Micronas DRXD DVB-T' registered. dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered. em28xx 1-4:1.0: DVB extension successfully initialized em28xx: Registered (Em28xx dvb Extension) extension em28xx 1-4:1.0: Registering input extension Registered IR keymap rc-pinnacle-pctv-hd rc rc0: Pinnacle Hybrid Pro (330e) as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/rc/rc0 rc rc0: lirc_dev: driver em28xx registered at minor = 0, scancode receiver, no transmitter input: Pinnacle Hybrid Pro (330e) as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/rc/rc0/input57 em28xx 1-4:1.0: Input extension successfully initialized em28xx: Registered (Em28xx Input Extension) extension После втыкания USB-гнездо, должны появиться файлы в каталоге /dev/dvb/adapter0: crw-rw----+ 1 root video 212, 1 янв 23 13:56 demux0 crw-rw----+ 1 root video 212, 2 янв 23 13:56 dvr0 crw-rw----+ 1 root video 212, 0 янв 23 13:56 frontend0 crw-rw----+ 1 root video 212, 3 янв 23 13:56 net0 В выводе команды dmesg видны ошибки загрузки прошивки (firmware): em28xx 1-4:1.0: firmware: failed to load xc3028-v27.fw (-2) ... em28xx 1-4:1.0: Direct firmware load for xc3028-v27.fw failed with error -2 Файл xc3028-v27.fw можно сгенерировать согласно данной статьи: https://mylinuxblog.ru/installation-and-configuration-of-avermedia-mce-116-in-debian-linux/. В ней ссылка на сайт http://www.steventoth.net устарела. Чтобы получить zip-архив, из которого выдергивается hcw85bda.sys, нужно воспользоваться wayback-машиной: https://web.archive.org/web/20240116213210/http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Далее выкачивается perl-скрипт: wget http://linuxtv.org/hg/v4l-dvb/raw-file/3919b17dc88e/linux/Documentation/video4linux/extract_xc3028.pl И в каталоге, где лежит этот скрипт, и где лежит файл hcw85bda.sys, дается команда: perl extract_xc3028.pl Этот perl-скрипт сгенерирует прошивку xc3028-v27.fw. Почему так сложно? Там были какие-то лицензионные заморочки. Сейчас уже данное устройство настолько устарело, что никому не интересно. Внимание! Готовый файл прошивки xc3028-v27.fw, прикреплен к этой записи. Примечание. В сети Интернет можно найти такой же файл: wget https://beford.org/linux/xc3028-v27.fw Этот файл такого же размера что и сгенерированный (66220 байт), но отличается парой десятков байт. Если что-то не будет работать, можно попробовать его. Данный файл надо скопировать в каталог /lib/firmware. После чего компьютер необходимо перегрузить. После перезагрузки вышеуказанных ошибок быть не должно. Помимо устройств DVB в каталоге /dev/dvb/adapter0, при втыкании тюнера в USB-гнездо, должны появиться файлы следующих устройств: /dev/media0 /dev/lirc0 - устройство инфракрасного порта (ИК, IR - Infra Red) /dev/vbi0 - файл, создаваемый подсистемой video4linux /dev/video0 - видимо, это видеопоток, который берется с RCA/S-Video разъема /dev/ptmx - виртуальный терминал, через который управляется устройство Чтобы посмотреть что захватывает RCA-вход, можно попровать программу tvtime. Она по-умолчанию работает с /dev/video0. Если на компьютере есть веб-камера, то скорее всего она будет устройством /dev/video0. А RCA-вход Pinnacle будет /dev/video1. Иногда веб-камера может захватывать два устройства, тогда RCA-вход Pinnacle будет /dev/video2. Чтобы точно узнать какие файлы принадлежат Pinnacle, можно дать команду: > v4l2-ctl --list-devices Pinnacle Hybrid Pro (330e) (usb-0000:00:14.0-3): /dev/video2 /dev/vbi0 /dev/media1 HP HD Webcam: HP HD Webcam (usb-0000:00:1a.0-1.3): /dev/video0 /dev/video1 /dev/media0 Таким образом, для просмотра видео с RCA-входа, надо выполнить команду: tvtime -d /dev/video2 При запуске этой программы изображение может сразу не появиться. Чтобы увидеть изображение, надо сделать соответствующие настройки, например выбрать формат сигнала. Для этого надо вызвать меню кнопкой F1 (закрыть меню можно тоже кнопкой F1). Меню простое, как в телевизоре и интуитивно понятно. Если сделать в нем правильные настройки, изображение появится. Для записи видео с RCA-входа надо брать поток из устройства /dev/video2 и сохранять его в нужном формате. Сделать это можно через ffmpeg или vlc. Перед использования захвата, можно узнать возможные форматы видео-потока, которые генерирует устройство: > v4l-info /dev/video2 general info VIDIOC_QUERYCAP driver : "em28xx" card : "Pinnacle Hybrid Pro (330e)" bus_info : "usb-0000:00:14.0-3" version : 5.10.179 capabilities : 0x85230011 [VIDEO_CAPTURE,VBI_CAPTURE,TUNER,AUDIO,?,READWRITE,STREAMING,(null)] ... video capture VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE) index : 0 type : VIDEO_CAPTURE flags : 0 description : "YUYV 4:2:2" pixelformat : 0x56595559 [YUYV] VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE) index : 1 type : VIDEO_CAPTURE flags : 0 description : "16-bit RGB 5-6-5" pixelformat : 0x50424752 [RGBP] VIDIOC_ENUM_FMT(2,VIDEO_CAPTURE) index : 2 type : VIDEO_CAPTURE flags : 0 description : "8-bit Bayer RGRG/GBGB" pixelformat : 0x42474752 [RGGB] VIDIOC_ENUM_FMT(3,VIDEO_CAPTURE) index : 3 type : VIDEO_CAPTURE flags : 0 description : "8-bit Bayer BGBG/GRGR" pixelformat : 0x31384142 [BA81] VIDIOC_ENUM_FMT(4,VIDEO_CAPTURE) index : 4 type : VIDEO_CAPTURE flags : 0 description : "8-bit Bayer GRGR/BGBG" pixelformat : 0x47425247 [GRBG] VIDIOC_ENUM_FMT(5,VIDEO_CAPTURE) index : 5 type : VIDEO_CAPTURE flags : 0 description : "8-bit Bayer GBGB/RGRG" pixelformat : 0x47524247 [GBRG] VIDIOC_ENUM_FMT(6,VIDEO_CAPTURE) index : 6 type : VIDEO_CAPTURE flags : 0 description : "Planar YUV 4:1:1" pixelformat : 0x50313134 [411P] VIDIOC_G_FMT(VIDEO_CAPTURE) type : VIDEO_CAPTURE fmt.pix.width : 720 fmt.pix.height : 576 fmt.pix.pixelformat : 0x56595559 [YUYV] fmt.pix.field : INTERLACED fmt.pix.bytesperline : 1440 fmt.pix.sizeimage : 829440 fmt.pix.colorspace : SMPTE170M fmt.pix.priv : 4276996862 Для захвата изображения может сработать следующая команда: ffmpeg -f v4l2 -i /dev/video2 file.avi Если она не срабатывает, надо играться с опцией -f чтобы задать входной формат. Можно попробовать ее вообще убрать, должно сработать автоопределение формата потока. https://archlinux.org.ru/forum/topic/12799/ |
|||||||
Прикрепленные файлы:
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|