Ca și în linux, transforma un dv camera într-o cameră web (articole - linux computer cum să oprească

Dar, așa cum au spus la un forum, cazurile de conectare a acestei camere la Linux sub forma unei camere WEB pe Internet nu au fost detectate. Când este conectat prin USB, aparatul foto este în mod normal identificat ca un dispozitiv USB și acolo se termină. Dispozitivele / dev / videoX nu sunt create, deoarece nu există suport pentru acest aparat de fotografiat în driverele kernel-ului și, aparent, nu va fi niciodată.

Dar nu minți la aceeași cameră inactiv! Mai ales că bunica dintr-un oraș îndepărtat este surprinsă de ce poate să-și înființeze un skype cu aparatul foto, astfel încât să o putem vedea și oameni de știință avansați în domeniul calculatoarelor, așa cum nu știu. M-am simțit rănit și m-am hotărât cu orice preț să pornesc această cameră sub Linux.

Deci, sa dovedit că unii meseriași conectează camere DV la un cablu FireWire și apoi, folosind modulul kernel vloopback. creați dispozitivul / dev / video0. Acesta este un fișier standard de dispozitiv webcam, cu programe cum ar fi Kopete și Skype. Descrierile complete ale acestui proces și comenzile necesare oriunde nu au fost găsite, prin urmare, au început să înțeleagă, de exemplu, de la zero.

Primul lucru care sa dovedit este că modulul vloopback există doar pentru nucleele 2.6.x, iar implementarea lui pentru 3.2.x nu este în natură. Și am un sistem Debian Testing Squeezy cu kernelul 3.2.0-4-686-pae. Pentru a colecta vloopback din surse pentru kernelul 3.2.x, de asemenea, nu sa dovedit, și pe un site oficial al unui cuvânt despre suportul kernel-urilor din versiunea 3.

Pentru a instala acest modul, trebuie să instalați pachete cu fișiere cu antet kernel, care sunt denumite linux-headers *. În cazul meu, a fost un pachet de linux-headers-3.2.0-4-common. Am instalat-o, apoi am despachetat arhiva v4l2loopback și am rulat compilația cu instalarea:

  1. face (de către utilizator)
  2. face install (de la rue)

Ca rezultat, modulul a fost compilat și instalat în sistem. Modulul Autostart nu este prescris niciodată în scriptul installall-script, la început poate fi pornit de mâini:

Dacă modulul este lansat cu succes, fișierul / dev / video0 va fi creat pe sistem. și în lista de module (puteți privi prin comanda lsmod) veți vedea liniile:

v4l2loopback 22660 0
videodev 61658 1 v4l2loopback

Putem presupune că jumătate din caz se face.

Apoi, trebuie să verificați dacă sistemul Linux acceptă date FireWire. Pomjatuya că, deoarece o versiune a kernelului 2.6.x din Linux a eliminat modulul raw1394. și l-au înlocuit cu module firewire_ohci + firewire_core. cu care jumătate din software-ul nu funcționează, sunt pregătit pentru o selecție lungă. Dar, surprinzător, programul de editare Kino a arătat vesel o fotografie de la aparatul de fotografiat. Am fost încântat și am început să verific dacă este posibil transferul fluxului FireWire în mplayer / mencoder.

Pentru început, am verificat capturarea unui fișier prin programul consolă dvgrab:

Apoi, am verificat pentru a vedea dacă mplayer poate transmite date din cameră. Programul dvgrab poate transfera datele FireWire într-un flux standard. Pentru a face acest lucru, puneți un semn "-" la sfârșitul comenzii. Și programul mplayer poate primi date din fluxul standard. Pentru a face acest lucru, la sfârșitul echipei, trebuie să introduceți și un semn "-".

Drept urmare, a fost formată următoarea comandă:

dvgrab -noavc - | mplayer -noconsolecontrols -

Puteți vedea fluxul FireWire și prin VLC:

dvgrab -noavc - | vlc -

Dar VLC afișează o imagine cu un decalaj puternic comparativ cu MPlayer.

Acum trebuie să faceți următoarele:

Primele trei elemente sunt implementate de următoarea comandă:

dvgrab -noavc - | mencoder -ovc raw -nosound -vf tfields = 0, detc, scară = 320: 340, format = yuy2 -o / dev / video0 -

Să rulam scurt opțiunile mencoder.

Nu s-a putut conecta la dispozitivul video (/ dev / video0).

Verificarea conexiunii la plecare.

Se spune că această eroare apare deoarece utilizatorul nu este inclus în grupul de videoclipuri. Verificați - utilizatorul meu în videoclipul de grup. Atunci ce sa întâmplat?

Ca și în linux, transforma un dv camera într-o cameră web (articole - linux computer cum să oprească

Imaginea izbucni, totul era în dungi verzi și albastre, culoarea lipsea ca atare. Oh, și de mult timp am înțeles de ce. În cele din urmă, nu l-am înțeles, dar am reușit parțial să rezolv problema.

De ce umbra verzui? Deoarece în programul README testul spune:

deoarece toți pixelii sunt setați la "0", vor fi verzi.

Am scuipat pe tot, am intrat în codul sursă test.c. lângă variabila globală, debug are variabila globală pixel_byte:

static int debug = 0;
__u8 pixel_byte = 128;

Codul a găsit memoria de umplere cu constanta 0:

memset (tampon, 0, dimensiune cadru);
memset (check_buffer, 0, framesize);
pentru (i = 0; i check_buffer [i] = 0;
>

memset (buffer, pixel_byte, framesize);
memset (check_buffer, pixel_byte, framesize);
pentru (i = 0; i check_buffer [i] = pixel_byte;
>

Compilați, lansați și ridicați valoarea constantei pixel_byte = 128. Cu ea, imaginea este dată în tonuri gri, nu în verde. În timpul selectării și repornirii programului de testare, am constatat în mod neașteptat că, după trei sau cinci porniri ale programului de testare, zgomotul digital dispare și imaginea devine clară, fără artefacte:

Ca și în linux, transforma un dv camera într-o cameră web (articole - linux computer cum să oprească

L-am rugat să facă o captură de ecran a imaginii pe care Skype o oferă de partea lui. Iată ce am văzut:

Ca și în linux, transforma un dv camera într-o cameră web (articole - linux computer cum să oprească
Vizualizați dimensiunea reală

Pe de o parte - benzi verticale dezgustatoare de origine necunoscuta. Pe de altă parte, avem o rezoluție de 720x360 (de ce, mă întreb? Mencoder ar fi trebuit să scadă fluxul la 320x160

170). Linia citește numerele și puteți vedea marcajul milimetru. Pentru a se asigura că interlocutorul are o idee despre cine vorbește, această "calitate" este suficientă.

În general, cred că această imagine este mult mai bună decât emiterea de WEB-camere de consum pentru 700-800 ruble. Numai alb-negru.