Toon posts:

[Video 4 Linux 2] /dev/video0 aanmaken

Pagina: 1
Acties:

Verwijderd

Topicstarter
De afgelopen weken ben ik bezig geweest met Video 4 Linux 1. Dit werkt allemaal perfect. Ik heb ook een Kylix applicatie gemaakt die kan capturen.

Maar ik wil nu Video 4 Linux 2 gaan gebruiken, omdat het mogelijk moet zijn dat 2 applicatie's tegelijk kunnen capturen met dezelfde camera.

Nu heb ik de laatste kernel gedownload (2.5.x) zodat ik beschik over Video 4 Linux 2. Het probleem is alleen dat hij om de een of andere rede /dev/video0 niet meer kent.

Ik krijg bij het openen van /dev/video0: onbekend device.

Ik gebruik SuSE 8.0 Prof. Met SuSE kan ik gewoon via het control center bij tv kaarten mijn capture kaart instellen. Vervolgens maakt SuSE zelf dan /dev/video0.

Moet ik /dev/video0 anders aanmaken bij Video For Linux 2?

  • CT
  • Registratie: September 2001
  • Laatst online: 05-05 16:27

CT

📱💻 🎮 ⌚🖥

je kan:

mknod /dev/video0 c 81 0
chmod 666 /dev/video0
ln -s /dev/video /dev/video0

proberen...

maar misschien zit het in /dev/v4l/video0 ?
moet je die ff linken naar /dev/video0

Verwijderd

Verwijderd schreef op 16 mei 2003 @ 15:47:
Maar ik wil nu Video 4 Linux 2 gaan gebruiken, omdat het mogelijk moet zijn dat 2 applicatie's tegelijk kunnen capturen met dezelfde camera.
Vergeet 't maar. Je kan de device vaker dan eens openen, maar 't worden niet opeens twee camera's. Je kan gewoon nog altijd slechts 1x capturen.

Je moet een applicatie maken die dezelfde buffer twee keer wegschrijft, of je moet iets als GStreamer gebruiken.

Verwijderd

Topicstarter
Verwijderd schreef op 16 May 2003 @ 22:36:Vergeet 't maar. Je kan de device vaker dan eens openen, maar 't worden niet opeens twee camera's. Je kan gewoon nog altijd slechts 1x capturen.

Je moet een applicatie maken die dezelfde buffer twee keer wegschrijft, of je moet iets als GStreamer gebruiken.
Volgens mij is het gewoon mogelijk hoor om met V4L2 een device meer dan 1 keer tegelijk te openen en vervolgens te kunnen capturen. (CCD camera).

edit:
Tenminste, ik dacht dat je dat een keer tegen mij gezegd heb in een emailtje


Maar ik heb net op een andere computer nog een 2.5.69 kernel geinstalleerd (SuSE 8.0 Prof systeem). In deze kernel zit V4L2 in en de nieuwste bttv driver. In het systeem zit een hauppauge tv kaart.

Ik heb video for linux, I2C en bttv support aangezet in de kernel.

Ook heb ik de nieuwe xawtv gedownload. Het probleem is dat er niets wordt weergegeven (maar ik krijg die error van onbekend device, wat ik dus op een ander systeem kreeg, niet te zien).

Als ik xawtv opstart, krijg ik de volgende foutmelding + gedeelte uit log bestand:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
martin@linux:/usr/X11R6/bin> ./xawtv
This is xawtv-3.88, running on Linux/i686 (2.5.69)
dlopen: /usr/X11R6/lib/xawtv/read-qt.so: undefined symbol: lqt_decode_video
dlopen: /usr/X11R6/lib/xawtv/write-qt.so: undefined symbol: lqt_destroy_codec_info
ioctl: VIDIOC_DQBUF(index=0;type=VIDEO_CAPTURE;bytesused=0;flags=0x0 [];field=ANY;;timecode.type=0;timecode.flags=0;timecode.frames=0;timecode.seconds=0;timecode.minutes=0;timecode.hours=0;timecode.userbits="";sequence=0;memory=unknown): Invoer-/uitvoerfout
v4l2: read: Invoer-/uitvoerfout
martin@linux:/usr/X11R6/bin>



May 17 00:51:18 linux kernel: tuner: tuner type not set
May 17 00:51:18 linux kernel: tda9887_configure
May 17 00:51:18 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:18 linux kernel: tda9885/6/7: i2c i/o error: rc == -14 (should be 4)
May 17 00:51:18 linux kernel: bttv0: reset, reinitialize
May 17 00:51:18 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:18 linux kernel: tda8425: I/O error (write reg8=0x0)
May 17 00:51:18 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:18 linux kernel: pic16c54 (PV951): I/O error (write reg2=0x10)
May 17 00:51:18 linux kernel: tuner: tuner type not set
May 17 00:51:18 linux kernel: tda9887_configure
May 17 00:51:18 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:18 linux kernel: tda9885/6/7: i2c i/o error: rc == -14 (should be 4)
May 17 00:51:18 linux kernel: tuner: tuner type not set
May 17 00:51:18 linux kernel: tda9887_configure
May 17 00:51:18 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:18 linux kernel: tda9885/6/7: i2c i/o error: rc == -14 (should be 4)
May 17 00:51:19 linux kernel: tda9840: I/O error (read)
May 17 00:51:19 linux kernel: tda9840: I/O error (read)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg8=0xce)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: pic16c54 (PV951): I/O error (write reg2=0xa0)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tea6420: I/O error (write 0x2)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg0=0xdf)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg1=0xdf)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg2=0xf8)
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg3=0xf8)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg8=0xde)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda7432: I/O error, trying (write 1 0x3b)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda7432: I/O error, trying (write 2 0xff)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda7432: I/O error, trying (write 3 0x0)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda7432: I/O error, trying (write 4 0x0)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda7432: I/O error, trying (write 5 0x0)
May 17 00:51:19 linux kernel: tda7432: I/O error, trying (write 6 0x0)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda8425: I/O error (write reg8=0xce)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: pic16c54 (PV951): I/O error (write reg2=0x60)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tea6420: I/O error (write 0x0)
May 17 00:51:19 linux kernel: tuner: tuner type not set
May 17 00:51:19 linux kernel: tda9887_configure
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda9885/6/7: i2c i/o error: rc == -14 (should be 4)
May 17 00:51:19 linux kernel: tuner: tuner type not set
May 17 00:51:19 linux kernel: tda9887_configure
May 17 00:51:19 linux kernel: tda9885/6/7: i2c i/o error: rc == -121 (should be 4)
May 17 00:51:19 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:19 linux kernel: tda9840: I/O error (write reg0=0x10)
May 17 00:51:19 linux kernel: tuner: tuner type not set
May 17 00:51:19 linux kernel: bttv0: timeout: risc=1fd8603c, bits: FMTCHG VSYNC HSYNC OFLOW HLOCK VPRES RISCI
May 17 00:51:21 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:21 linux kernel: tda9840: I/O error (write reg0=0x2a)
May 17 00:51:22 linux kernel: bttv0: reset, reinitialize
May 17 00:51:22 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:22 linux kernel: tda8425: I/O error (write reg8=0xce)
May 17 00:51:22 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:22 linux kernel: pic16c54 (PV951): I/O error (write reg2=0x60)
May 17 00:51:22 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:22 linux kernel: tea6420: I/O error (write 0x0)
May 17 00:51:23 linux kernel: tda9840: I/O error (write reg0=0x12)
May 17 00:51:23 linux kernel: bttv0: timeout: risc=1fd8603c, bits: FMTCHG VSYNC HSYNC OFLOW HLOCK VPRES RISCI
May 17 00:51:25 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:25 linux kernel: tda9840: I/O error (write reg0=0x2a)
May 17 00:51:27 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:27 linux kernel: tda9840: I/O error (write reg0=0x12)
May 17 00:51:29 linux kernel: tda9840: I/O error (read)
May 17 00:51:29 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:29 linux kernel: tda9840: I/O error (write reg0=0x2a)
May 17 00:51:33 linux kernel: bttv0: reset, reinitialize
May 17 00:51:33 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:33 linux kernel: pic16c54 (PV951): I/O error (write reg2=0x60)
May 17 00:51:33 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:33 linux kernel: tea6420: I/O error (write 0x0)
May 17 00:51:34 linux kernel: bttv0: timeout: risc=1fd8603c, bits: FMTCHG VSYNC HSYNC OFLOW HLOCK VPRES RISCI
May 17 00:51:34 linux kernel: bttv0: reset, reinitialize
May 17 00:51:34 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:34 linux kernel: tda8425: I/O error (write reg8=0xce)
May 17 00:51:34 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:34 linux kernel: pic16c54 (PV951): I/O error (write reg2=0x60)
May 17 00:51:34 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:34 linux kernel: tea6420: I/O error (write 0x0)
May 17 00:51:37 linux kernel: tda9840: I/O error (read)
May 17 00:51:43 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:43 linux kernel: tda9840: I/O error (write reg0=0x10)
May 17 00:51:45 linux kernel: tda8425: I/O error (write reg8=0x0)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: pic16c54 (PV951): I/O error (write reg2=0x10)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tea6420: I/O error (write 0x0)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda8425: I/O error (write reg0=0xdf)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda8425: I/O error (write reg1=0xdf)
May 17 00:51:45 linux kernel: tda8425: I/O error (write reg2=0xf8)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda8425: I/O error (write reg3=0xf8)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda8425: I/O error (write reg8=0x1e)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda7432: I/O error, trying (write 1 0x3b)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda7432: I/O error, trying (write 2 0xff)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda7432: I/O error, trying (write 3 0x20)
May 17 00:51:45 linux kernel: tda7432: I/O error, trying (write 4 0x20)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda7432: I/O error, trying (write 5 0x20)
May 17 00:51:45 linux kernel: i2c i2c-0: sendbytes: error - bailout.
May 17 00:51:45 linux kernel: tda7432: I/O error, trying (write 6 0x20)
May 17 00:51:45 linux kernel: bttv0: timeout: risc=1fd8603c, bits: FMTCHG VSYNC HSYNC OFLOW HLOCK VPRES RISCI

Maar ik word hier niks wijzer van. Ziet iemand het probleem?

  • DiNo!
  • Registratie: Juni 2000
  • Laatst online: 07-05 06:25
Ja. Je kan meerdere keren de video device openen, het lijkt er bij mij op dat 2 applicaties tegelijk video ontvangen, een derde app moet wachten.
zie mijn recent topic: BTTV streamen + veranderen kanaal

https://github.com/atoomnetmarc/


Verwijderd

Verwijderd schreef op 16 mei 2003 @ 23:02:
Volgens mij is het gewoon mogelijk hoor om met V4L2 een device meer dan 1 keer tegelijk te openen en vervolgens te kunnen capturen. (CCD camera).

edit:
Tenminste, ik dacht dat je dat een keer tegen mij gezegd heb in een emailtje
Nee.. In het beste geval (BTTV doet dit bv.) capturen ze allebei om de beurt, dus allebei met de halve framerate. Maar algemeen genomen (mijn driver bv.) werkt het gewoon simpelweg niet. Veel te moeilijk allemaal. Als je twee keer capturen, dan moet je capture applicatie de data gewoon twee keer gebruiken.

Verwijderd

Topicstarter
Ik zou nog ff uitleggen hoe ik het wil gaan gebruiken:

In mijn situatie zijn er 2 aparte programma's die allebei gebruik moeten kunnen maken van /dev/video0.

Dus applicatie A kan een plaatje opvragen en Applicatie B. Deze applicatie's draaien dus helemaal los van elkaar.

De vraag is of dit mogelijk is?

Verwijderd

Ja, maar niet tegelijk (v4l2 API) of beiden op maximaal halve framerate (read() of v4l1 API).

  • DiNo!
  • Registratie: Juni 2000
  • Laatst online: 07-05 06:25
Verwijderd schreef op 17 mei 2003 @ 12:36:
Ik zou nog ff uitleggen hoe ik het wil gaan gebruiken:

In mijn situatie zijn er 2 aparte programma's die allebei gebruik moeten kunnen maken van /dev/video0.

Dus applicatie A kan een plaatje opvragen en Applicatie B. Deze applicatie's draaien dus helemaal los van elkaar.

De vraag is of dit mogelijk is?
Wat ik dus al zei, ja het werkt. Zelfs met de volle 25FPS. Ik heb Xawtv draaien om op de computer zelf tv te kijken en tegelijk met ffmpeg/ffserver om de rest van mijn netwerk te voorzien van hetzelfde tv kanaal.

Het enige wat ik gemerkt heb is dat wel alle apps het zelfde video formaat (resolutie) moeten hebben.

https://github.com/atoomnetmarc/


Verwijderd

Topicstarter
Ik kan /dev/video0 nu gewoon normaal openen. Maar ik zie nog steeds geen beeld (met v4l1 heb ik wel beeld).

Als ik de log van mijn 2.5.69 kernel bekijk zie ik het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<6>Linux video capture interface: v1.00
<6>bttv: driver version 0.9.4 loaded
<6>bttv: using 8 buffers with 2080k (520 pages) each for capture
<6>bttv: Host bridge is VIA Technologies, In VT8366/A/7 [Apollo K
<6>bttv: Bt8xx card found (0).
<6>bttv0: Bt848 (rev 18) at 00:0f.0, irq: 5, latency: 32, mmio: 0xea001000
<6>bttv0: using: BT848A( *** UNKNOWN/GENERIC **) [card=0,autodetected]
<4>bttv0: Looking for eeprom
<4>bttv0: using tuner=-1
<6>bttv0: i2c: checking for MSP34xx @ 0x80... found
<6>bttv0: i2c: checking for TDA9875 @ 0xb0... not found
<6>bttv0: i2c: checking for TDA7432 @ 0x8a... not found
<6>bttv0: registered device video0
<6>bttv0: registered device vbi0
<6>msp34xx: init: chip=MSP3400C-C6
<4>msp3400: daemon started
<4>bttv0: i2c attach [client=MSP3400C-C6,ok]
<4>registering 0-0040
<6>tvaudio: TV audio decoder + audio/video mux driver
<6>tvaudio: known chips: tda9840,tda9873h,tda9874h/a,tda9850,tda9855,tea6300,tea6420,tda8425,pic16c54 (PV951)
<4>tuner: probing bt848 #0 i2c adapter [id=0x10005]
<4>tuner: chip found @ 0xc2
<4>bttv0: i2c attach [client=(tuner unset),ok]
<4>registering 0-0061
<4>tda9887: probing bt848 #0 i2c adapter [id=0x10005]


Wat kan de rede zijn dat ik alleen maar zwart beeld krijg?

  • Onno
  • Registratie: Juni 1999
  • Niet online
Voor 848's moet je je kaart- en tunertype aan bttv meegeven, en dat heb je niet gedaan.

Verwijderd

Topicstarter
Onno schreef op 18 May 2003 @ 12:32:
Voor 848's moet je je kaart- en tunertype aan bttv meegeven, en dat heb je niet gedaan.
Ik heb via het control center ==> tv kaart ==> de kaart en tuner aangegeven.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Maar dat control center gaat neem ik aan uit van een standaard suse kernel, en die gebruik je niet. Heb je bttv als module gecompileerd bijvoorbeeld? Zo niet, dan moet je card en tuner in je lilo/grub config zetten in plaats van modules.conf, waar het nu ongetwijfeld staat.

Verwijderd

Topicstarter
Ik heb bttv niet als module gecompileerd. Maar zo'n control center is er toch juist voor bedoeld om alles mee in te stellen?

Verwijderd

Topicstarter
Ik ben bezig om die gegevens mee te sturen met de kernel. Maar het gaat niet goed met het doorgeven van die gegevens.

In mijn /etc/lilo.conf staat:

options bttv card=2 tuner=5
alias char-major-81-0 bttv


Ik gebruik lilo. In het lilo boot menu geef ik het als volgt mee:

options = "bttv card=2 tuner=5"


Weet iemand een andere manier om deze gegevens mee te geven?

Verwijderd

Mjah, als je echt in-kernel wilt, dan kun je dit net zo goed hardcoden in drivers/media/video/bttv-card.c.

Maargoed, in-kernel zou ik echt niet aanraden (in tegenstelling tot anderen hier in deze thread).

Verwijderd

Topicstarter
Verwijderd schreef op 19 May 2003 @ 00:02:
Mjah, als je echt in-kernel wilt, dan kun je dit net zo goed hardcoden in drivers/media/video/bttv-card.c.

Maargoed, in-kernel zou ik echt niet aanraden (in tegenstelling tot anderen hier in deze thread).
Oke, ik ga vanavond bttv als module compileren en hopelijk lukt het dan wel.

Verwijderd

Topicstarter
Ik heb mijn 2.5.69 kernel opnieuw gecompileerd maar nu met bttv als module. Alleen het werkt totaal niet het video for linux gedeelte.

Vervolgens heb ik maar besloten om gewoon een 2.4.20 kernel te pakken en die vervolgens te patchen zodat die v4l2 support heeft. Ik gebruik hiervoor patch-2.4.20-kraxel.gz van bytesex.org. In dit bestand zitten alle updates.

Vervolgens patch ik de kernel als volgt:

cd /usr/src/linux
zcat /home/martin/temp/patch-2.4.20-kraxel.gz | patch -p1

Dit lijkt gewoon allemaal goed te gaan

Ik compileer de kernel met bttv als module.

Ik kan nu v4l gebruiken, echter het is versie 1 en niet versie 2.

Nu zag ik wel dat die bttv 0.7.106 gebruikt. Er bestaat inmiddels ook 0.9.10. Maar ik neem aan dat het met de 0.7.106 ook goed zou moeten werken.


Hoe kan ik er voor zorgen dat die toch v4l2 gaat gebruiken?

Verwijderd

Niet. Alleen de 0.9.x support video4linux2, dat staat ook duidelijk op die site: http://bytesex.org/bttv/plans.html.

Verwijderd

Topicstarter
Het is eindelijk gelukt. (Ik had bttv 0.9.x al geprobeerd maar dat lukte in eerste instantie niet. Nu is het dan toch gelukt).

Bedankt.
Pagina: 1