Neveikia internetinė vaizdo kamera naršyklėje, bet veikia kitur?

Kai kurios internetinės vaizdo kameros dalyje programų gali veikti (pvz., VLC), o kai kuriose kitose programose gali neveikti (Firefox interneto naršyklėje, Google Chrome interneto naršyklėje, Skype). Kaip sutvarkyti, kad galėtumėte filmuoti / perduoti vaizdą ir tose kitose programose?

Konkretus bėdos pavyzdys: interneto naršyklė Firefox / Facebook nerodo internetinės kameros kameros vaizdo (galite matyti klaidą „An Error occured when trying to get access to Camera and/or Microphone: Starting video failed“), nors naršyklėje mato, kad kamera tam tikru pavadinimu yra, ir naršyklėje leidžiate Facebook svetainei prieiti prie tos vaizdo kameros. Nepaisant to, internetinė kamera gali puikiai veikti tos pačios operacinės sistemos specializuotose įvairialypės terpės (multimedijos) programose kaip VLC - tokiu atveju tik sustiprėja įtarimas, kad bėda ne kameroje, ne openSUSE Linux sistemoje, o konkrečioje programoje.

Pasitikrinkite, ar įdiegtas libv4l paketas.

Pasitikrinkite, ar įdiegti libavcodec56, libavdevice56, libavformat56, libavcodec57, libavdevice57, libavformat57, libavcodec58, libavdevice58, libavformat58, gstreamer-plugins-bad, gstreamer-plugins-libav, gstreamer-plugins-ugly ir panašūs vaizdo kodavimo paketai. Tokie paketai turi būti būtent iš Packman saugyklos (jei tokios neturite - įtraukite per YaST valdymo centrą → Saugyklos), o ne iš atviro kodo saugyklų (numatytose pagrindinėse atviro kodo saugyklose atitinkami paketai nesuteikia visų reikiamų formatų palaikymo dėl patentų/licenzijų apribojimų). Tad eikite per YaST valdymo centrą → Programinės įrangos tvarkytuvę, atverkite Saugyklų kortelę, pažymėkite PackMan saugyklą ir spauskite nuorodą „Pakeisti sistemos paketus versijomis iš šios saugyklos“.

Pabandykite savo programą paleisti komandinėje eilutėje, tačiau prieš programos komandą prirašykite prašymą įkelti v4l1compat.so arba v4l2convert.so biblioteką iš libv4l paketo. Pavyzdžiui, uždarykite visus Firefox naršyklės langus ir paleiskite ją iš naujo terminalo / konsolės programoje įvykdę eilutę:

LD_PRELOAD=/usr/lib64/libv4l/v4l1compat.so firefox

arba

LD_PRELOAD=/usr/lib64/libv4l/v4l2convert.so firefox

Atkreipkite dėmesį į savo sistemos bei programų architektūrą. Jei programa yra 64 bitų, o nurodytumėte 32 bitų biblioteką, tai tos bibliotekos nepavyks įkelti ir matysite pranešimą, panašų į ERROR: ld.so: object ‘/usr/lib/libv4l/v4l1compat.so’ from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored

Jei naudojate 32 bitų sistemą / programą, tuomet bandykite:

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so firefox

arba

LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so firefox

Kaskart atvėrę programą su vis kita biblioteka, pasitikrinkite, ar ji jau tinkamai veikia su jūsiške internetine vaizdo kamera.

Kai rasite, kuri biblioteka jums reikalinga, galėsite pasitaisyti programos paleidimo ženkliuką, kad nebereikėtų kaskart programos paleidinėti iš komandinės eilutės.

Jei norite keisti programos paleidimo ženkliuką visiems naudotojams, tuomet reiktų administratoriaus teisėmis pakeisti /usr/share/applications/ kataloge esantį desktop tipo rinkmenoje eilutę, prasidedančią Exec=. Pavyzdžiui, pakeisti Firefox programos paleidimo ženkliuką galite komandinėje eilutėje įvykdę:

sudo sed “s/Exec=firefox/Exec=LD_PRELOAD=\/usr\/lib64\/libv4l\/v4l1compat.so firefox/” -i /usr/share/applications/firefox.desktop

Vis tik pakeitimai /usr/share/applications/ kataloge gali neišsilaikyti po programų atnaujinimų…

Galite paleidimo programos paleidimo ženkliukus pakeisti savo naudotojo darbalaukyje - tuomet jų nepaveiks programos atnaujinimai. Tiesa, kiekvieną ženkliuką KDE Plasma 5 darbalaukyje tektų keisti atskirai - atskirai meniu ženkliuką, atskirai darbalaukio ženkliuką, atskirai skydelio ženkliuką…

KDE Plasma 5 darbalaukyje atvėrus ženkliuko savybių langą, reikia rinktis kortelę Programa ir joje pakeisti programos paleidimo komandą prirašant prašymą įkelti atitinkamą biblioteką: