Mint a linuxban, kapcsolja be a dv-kamerát egy webkamerába (cikkek - számítógép linux hogyan kell megállítani
Azonban, ahogy néhány fórumon azt mondták, nem találtak olyan eseteket, amikor a kamerát Linuxra csatlakoztatták WEB-kamera formájában az interneten. Ha USB-kamerával csatlakozik, akkor általában USB-eszközként definiálódik, és véget ér. A / dev / videoX eszközök nem hozhatók létre, mert a rendszermag meghajtóknak nincs támogatója a fényképezőgépnek, és nyilvánvalóan soha nem lesz.
De ne hazudj ugyanazon a kamerán tétlenül! Különösen azért, mert a távoli város nagymamája meglepődött, miért állíthat be Skype-ot a kamerával, hogy láthassuk őt és olyan fejlett számítógépes tudósokat, amilyet nem. Sértésnek éreztem magam, és úgy döntöttem, minden áron elindítom ezt a kamerát Linux alatt.
Így kiderült, hogy egyes kézművesek összekapcsolják a DV-kamerákat egy FireWire kábellel, majd a vloopback kernel modul használatával. hozza létre a / dev / video0 eszközt. Ez egy szokásos webkamera eszközfájl, olyan programokkal, mint a Kopete és a Skype. Ennek a folyamatnak a teljes leírása és a szükséges parancsok bárhol nem találtak, ezért kezdett megérteni, vagyis nulláról.
Az első dolog, ami kiderült, hogy a vloopback modul csak a 2.6.x rendszermagok számára létezik, és a 3.2.x-hez való implementálása nem jellegzetes. És van egy Debian Testing Squeezy rendszere a 3.2.0-4-686-péppel. A 3.2.x rendszermag forrásokból történő vloopback gyűjtéséhez azonban nem jelent meg, és a hivatalos verzióban a 3. verziójú kernelek támogatásáról.
A modul telepítéséhez kernel fejlécfájlokat kell telepíteni, amelyeket általában linux-headers * neveznek. Az én esetemben ez egy linux-fejléc-3.2.0-4-os csomag. Telepítettem, majd kicsomagoltam a v4l2loopback archívumot, és a telepítést végeztem:
- készítés (felhasználó szerint)
- telepítés (rue-ból)
Ennek eredményeképpen a modulot összeállították és telepítették a rendszerbe. Az Autostart modul sehol nincs installall-script írva, először kézzel indítható:
Ha a modul sikeresen elindult, a / dev / video0 fájl létrehozásra kerül a rendszeren. és a modulok listájában (az lsmod paranccsal nézheted meg) láthatod a sorokat:
v4l2loopback 22660 0
videodev 61658 1 v4l2loopback
Feltételezzük, hogy az ügy fele megtörtént.
Ezután ellenőrizni kell, hogy a Linux rendszer elfogadja-e a FireWire adatait. Pomjatuya, hogy mivel a Linux 2.6.x kernelének néhány verziója eltávolította a raw1394 modult. és kicserélte a firewire_ohci + firewire_core modulokkal. amellyel a szoftver fele nem működik, készen állok egy hosszú szedésre. De meglepő módon a szerkesztő program Kino vidáman megmutatta a képet a kamerából. Örültem, és megpróbáltam ellenőrizni, hogy a FireWire stream átvihető-e az mplayer / mencoder-re.
Kezdetben csak ellenőriztem a titkosítást egy fájlra a dvgrab konzolprogramon keresztül:
Ezután ellenőriztem, hogy az mplayer képes-e adatátvitel a fényképezőgépből. A dvgrab program átviheti a FireWire adatokat egy szabványos adatfolyamra. Ehhez tegyen egy "-" jelet a parancs végén. És a program mplayer képes adatokat fogadni a szabványos adatfolyamból. Ehhez a csapat végén egy "-" jelet is fel kell tenned.
Ennek eredményeképpen létrejött a következő parancs:
dvgrab -noavc - | mplayer -noconsolecontrols -
Láthatja a FireWire áramlását és a VLC-n keresztül:
dvgrab -noavc - | vlc -
De a VLC az MPlayerhez képest erőteljes késéssel jeleníti meg a képet.
Most a következőket kell tennie:
Az első három elemet a következő parancs hajtja végre:
dvgrab -noavc - | mencoder -ovc nyers -nosound -vf tfields = 0, detc, scale = 320: 340, formátum = yuy2 -o / dev / video0 -
Röviden fussunk a mencoder lehetőségekkel.
Nem sikerült csatlakozni a videóeszközhöz (/ dev / video0).
A kapcsolódás ellenőrzése.
Azt mondják, hogy ez a hiba azért fordul elő, mert a felhasználó nem szerepel a videocsoportban. Ellenőrizze - a felhasználót a csoportos videón. Akkor mi a baj?
A kép villogott, zöld és kék csíkok voltak, a szín hiányzik. Ó, és régóta megértettem miért. Végül nem értettem, de részben sikerült megoldani a problémát.
Miért a zöldes árnyék? Mert a README programban a teszt azt mondja:
mivel az összes pixelt "0" -ra állítja, zöld lesz.
Mindent köpöm, a forráskód tesztbe kerültem. a globális változó mellett a debug a globális pixel_byte változóval rendelkezik:
statikus int debug = 0;
__u8 pixel_byte = 128;
A kód a memóriatöltést a 0 állandóval találta meg:
memset (puffer, 0, frameize);
memset (check_buffer, 0, frameize);
(i = 0;
>
memset (puffer, pixel_byte, framesize);
memset (check_buffer, pixel_byte, framesize);
(i = 0;
>
Összevont, indított, és felvette az állandó pixel_byte = 128 értékét. Ő vele a kép szürke árnyalatú, nem zöld. A tesztprogram kiválasztásakor és újraindításakor váratlanul kiderült, hogy a tesztprogram három vagy öt kezdete után minden digitális zaj eltűnik, és a kép tiszta lesz, mindenféle tárgy nélkül:
Megkérdeztem tőle, hogy készítsen egy képernyőképet a képről, amelyet a Skype nyújt az oldalán. És ezt láttam:
A valós méret megtekintéseEgyrészt - undorító függőleges csíkok ismeretlen eredetűek. Másrészről van egy felbontása 720x360 (miért, csodálom? Mencoder kellett volna méretezni a patak 320x160
170). A sor elolvassa a számokat, és láthatja a milliméteres jelölést. Annak biztosítása érdekében, hogy a beszélgetőpartner el tudja képzelni, hogy kihez beszél, ez a "minőség" elég.
Általában véve úgy gondolom, hogy ez a kép sokkal jobb, mint a fogyasztói WEB-kamerák kiadása 700-800 rubelre. Csak fekete-fehér.