Unix admin - freebsd, difuzat video de la camera web la rețea

A fost o idee să plasați un dozimetru acasă, să trimiteți o cameră web și să eliminați datele de pe acesta.
Dar, odată cu achiziționarea acestui lucru au existat probleme - nu există nicăieri, sau prețul este pur și simplu inadecvat.

În timp ce dozimetrul este pe drum - am decis să fac tot ce este necesar pentru difuzarea de la o cameră web.

Am decis să pun dosimetrul pe balcon, vă voi da imediat o diagramă a locului în care este. Diagrama este completă, de ce sa dovedit a fi doar puțin mai mică.

Unix admin - freebsd, difuzat video de la camera web la rețea

Deci, pe coridor există un computer care execută funcțiile unui poligon router / file-store / test. Pe balcon este o cameră web, care se uită la stradă și în idee - transferă imaginea la computer.

Inițial, camera Web a fost conectată la computer prin intermediul a doi extensori USB (3m + 5m). Dar, într-o astfel de legătură, ea nu voia să fie definită în nici un caz. Prin urmare, sa decis cumpararea unui usb-hub (D-Link DUB-1040), care costa aproximativ 250 de ruble. în orașul nostru provincial :) După aceea a fost perfect recunoscută.

Computerul rulează FreeBSD. Inițial, toate verificările pe laptop-ul cu Windows 7. După ce a reușit să recupereze imaginea de pe webcam-ul, a început următoarea etapă - de a funcționa în cadrul FreeBSD.

ugen0.3 este doar un hub USB, și ugen0.4 este o cameră care este conectată prin ea. Toate echipamentele au fost identificate și gata de plecare.

Următorul pas este instalarea driverelor pentru camera web. Recent, FreeBSD a porționat un set de drivere pentru camere web de pe Linux, care este inclus în portul multimedia / webcamd.
Instalați acest port:

Imediat încărcăm modulul cuse4bsd în /boot/loader.conf și îl încărcăm:

Nativ rc-script webcamd (/usr/local/etc/rc.d/webcamd) nu este bun, asa ca da-l la această formă:

și adăugați următoarele rânduri în /etc/rc.conf:

ugen0.4 este numărul dispozitivului de pe magistrala USB care corespunde camerei web. În cazul meu, acesta este ugen0.4. lista de dispozitive de pe magistrala USB poate fi vizualizată folosind comanda usbconfig.

Aceasta completează instalarea webcamd. Fugi și verifică. Dacă este reușit, ar trebui să apară un nou dispozitiv / dev / videoN:

În regulă, camera este pregătită să meargă.

Colectăm ffmpeg (/ usr / ports / multimedia / ffmpeg), dezactivând anterior totul, cu excepția optimizării și ffserver în el:

Trebuie remarcat că, din anumite motive, FreeBSD nu suportă video4linux. Pentru a remedia această situație, accesați directorul / usr / ports / multimedia / ffmpeg / files și căutați fișierul configurație cu patch-uri:

Tot ceea ce este alocat este șters. Se va întâmpla așa ceva:

Colectăm și instalează ffmpeg:

Și verificăm dacă acesta este construit cu suportul video4linux:

Acum continuați să configurați ffserver. După ce i-ați scos baza pentru el, scrie-i propria sa. Obținerea acestui formular:

Punem în ordine rf-script ffserver:

și să o pornim în /etc/rc.conf cu următorul rând:

ffserver este gata să lucreze, acum rămâne să-i alimenteze fluxul - și va începe să-l difuzeze. Pentru a face acest lucru, vom scrie un script ca acesta:

Toate fluxul de intrare de lucru) Stream # 0.0: Video: rawvideo, yuv420p, 640 x 480, 55296 kb / s, 15 TBR, 1000k TBN, 15 tbc) este fixat la ieșire (Stream # 0.0: Video: FLV, yuv420p, 640 × 480, q = 2-31, 1000 kb / s, 1000k TBN, 15 tbc). Se utilizează codecul flv.
Linia de jos afișează informațiile operaționale, câte cadre sunt procesate, rata cadrelor, calitatea, dimensiunea fluxului, timpul și alte ...

Pentru a vedea ce sa întâmplat cu mine - puteți să veniți aici.

Dar, totuși, proiectul se dezvoltă în mod constant și sper că aceste puțuri vor fi îndepărtate în curând.

Până în prezent, ramura stabilă pentru FreeBSD FFMPEG acolo glaf cu blocare soclu, din cauza a ceea ce procesorul este încărcat la o soluție de 100% la această problemă poate fi găsită aici.

Dacă cineva este interesat - pot posta fotografii, cum sa întâmplat totul în direct :)