---
title: 7. Fejezet - Multimédia
part: II. Rész Gyakori feladatok
prev: books/handbook/desktop
next: books/handbook/kernelconfig
showBookMenu: true
weight: 10
params:
  path: "/books/handbook/multimedia/"
---

[[multimedia]]
= Multimédia
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 7
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/multimedia/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[multimedia-synopsis]]
== Áttekintés

A FreeBSD a hangkártyák széles választékát ismeri, ami által képesek vagyunk számítógépünkkel hi-fi minõségû hangzást létrehozni. Ennek részeként rögzíteni és visszajátszani tudunk többek közt MPEG Audio Layer 3 (MP3), WAV és Ogg Vorbis formátumokban. A FreeBSD Portgyûjteménye ezenkívül tartalmaz még olyan alkalmazásokat is, amelyekkel szerkeszteni lehet a felvett hangokat, effekteket hozzátenni és vezérelni a hangkártyánkhoz csatlakoztatott MIDI eszközöket.

Némi kísérletezéssel a FreeBSD még videoállományok és DVD-k lejátszására is rávehetõ. A különféle videoanyagok kódolására, konvertálására és visszajátszására alkalmas programok száma azonban jóval kisebb, mint a hanganyagok esetén. Például az írás pillanatában nincs a FreeBSD Portgyûjteményében a formátumok közti konvertálásra alkalmas, a videókat olyan jól újrakódolni tudó alkalmazás, amilyen az audio esetén az package:audio/sox[]. Azonban ezen a területen a szoftverek palettája gyorsan változik.

Ebben a fejezetben bemutatjuk a hangkártyánk beállításához szükséges lépéseket. Az X11 telepítése és beállítása (crossref:x11[x11,Az X Window System]) során ugyan már foglalkoztunk a videokártyánkkal kapcsolatos hardveres problémákkal, azonban a jobb visszajátszás érdekében további cselfogásokat is be kell majd vetnünk.

A fejezet elolvasása során megismerjük:

* hogyan állítsuk be úgy a rendszerünket, hogy felismerje a hangkártyánkat;
* hogyan bizonyosodjuk meg róla, hogy a kártyánk valóban mûködik;
* hogyan oldjuk meg a hangkártya beállítása során felmerülõ problémákat;
* hogyan játsszunk le és kódoljunk MP3-at vagy más egyéb hangformátumot;
* hogyan támogatja a videokat az X szerver;
* hogyan adnak az egyes lejátszók és kódolók még jobb eredményt
* hogyan játsszunk le DVD-ket, [.filename]#.mpg# és [.filename]#.avi# állományokat;
* hogyan mentsük a CD-k és DVD-k tartalmát állományokba;
* hogyan állítsuk be a TV kártyánkat
* hogyan állítsunk be egy scannert.

A fejezet elolvasásához ajánlott:

* egy új rendszermag beállításának és telepítésének ismerete (crossref:kernelconfig[kernelconfig,A FreeBSD rendszermag testreszabása]).

[WARNING]
====

Ha zenei CD-ket próbálunk meg a man:mount[8] paranccsal csatlakoztatni, akkor az hibával, vagy a legrosszabb esetben akár _teljes rendszerösszeomlással_ is járhat. Az ilyen típusú lemezek az ISO szabványú állományrendszerekétõl eltérõ kódolással rendelkeznek.
====

[[sound-setup]]
== A hangkártya beállítása

[[sound-device]]
=== A rendszer beállítása

A mûvelet megkezdése elõtt ki kell derítenünk, milyen típusú hangkártyánk van, milyen chip van rajta, PCI vagy ISA buszon csatlakozik-e. A FreeBSD rengeteg PCI és ISA buszos kártyát ismer egyaránt. A sajátunk beazonosításához a támogatott hangeszközök listáját a link:{u-rel120-hardware}[Hardware Notes] (Hardverjegyzék) oldalán találhatjuk meg. Ebbõl a jegyzékbõl mellesleg azt is megtudhatjuk, hogy melyik meghajtó kezeli a kártyánkat.

A hangeszközünk használatához be kell töltenünk a neki megfelelõ meghajtót. Ez két módon is megtehetõ. Ezek közül az a legkönnyebb, ha a man:kldload[8] paranccsal egyszerûen betöltjük a rendszermag hangkártyánkhoz tartozó modulját. Ezt megtehetjük közvetlenül parancssorból:

[source,shell]
....
# kldload snd_emu10k1
....

vagy a [.filename]#/boot/loader.conf# állományból az alábbihoz hasonló sor hozzáadásával:

[.programlisting]
....
snd_emu10k1_load="YES"
....

A fenti példák a Creative SoundBlaster(R) Live! hangkártyára vonatkoznak. A többi betölthetõ hangkártya-modul felsorolása a [.filename]#/boot/defaults/loader.conf# állományban található. Ha nem vagyunk benne biztosak, hogy melyik meghajtót is akarjuk pontosan használni, akkor próbálkozzunk az [.filename]#snd_driver# modul betöltésével:

[source,shell]
....
# kldload snd_driver
....

Ez egy olyan metameghajtó, ami egyszerre betölti az összes érintett eszközmeghajtót, és segítségével felgyorsíthatjuk a megfelelõ meghajtó megtalálását. A [.filename]#/boot/loader.conf# használatával is be tudjuk ugyanígy tölteni az összes meghajtót.

Az [.filename]#snd_driver# metameghajtó betöltése után úgy kereshetjük meg a ténylegesen használatban levõ meghajtót, ha megnézzük a [.filename]#/dev/sndstat# állományt a `cat /dev/sndstat` paranccsal.

A második módszer szerint a hangkártyánk támogatását statikusan beépítjük a rendszermagba. A lentebb található szakaszban olvashatjuk mindazok az információkat, amelyekre szükségünk lehet ennek elvégzése közben. A rendszermag újrafordításával kapcsolatban forduljunk a crossref:kernelconfig[kernelconfig,A FreeBSD rendszermag testreszabása]hez.

==== A hangkártya támogatásával rendelkezõ saját rendszermag összeállítása

Elsõként hozzá kell adnunk a rendszermaghoz a hangeszközök alapmeghajtóját, a man:sound[4] eszközt. Ezt a rendszermag beállításait tartalmazó állományban az alábbi sor felvételével tehetjük meg:

[.programlisting]
....
device sound
....

Ezután tegyük még hozzá a hangkártyánkhoz kapcsolódó támogatást is. Ehhez viszont pontosan tudunk kell, melyik meghajtó képes mûködtetni a kártyát. A hangkártyához tartozó meghajtót a link:{u-rel120-hardware}[Hardware Notes] (Hardverjegyzék)-ben található eszközök listájából deríthetjük ki. Például a Creative SoundBlaster(R) Live! hangkártyát a man:snd_emu10k1[4] meghajtó kezeli. Ennek a hangkártyának a támogatását az alábbi sorral állíthatjuk be:

[.programlisting]
....
device snd_emu10k1
....

Az itt használatos formátumot a meghajtó man oldalának átolvasásából tudhatjuk meg. Azonban az összes támogatott hangkártya meghajtó megadásának pontos formátuma megtalálható a [.filename]#/usr/src/sys/conf/NOTES# állományban is.

A PnP (Plug n Play)-t nem ismerõ ISA kártyák esetén az összes többi nem PnP-s ISA kártyához hasonlóan szükséges lehet a rendszermag számára megadnunk a kártya hardveres beállításait (IRQ, I/O port stb). Ezt a [.filename]#/boot/device.hints# állományon keresztül tehetjük meg. A rendszerindítási folyamat során a man:loader[8] beolvassa ezt az állományt, majd átadja a benne szereplõ információkat a rendszermagnak. Például a Creative SoundBlaster(R) 16, nem PnP-s ISA kártya az `snd_sb16` meghajtóval együtt az man:snd_sbc[4] meghajtót használja. A kártya használatához a rendszermag beállításait tartalmazó állományba ezeket a sorokat kell megadni:

[.programlisting]
....
device snd_sbc
device snd_sb16
....

valamint a [.filename]#/boot/device.hints# állományba ezeket:

[.programlisting]
....
hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"
....

Ekkor a kártya a `0x220` I/O portot és `5` IRQ-t használja.

A [.filename]#/boot/device.hints# állományban alkalmazott felírási módról bõvebben a man:sound[4], valamint a kérdéses meghajtó man oldalán tájékozódhatunk.

A fentiekben bemutatott beállítások alapértelmezettek, néhány esetben azonban a kártyánknak megfelelõen meg kell változtatnunk az IRQ és egyéb értékeket. Errõl a kártyáról konkrétan a man:snd_sbc[4] man oldalon olvashatunk részletesebben.

[[sound-testing]]
=== A hangkártya kipróbálása

Miután újraindítottuk a számítógépünket a módosított rendszermaggal, vagy miután betöltöttük a szükséges modult, a hangkártyának valahogy így kell megjelennie a rendszerünk üzenetpufferében (man:dmesg[8]):

[source,shell]
....
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>
....

A hangkártyánk állapota a [.filename]#/dev/sndstat# állományon keresztül ellenõrizhetõ:

[source,shell]
....
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)
....

Ez a kiírás rendszerenként eltérhet. Ha nem látunk semmilyen [.filename]#pcm0# eszközt, akkor menjünk vissza és nézzük át újra, pontosan mit is csináltunk. Vizsgáljuk át a rendszermagunk beállításait tartalmazó állományt és gyõzõdjünk meg róla, hogy a megfelelõ meghajtót adtuk meg. Az itt felmerülõ gyakori gondokkal a <<troubleshooting>> foglalkozik.

Ha azonban minden remekül haladt, akkor most már van egy mûködõ hangkártyánk. Ha rendesen összekapcsoltuk hangkártyánkat a CD- vagy DVD-meghajtónk audio csatlakozásával, akkor tegyünk egy CD-t a meghajtóba és kezdjük el játszani a man:cdcontrol[1] paranccsal:

[source,shell]
....
% cdcontrol -f /dev/acd0 play 1
....

Az olyan alkalmazások, mint például az package:audio/workman[], ehhez egy sokkal barátságosabb felületet nyújtanak. Az MP3 formátumú állományok meghallgatásához pedig minden bizonnyal jól fog jönni egy olyan alkalmazás is, mint például az package:audio/mpg123[].

A kártyát úgy is tesztelhetjük, ha az alábbihoz hasonló módon adatokat küldünk a [.filename]#/dev/dsp# állományba:

[source,shell]
....
% cat állománynév > /dev/dsp
....

ahol az _állománynév_ tetszõleges állomány neve lehet. A parancs hatására valamilyen zajt kell hallanunk, és ez egyben meg is erõsíti, hogy a hangkártyánk mûködik.

A hangkártyánk csatornáinak jellemzõit a man:mixer[8] paranccsal állíthatjuk. Errõl további részleteket a man:mixer[8] man oldalon olvashatunk.

[[troubleshooting]]
==== Gyakori problémák

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Hiba
| Megoldás

|`sb_dspwr(XX) timed out`
|Nem állítottuk be jól az I/O portot.

|`bad irq XX`
|Nem állítottuk be jól az IRQ értékét. Gondoskodjunk róla, hogy a beállított érték megegyezik a hangkártyánkéval.

|`xxx: gus pcm not attached, out of memory`
|Nincs elég memória az eszköz használatához.

|`xxx: can't open /dev/dsp!`
|A `fstat \| grep dsp` parancs kiadásával ellenõrizzük, hogy valamelyik alkalmazás használja-e már az eszközt. Gyakori bajkeverõ az esound és a KDE hangtámogatása.
|===

[[sound-multiple-sources]]
=== Több hangforrás kihasználása

Gyakran szükségünk lehet több hangforrás egyidejû használatára, fõleg olyankor, amikor az esound vagy az artsd bizonyos alkalmazásokkal nem hajlandó megosztani a hangeszközt.

A FreeBSD ezt a _virtuális hangcsatornák_ használatával oldja meg, amit a man:sysctl[8] eszközön keresztül tudunk engedélyezni. Amikor a rendszermagban virtuális csatornák használatával keverünk, akkor lényegében képesek vagyunk a hangkártyánk által egyszerre játszható hangok számát megtöbbszörözni.

A virtuális csatornák számának beállításához a sysctl három változóját kell módosítanunk, amelyet `root` felhasználóként így tehetünk meg:

[source,shell]
....
# sysctl dev.pcm.0.play.vchans=4
# sysctl dev.pcm.0.rec.vchans=4
# sysctl hw.snd.maxautovchans=4
....

A fenti példa négy virtuális csatornát hoz létre, ami egészen jellemzõ a mindennapi használatban. A `dev.pcm.0.play.vchans` és `dev.pcm.0.rec.vchans` a [.filename]#pcm0# eszköz lejátszásra és felvételre használt virtuális csatornáinak számát adja meg, amelyet az eszköz csatlakoztatása után tudunk beállítani. A `hw.snd.maxautovchans` az új eszközhöz tartozó virtuális csatornákat adja meg, ami akkor állítódik be, amikor a man:kldload[8] paranccsal csatlakoztatjuk. Mivel a [.filename]#pcm# modul a többi eszközmeghajtótól függetlenül töltõdik be, ezért a `hw.snd.maxautovchans` azt tárolja, hogy a késõbb hozzá csatlakozó eszközök mennyi virtuális csatornát fognak majd kapni. Errõl részletesebben a man:pcm[4] man oldalon olvashatunk.

[NOTE]
====
A használatban levõ eszközöknél nem tudjuk megváltoztatni a virtuális csatornák számát. Ehhez elõször le kell állítanunk az eszközt használó összes programot, tehát a zenelejátszókat és hangdémonokat.
====

Amennyiben nem használjuk ki a man:devfs[5] által nyújtott lehetõségeket, az összes alkalmazásnak a [.filename]#/dev/dsp0.x# eszközre kell mutatnia, ahol az _x_ értéke 0-tól 3-ig terjedhet attól függõen, hogy a `dev.pcm.0.rec.vchans` értékét a fenti példához hasonlóan 4-re állítottuk-e. A man:devfs[5] megoldását használó rendszerek esetén ez a folyamat automatikusan lezajlik, tehát az összes [.filename]#/dev/dsp# eszközre irányuló kérés magától átirányítódik.

=== A keverõ alapértelmezett értékeinek beállítása

A keverõben megjelenõ különbözõ csatornák alapértékei a man:pcm[4] meghajtó forráskódjában huzalozottan találhatóak meg. Számos alkalmazás és démon segít két hívás közt megõrizni a keverõben beállított értékeket, azonban ez nem teljesen tiszta megoldás. A meghajtó szintjén is be tudjuk állítani a keverõ alapértékeit - ezt a [.filename]#/boot/device.hints# állomány megfelelõ módosításával érhetjük el, például:

[.programlisting]
....
hint.pcm.0.vol="50"
....

Ezzel a man:pcm[4] modul betöltése során a hangerõ (volume) csatorna alapértelmezett értéket 50-re állítjuk.

[[sound-mp3]]
== MP3

Az MP3 (MPEG Layer 3 Audio) használatával közel CD minõségû hangot lehet elérni, ezért a mi FreeBSD munkaállomásunk sem maradhat ki elõnyeinek élvezetébõl.

[[mp3-players]]
=== MP3 lejátszók

Az XMMS (X Multimedia System) kiemelkedõen a legnépszerûbb X11-es MP3 lejátszó. Mivel az XMMS grafikus felhasználói felülete szinte teljesen megegyezik a Nullsoft Winampjának felületével, ezért még a Winamp skinjeit is használhatjuk vele. Az XMMS-ben ezenkívül még a natív pluginek támogatását is megtalálhatjuk.

Az XMMS a package:multimedia/xmms[] portból vagy csomagból telepíthetõ.

Az XMMS használatára könnyû ráérezni: megtaláljuk benne a lejátszandó számok listáját, egy grafikus hangszínszabályzót és még sok minden mást. Akik már ismerik a Winamp mûködését, azok az XMMS-t is egyszerûnek érzik majd.

Mellette az package:audio/mpg123[] port egy másik, parancssoros MP3 lejátszót kínál fel.

Az mpg123 futtatásához paraméterként meg kell adnunk a hangeszközt és lejátszandó MP3 állományt. Ha a hangeszközünk a [.filename]#/dev/dsp1.0# és a _IzéMizé-Sláger.mp3_ nevû MP3 állományt akarjuk rajta lejátszatni, akkor a következõt kell begépelnünk:

[source,shell]
....
# mpg123 -a /dev/dsp1.0 IzéMizé-Sláger.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

Playing MPEG stream from IzéMizé-Sláger.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
....

[[rip-cd]]
=== Sávok lementése CD-rõl

Mielõtt MP3 formátumba tömörítenénk egy CD-t vagy annak egy sávját, a CD-n található audio adatot valahogy le kell tudnunk szedni a merevlemezre. Ezt úgy tehetjük meg, ha a nyers CDDA (CD Digital Audio) adatot WAV formátumú állományokba mentjük.

A package:sysutils/cdrtools[] csomag részeként elérhetõ `cdda2wav` segédprogrammal tudjuk a CD-ken levõ audio és a hozzájuk tartozó egyéb információkat leszedni.

A meghajtóban levõ CD teljes tartalmát (`root` felhasználóként) a következõ parancs kiadásával lehet (sávonként) különálló WAV állományokba menteni:

[source,shell]
....
# cdda2wav -D 0,1,0 -B
....

A cdda2wav ismeri az ATAPI (IDE) CD-meghajtókat, használatukhoz a SCSI egység sorszáma helyett az eszköz nevét kell megadni. Tehát például így szedjük le egy IDE-meghajtóról a 7. sávot:

[source,shell]
....
# cdda2wav -D /dev/acd0 -t 7
....

A `-D __0,1,0__` a [.filename]#0,1,0# sorszámú SCSI eszközre utal, ami megfelel `cdrecord -scanbus` parancs eredményének.

Az egyes sávok lementéséhez a `-t` kapcsoló használható:

[source,shell]
....
# cdda2wav -D 0,1,0 -t 7
....

A példa szerint a zenei CD-rõl a hetedik sávot szedjük le. Egyszerre több sávot, például az elsõtõl a hetedikig, egy tartomány megadásával menthetünk le:

[source,shell]
....
# cdda2wav -D 0,1,0 -t 1+7
....

A man:dd[1] segédprogram is használható ATAPI eszközökön levõ hangsávok kimentéséhez. Ennek lehetõségérõl részletesebben a crossref:disks[duplicating-audiocds,Audio CD-k másolása]ban olvashatunk.

[[mp3-encoding]]
=== MP3 állományok tömörítése

Az MP3 állomány tömörítésére manapság a legtöbben a lame elnevezésû kódolót választják. A portfában a lame az package:audio/lame[] helyen található meg.

Az elõbb kimentett WAV állományok felhasználásával az alábbi paranccsal tudjuk átalakítani a [.filename]#audio01.wav# állományt [.filename]#audio01.mp3# állománnyá:

[source,shell]
....
# lame -h -b 128 \
--tt "Izé dal címe" \
--ta "Izé-mizé előadó" \
--tl "Izé-mizé album" \
--ty "2001" \
--tc "Leszedte és tömörítette: Izé" \
--tg "Műfaj" \
audio01.wav audio01.mp3
....

A 128 kbites tömörítés a gyakorlatban leginkább használt kódolási arány, sokan azonban a sokkal jobb minõségû 160 vagy 192 kbites tömörítést szeretik. Minél nagyobb a kódolási arány, annál több helyet fog foglalni a keletkezõ MP3 állomány - habár a minõsége is jobb lesz. A `-h` kapcsoló alkalmazásával tudjuk aktivizálni a "jobb minõségû de valamivel lassabb" módot. A `--t` kezdetû paraméterek ID3 tageket adnak meg, amelyek segítségével az MP3 állományokba rájuk vonatkozó információkat tudunk beágyazni. A tömörítés további beállításairól a lame man oldalán tájékozódhatunk.

[[mp3-decoding]]
=== MP3 állományok kitömörítése

Ha MP3 formátumú állományokat szeretnénk audio CD-re írni, akkor ehhez elõször tömörítetlen WAV formátumba kell ezeket alakítanunk. Az XMMS és az mpg123 is egyaránt lehetõséged ad az MP3 állományok kitömörítésére.

Lemezre írás az XMMS-sel:

[.procedure]
====
. Indítsuk el az XMMS alkalmazást.
. Az XMMS menüjének felhozásához kattinsunk jobb gombbal az ablakjára.
. Válasszuk az `Options` almenüben található `Preference` menüpontot.
. Változtassuk meg az "Output Plugin" beállítást a "Disk Writer Plugin" értékre.
. Nyomjunk a `Configure` gombra.
. Írjuk be (vagy válasszuk ki a `Browse` gombbal) a könyvtárat, ahová majd a kitömörített állományok kerülnek.
. Az eddig megszokottak szerint töltsük be az XMMS-be az MP3 állományt, állítsuk 100%-ra a hangerõt és kapcsoljuk ki a hangszínszabályzót (EQ, equalizer).
. Nyomjuk le a `Play` gombot - úgy fog tûnni, mintha az XMMS játszaná az MP3 állományt, de nem hallunk semmit. Ekkor a tartalmát állományba menti.
. Mikor befejeztük a kitömörítést, ne felejtsük el visszaállítani az "Output Plugin" értékét az alapértelmezettre.
====

Írás a szabványos kimenetre az mpg123-mal:

[.procedure]
====
. Futtassuk le a `mpg123 -s audio01.mp3 > audio01.pcm` parancsot.
====

Az XMMS az állományokat WAV formátumban írja, miközben az mpg123 nyers PCM hangadatokat képez belõlük. A cdrecord használata során mind a két formátumból hozhatóak létre audio CD-k. A nyers PCM a man:burncd[8] programmal használható. Amikor WAV állományokkal dolgozunk, minden egyes sáv elején egy apró kattanást hallhatunk: ez a WAV állomány fejléce lesz. A (package:audio/sox[] portból vagy csomagból telepíthetõ) SoX segédprogrammal a WAV formátumú állományok fejléce pillanatok alatt eltávolítható: 

[source,shell]
....
% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw
....

A CD-írók FreeBSD alatti használatával kapcsolatban olvassuk el a crossref:disks[creating-cds,Lézeres tárolóeszközök (CD-k) létrehozása és használata]t.

[[video-playback]]
== Videók lejátszása

A videolejátszás egy nagyon friss és gyorsan fejlõdõ alkalmazási terület. Legyünk türelmesek, ez nem minden fog annyira könnyen menni, mint a hangok esetében.

A kezdéshez nem árt tudnunk, hogy a videokártyánk milyen gyártmányú és milyen chipet használ. Míg az Xorg és az XFree86(TM) számos különféle videokártyát ismer, csupán töredékükkel lehet jó lejátszási teljesítményt elõhozni. Az X11 futtatása közben az man:xdpyinfo[1] parancs kiadásával kérdezhetjük le az X szervertõl a kártyánk használatával elérhetõ kiterjesztéseket.

Érdemes a kezünk ügyében tartani egy rövidke MPEG formátumú állományt, amellyel majd ki tudjuk próbálni a különféle lejátszókat és azok beállításait. Mivel egyes DVD lejátszók alapértelmezés szerint a [.filename]#/dev/dvd# helyen keresik a lejátszandó DVD eszközt, vagy egyszerûen csak így írták meg ezeket, mindenképpen hasznos lehet, ha szimbolikus linkeket hozunk létre a megfelelõ eszközökre:

[source,shell]
....
# ln -sf /dev/acd0 /dev/dvd
# ln -sf /dev/acd0 /dev/rdvd
....

A man:devfs[5] mûködése miatt azonban ezek a kézzel létrehozott linkek az újraindítás után már nem maradnak meg. A szimbolikus linkeket a rendszer minden egyes indulásakor úgy tudjuk automatikusan létrehozni, hogyha az [.filename]#/etc/devfs.conf# állományba felvesszük az alábbi sort:

[.programlisting]
....
link acd0 dvd
link acd0 rdvd
....

Emellett a DVD-k titkosításának feloldása, mely a DVD-meghajtók speciális funkcióit igényli, a DVD eszközökön írási jogot is igényel.

Az X11 osztott memóriát kezelõ felületének gyorsításához javasolt néhány man:sysctl[8] változó értékének megnövelése is:

[.programlisting]
....
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
....

[[video-interface]]
=== A megjelenítõ képességeinek megállapítása

Több különbözõ úton lehet X11 alatt videókat nézni, de ennek tényleges módját igazából a rendelkezésre álló hardver határozza meg. Az itt leírt módszerek által kihozható minõség hardverenként eltérhet. Másodsorban a videók megjelenítése az X11-ben az utóbbi idõben igen nagy hangsúlyt kapott, ezért az Xorg és az XFree86(TM) minden egyes változatával jelentõsen javulhat a helyzet ezen a téren.

A videók megjelenítésére használt gyakori felületek:

. X11: az X11 normális kimenete osztott memórián keresztül
. XVideo: az X11 felületének kiterjesztése, ami tetszõleges X11 által kirajzolható objektum esetén támogat videót
. SDL: a Simple Directmedia Layer
. DGA: a Direct Graphics Access (közvetlen grafikus hozzáférés)
. SVGAlib: alacsonyszintû konzolos grafikus réteg

[[video-interface-xvideo]]
==== XVideo

Az Xorg és az XFree86(TM) 4.X rendelkezik egy _XVideo_ (avagy Xvideo, Xv, xv) elnevezésû kiterjesztéssel, amelyen keresztül egy speciális gyorsítás segítségével a kirajzolható objektumokban közvetlenül meg tudunk jeleníteni videókat. Ezzel a kiterjesztéssel még a gyengébb gépeken is nagyon jó minõségû lejátszást tudunk elérni.

A kiterjesztés mûködésérõl az `xvinfo` parancs kiadásával gyõzõdhetünk meg:

[source,shell]
....
% xvinfo
....

Ha a parancs eredménye ehhez hasonló, akkor a kártyánk támogatja az XVideót:

[source,shell]
....
X-Video Extension version 2.2
screen #0
  Adaptor #0: "Savage Streams Engine"
    number of ports: 1
    port base: 43
    operations supported: PutImage
    supported visuals:
      depth 16, visualID 0x22
      depth 16, visualID 0x23
    number of attributes: 5
      "XV_COLORKEY" (range 0 to 16777215)
              client settable attribute
              client gettable attribute (current value is 2110)
      "XV_BRIGHTNESS" (range -128 to 127)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_CONTRAST" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_SATURATION" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_HUE" (range -180 to 180)
              client settable attribute
              client gettable attribute (current value is 0)
    maximum XvImage size: 1024 x 1024
    Number of image formats: 7
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x36315652 (RV16)
        guid: 52563135-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x3e0, 0x7c00
      id: 0x35315652 (RV15)
        guid: 52563136-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x7e0, 0xf800
      id: 0x31313259 (Y211)
        guid: 59323131-0000-0010-8000-00aa00389b71
        bits per pixel: 6
        number of planes: 3
        type: YUV (packed)
      id: 0x0
        guid: 00000000-0000-0000-0000-000000000000
        bits per pixel: 0
        number of planes: 0
        type: RGB (packed)
        depth: 1
        red, green, blue masks: 0x0, 0x0, 0x0
....

Az XVideo nem mindegyik implementációjában vannak jelen a felsorolt formátumok (YUV2, YUV12 stb.), ami viszont néhány lejátszó számára akadályokat jelenthet.

Amennyiben viszont ezt látjuk:

[source,shell]
....
X-Video Extension version 2.2
screen #0
no adaptors present
....

Akkor a kártyánk nem rendelkezik XVideo támogatással.

Ha az XVideo nem támogatott a kártyánk számára, akkor az csupán csak annyit jelent, hogy a gépünknek nehéz dolga lesz a videók megjelenítéséhez szükséges számítási kapacitás kiszolgálásában. Azonban a videokártyánktól és processzorunktól függõen még így is kielégítõ eredményt tudunk elõcsalni. Ekkor viszont minden bizonnyal érdemes lesz átolvasnunk a <<video-further-reading>>ban, miként tudjuk növelni a teljesítményét.

[[video-interface-SDL]]
==== A Simple Directmedia Layer

A Simple Directmedia Layer, vagy SDL, eredetileg a Microsoft(R) Windows(R), BeOS és UNIX(R) közti hordozhatóságot szándékozta megvalósítani, aminek segítségével a hangot és grafikát hatékonyan használni tudó alkalmazások hozhatóak létre. Az SDL által nyújtott réteg a hardver olyan alacsonyszintû absztrakcióját öleli fel, amely gyakran még az X11 felületénél is hatékonyabb.

Az SDL a package:devel/sdl12[] helyen található.

[[video-interface-DGA]]
==== Direct Graphics Access (Közvetlen grafikus hozzáférés)

A közvetlen grafikus hozzáférés az X11 egy olyan kiterjesztése, ami lehetõvé teszi a programok számára az X szerver megkerülését és így közvetlenül a videokártya memóriáját képesek elérni. Mivel a megosztás hatékony megvalósításához ez nagyban építkezik alacsonyszintû leképzési mûveletekre, ezért az ilyet használó programokat `root` felhasználóként kell futtatni.

A DGA kiterjesztés a man:dga[1] segítségével tesztelhetõ és mérhetõ. A `dga` parancs kiadása után minden billentyû lenyomására megváltoztatja a képernyõn látható színeket. A kilépéshez a kbd:[q] billentyût kell lenyomni.

[[video-ports]]
=== A videókkal foglalkozó portok és csomagok

Ebben a szakaszban a FreeBSD Portgyûjteményébõl a videók lejátszására alkalmas programokat vesszük számba. A videolejátszás nagyon gyorsan fejlõdõ terület, ezért az itt említett különbözõ alkalmazások képességei az itt leírtaktól némileg eltérhetnek.

Elõször is fontos tisztában lennünk azzal, hogy számos FreeBSD-n futó videoalkalmazás eredetileg linuxos alkalmazásként indult, és közülük sokan még csak béta minõségûek. Íme a FreeBSD-n is megtalálható videocsomagokkal kapcsolatos néhány olyan gond, amivel esetleg összefuthatunk:

. Az egyik alkalmazás nem képes visszajátszani olyan állományt, amit egy másik alkalmazás hozott létre.
. Az alkalmazás nem képes visszajátszani a saját maga által készített állományokat.
. Ugyanazon alkalmazás két különbözõ gépen, amikor mind a kettõn az adott konfigurációra fordítjuk le, ugyanazt az állományt másképpen játssza vissza.
. Egy olyan látszólag egyértelmû szûrõ, mint például a kép átméretezése, a hibás átméretezõ rutin miatt nagyon csúnya eredményt produkál.
. Az alkalmazás gyakran elszáll.
. A porthoz nem találjuk a dokumentációt, egyedül csak az interneten vagy a port [.filename]#work# könyvtárában van.

Sok alkalmazás a "linuxizmus" jeleit is hordozza, vagyis gondok adódhatnak abból, hogy a szerzõk az alkalmazások mûködtetéséhez a Linux rendszermag és a különféle terjesztésekben megtalálható módosított szabványos könyvtárak különlegességeit használják ki. Ezeket a portok karbantartói nem mindig észlelik és javítják ki, ami miatt az alábbiak bármikor bekövetkezhetnek:

. A processzor jellemzõit a [.filename]#/proc/cpuinfo# állományon keresztül állapítják meg.
. A szálak helytelen használatuk miatt a program befejezõdésekor összeakadnak.
. Az alkalmazással gyakran együtt használt egyéb alkalmazások még nem nincsenek benne a FreeBSD Portgyûjteményében.

Az ilyen alkalmazások fejlesztõi a hordozhatóság javításával és a problémák megoldásával kapcsolatban eddig mindig igyekeztek együttmûködni a portok karbantartóival.

[[video-mplayer]]
==== MPlayer

Az MPlayer az utóbbi idõben felbukkant, gyorsan fejlõdõ videolejátszó. Fejlesztõinek célja a sebesség és rugalmasság a Linux, illetve más UNIX(R) rendszereken. A kezdeményezés abból fakadt, hogy a fejlesztés mögött álló csapat alapítójának elege lett az akkoriban elérhetõ lejátszók teljesítményébõl. Mondhatnánk, hogy ez a program feláldozta a grafikus felületet az áramvonalas kialakításért, azonban ha hozzászokunk a parancssori beállításokhoz és a billentyûkön keresztüli vezérléshez, remekül mûködik.

[[video-mplayer-building]]
===== Az MPlayer lefordítása

Az MPlayer a package:multimedia/mplayer[] helyen található. A program a fordítási folyamat során elvégez számos hardverellenõrzést, aminek eredményeképpen az egyik rendszeren fordított program nem vihetõ a másikra. Ezért különösen fontos portból fordítani és nem pedig bináris csomagot használni. Mindezek mellett a [.filename]#Makefile# állományban még számos, a `make` parancsnak a fordítás megkezdésekor átadható beállítást találhatunk:

[source,shell]
....
# cd /usr/ports/multimedia/mplayer
# make
N - O - T - E

Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.html
....

Az üzenet fordítása:

[source,shell]
....
F - I - G - Y - E - L - E - M

Az mplayert személyes igényeinkhez úgy tudjuk igazítani, ha
figyelmesen átnézzük a Makefile állományt!  Például a WITH_GTK1
megadásával az MPlayer GTK1 alapú grafikus felülettel jön létre.
A grafikus felület használatához telepítenünk kell a
/usr/ports/multimedia/mplayer-skins portot is, vagy letölteni a
hivatalos skingyűjteményt a http://www.mplayerhq.hu/homepage/dload.html
oldalról.
....

A port alapbeállításai a legtöbb felhasználó számára megfelelõek, habár az Xvid kódek használatához meg kell adnunk a `WITH_XVID` beállítást. Rajta kívül még az alapértelmezett DVD eszközt is érdemes megadni a `WITH_DVD_DEVICE` beállítással, amelynek alapértéke a [.filename]#/dev/acd0#.

A leírás elkészítésének idõpontjában az MPlayer portja létrehozza a HTML dokumentációt és a két végrehajtható állományt: az `mplayer` lejátszót és a videók újrakódolásáért felelõs `mencoder` segédprogramot.

Az MPlayer HTML dokumentációja nagyon közlékeny, és ha az olvasó nem találná valamelyik videohardver vagy felület leírását ebben a fejezetben, akkor ez a dokumentáció mindenképpen hasznos olvasnivalónak bizonyul. Ha a UNIX(R)-ok alatt elérhetõ videotámogatás leírását keressük, határozottan megéri idõt szánni az MPlayer dokumentációjának alapos végigolvasására.

[[video-mplayer-using]]
===== Az MPlayer használata

Az MPlayer használatához a felhasználói könyvtárunkban rendelkeznünk kell egy [.filename]#.mplayer# elnevezésû könyvtárral. Ezt a következõ paranccsal tudjuk létrehozni:

[source,shell]
....
% cd /usr/ports/multimedia/mplayer
% make install-user
....

Az `mplayer` parancssori paraméterei a hozzá tartozó man oldalon találhatóak meg, valamint mindezek a HTML dokumentációban még részletesebben. Ebben a szakaszban csupán néhányukat mutatjuk be.

Egy állomány, mint például a [.filename]#tesztvideo.avi#, a `-vo` beállításával játszható le a különbözõ felületeken:

[source,shell]
....
% mplayer -vo xv tesztvideo.avi
....

[source,shell]
....
% mplayer -vo sdl tesztvideo.avi
....

[source,shell]
....
% mplayer -vo x11 tesztvideo.avi
....

[source,shell]
....
# mplayer -vo dga tesztvideo.avi
....

[source,shell]
....
# mplayer -vo 'sdl:dga' tesztvideo.avi
....

Érdemes az itt felsorolt konfigurációk mindegyikét kipróbálni, mivel az egymáshoz mért teljesítményük rengeteg tényezõn múlik, de közülük talán maga a hardver a legjelentõsebb.

A DVD-k lejátszásához cseréljük ki a [.filename]#tesztvideo.avi# paramétert a `dvd://_N_ -dvd-device _ESZKÖZ_` paraméterekkel, ahol az _N_ a lejátszandó fejezet sorszáma, valamint az [.filename]#ESZKÖZ# a DVD-hez tartozó eszközleíró. Például így tudjuk elkezdeni [.filename]#/dev/dvd# eszközrõl a 3. fejezet lejátszását:

[source,shell]
....
# mplayer -vo xv dvd://3 -dvd-device /dev/dvd
....

[NOTE]
====
A port fordítása során a `WITH_DVD_DEVICE` paraméter segítségével megadható az alapértelmezett DVD eszköz, amely alapból a [.filename]#/dev/acd0#. Errõl többet a port [.filename]#Makefile# állományában találhatunk.
====

A leállításhoz, szüneteltetéshez, továbblépéshez és többi hasonló funkcióhoz tartozó billentyûket a `mplayer -h` parancs kimenetébõl vagy a man oldal elolvasásából deríthetjük ki.

A lejátszáshoz tartozó néhány viszonylag fontos beállítás: az `-fs -zoom` teljesképernyõs módra vált, valamint a `-framedrop` segít növeli a teljesítményt.

A lejátszáskor kiadandó parancs túlburjánzását el tudjuk kerülni, ha létrehozunk egy [.filename]#.mplayer/config# állományt és itt állítjuk be a gyakori opciókat:

[.programlisting]
....
vo=xv
fs=yes
zoom=yes
....

Végezetül megemlítjük, hogy az `mplayer` segítségével a DVD-n található fejezeteket ki tudjuk menteni [.filename]#.vob# állományokba. A DVD második fejezetének kimentéséhez gépeljük be ezt:

[source,shell]
....
# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
....

A parancs eredményeképpen keletkezõ [.filename]#out.vob# állomány formátuma MPEG lesz, amit a fejezetben bemutatott további csomagokkal tudunk feldolgozni.

[[video-mencoder]]
===== mencoder

A `mencoder` használatának megkezdése elõtt javasolt alaposan beleásnunk magunkat a HTML dokumentációba és megismerkednünk az alapvetõ beállításaival. Van külön man oldala is, azonban a HTML leírás nélkül önmagában ez nem túl sokat ér. Megszámlálhatatlan úton és módon növelhetõ benne a minõség, csökkenthetõ a kódolási arány, változtatható a formátum, és ezen apró finomságok felelõsek a jó vagy éppen a rossz teljesítményért. A témába néhány példa bemutatásával igyekszünk beavatni az olvasót. Elõször vegyünk egy egyszerû másolást:

[source,shell]
....
% mencoder bemenő.avi -oac copy -ovc copy -o eredmény.avi
....

A parancssori paraméterek helytelen kombinációja olyan állományokat eredményezhet, amelyeket még maga az `mplayer` sem képes lejátszani. Ezért ha csak le akarunk szedni egy állományt, akkor maradjunk meg az `mplayer` `-dumpfile` opciójánál.

A [.filename]#bemenõ.avi# állományt MPEG4 video- és MPEG3 hangtömörítéssel (amihez kell majd a package:audio/lame[]) így tudjuk lekódolni:

[source,shell]
....
% mencoder bemenõ.avi -oac mp3lame -lameopts br=192 \
	 -ovc lavc -lavcopts vcodec=mpeg4:vhq -o eredmény.avi
....

Ezzel az `mplayer` és `xine` programok számára is egyaránt lejátszható állomány jön létre.

A DVD fejezeteit úgy tudjuk közvetlenül kódolni, ha a parancssorban kicseréljük a [.filename]#bemenõ.avi# állományt az `dvd://1 -dvd-device /dev/dvd` beállításra, illetve ha a programot `root` felhasználóként futtatjuk. De mivel elsõre általában ritkán vagyunk elégedettek a kódolással, érdemes elõször inkább lementeni az egész fejezetet egy állományba, majd azon dolgozni.

[[video-xine]]
==== A xine videolejátszó

A xine egy széles hatókörû projekt, amelynek nem csak az a célja, hogy egy "mindenes" videolejátszó alkalmazást fejlesszenek, hanem az is, hogy újrahasznosítható függvénykönyvtárakat és egy moduláris felépítésû programot hozzanak létre, amely kiegészítûkkel bûvíthetû. A package:multimedia/xine[] helyen portként, valamint csomagként is elérhetõ.

A xine itt-ott még valamelyest durva, de mindenképpen egy dicséretes kezdeményezés. A xine a gyakorlatban erõs processzort és mellé gyors videokártyát kíván, vagy pedig az XVideo kiterjesztés támogatását. A grafikus felhasználói felülete ugyan használható, de még kicsit esetlen.

Az írás pillanatában a xine mellé még nem kapunk olyan modult, amivel le tudnánk játszani a CSS kódolású DVD-ket. Léteznek azonban olyan külsõs modulok, amelyekkel meg lehet valósítani ezt a feladatot, azonban a FreeBSD Portgyûjteményében ezeket még nem találhatjuk meg.

A xine az MPlayerhez képes többet tesz a felhasználóért, azonban ezzel egyidõben el is veszi tõle a finomhangolás lehetõségét. A xine legjobban az XVideót ismerõ felületeken teljesít.

A xine alapértelmezés szerint grafikus felülettel indul, ahol a menük segítségével tudunk megnyitni egy adott állományt:

[source,shell]
....
% xine
....

Vagy a grafikus felület használata nélkül kiadhatjuk közvetlenül is az állomány lejátszását:

[source,shell]
....
% xine -g -p kedvencmozim.avi
....

[[video-ports-transcode]]
==== A transcode

A transcode nem egy újabb lejátszó, hanem a video- és audio állományok újratömörítésére használható programok gyûjteménye. A transcode segítségével a szabványos be- és kimeneten keresztül parancssoros programokkal képesek vagyunk videoállományokat összefûzni, megjavítani.

A package:multimedia/transcode[] port fordítása során temérdek beállítást adhatunk meg, amelyek közül az alábbi parancsban foglaljuk össze az általunk javasolandókat:

[source,shell]
....
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yes
....

Ezek a beállítások a legtöbb felhasználó számára elegendõek.

A `transcode` képességeinek illusztrálásához lássunk egy példát, amiben megmutatjuk, hogyan kell egy DivX állományt PAL szabványú MPEG-1 formátumú (PAL VCD) állománnyá alakítani:

[source,shell]
....
% transcode -i bemenõ.avi -V --export_prof vcd-pal -o output_vcd
% mplex -f 1 -o eredmény_vcd.mpg eredmény_vcd.m1v eredmény_vcd.mpa
....

Az eredményül keletkezõ [.filename]#eredmény_vcd.mpg# MPEG állomány akár már játszható is MPlayerrel. Ha az állományt kiírjuk egy írható CD-re, akkor ezzel video CD-t is létre tudunk hozni, amihez viszont szükségünk van mind a package:multimedia/vcdimager[] és package:sysutils/cdrdao[] programokra.

A `transcode` parancsnak van saját man oldala, azonban ehelyett a http://www.transcoding.org/cgi-bin/transcode[transcode wiki]ben érdemes inkább további információkat és példákat keresni.

[[video-further-reading]]
=== Ajánlott olvasmányok

A FreeBSD-hez tartozó videoszoftverek nagyon gyorsan fejlõdnek. Könnyen elképzelhetõ, hogy az imént tárgyalt problémák legtöbbje a közeljövõben hamarosan megoldódik. Addig viszont bárkinek, aki a legtöbbet szeretné kihozni a FreeBSD audio- és video lehetõségeibõl, rengeteg leírás és dokumentáció elolvasása alapján kell összecsiszolnia a különbözõ beállításokat, és csak néhány alkalmazás mellett érdemes kitartania. Ebben a szakaszban igyekszünk segíteni az olvasónak megtalálni az ilyen jellegû információkat.

Az http://www.mplayerhq.hu/DOCS/[MPlayer dokumentációja] szakmai szempontból igen közlékeny. Ezt mindenkinek érdemes elolvasnia, aki a késõbbiekben magasabb szakmai szinten akar foglalkozni a UNIX(R)-os videózással. Az MPlayer levelezési listája viszont alig tolerálja a dokumentációt rendesen el nem olvasó emberek kérdéseit, ezért minden egyes hiba bejelentése elõtt lehetõleg rendesen nézzük át a dokumentáció odavágó részeit.

A http://dvd.sourceforge.net/xine-howto/en_GB/html/howto.html[xine HOGYAN] egyik külön fejezetében az összes lejátszó esetén érvényesíthetõ teljesítménynövelési módszereket mutat be.

Végül íme néhány ígéretes alkalmazás, amelyeket érdemes kipróbálnunk:

* http://avifile.sourceforge.net/[Avifile], ami egyben a package:multimedia/avifile[] port
* http://www.dtek.chalmers.se/groups/dvd/[Ogle], ami a package:multimedia/ogle[] port
* http://xtheater.sourceforge.net/[Xtheater]
* package:multimedia/dvdauthor[], egy nyílt forráskódú DVD-tartalom szerkesztõ

[[tvcard]]
== TV kártyák beállítása

=== Bevezetés

A TV kártyák segítségével kábeles vagy antennás televízióadásokat tudunk nézni a számítógépünkön. A legtöbbjük RCA vagy S-video bemenettel rendelkezik, valamint néhányukon még FM rádiókészülék is megtalálható.

A FreeBSD a man:bktr[4] meghajtón keresztül a Brooktree Bt848/849/878/879, illetve a Conexant CN-878/Fusion 878a típusú, PCI-os videorögzító chipeket ismeri. Ügyelnünk kell arra, hogy a kártyánkon levõ vevõkészülék is használható legyen, amit pedig a man:bktr[4] man oldalán megtalálható támogatott eszközök listájából ellenõrizhetünk.

=== A meghajtó beállítása

A kártyánk használatához be kell töltenünk a man:bktr[4] meghajtót, ami csupán annyiból áll, hogy a [.filename]#/boot/loader.conf# állományhoz hozzáadunk egy ilyen sort:

[.programlisting]
....
bktr_load="YES"
....

Másik lehetõségünk, ha a TV kártya támogatását statikusan beleépítjük a rendszermagba. Ha ezt a megoldást választjuk, a következõ sorokat kell elhelyeznünk a rendszermag beállításait tartalmazó állományba:

[.programlisting]
....
device	 bktr
device	iicbus
device	iicbb
device	smbus
....

A fentebb látható egyéb eszközök megadása azért szükséges, mert a kártya részegységei egy I2C buszon csatlakoznak egymáshoz. Miután beillesztettük a szükséges változtatásokat, fordítsuk le és telepítsük az új rendszermagot.

A támogatás hozzáadása után újra kell indítanunk a számítógépünket. A rendszerindítási folyamat során meg kell jelennie a TV kártyánknak is, valahogy így:

[.programlisting]
....
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
....

Természetesen a fenti üzenetek az aktuális hardvereszközünknek megfelelõen némileg eltérhetnek. Ellenõrizzük, hogy a vevõkészüléket helyesen ismerte-e fel a rendszer. Ha nem sikerült volna, akkor a man:sysctl[8] és a rendszermag beállításai segítségével még mindig van lehetõségünk állítani rajta. Például, ha egy Philips SECAM vevõkészüléket akarunk beállítani, akkor a rendszermag beállításaihoz még hozzá kell adni a következõ sort:

[.programlisting]
....
options OVERRIDE_TUNER=6
....

vagy erre közvetlenül használhatjuk a man:sysctl[8] programot is:

[source,shell]
....
# sysctl hw.bt848.tuner=6
....

A man:bktr[4] man oldalán és a [.filename]#/usr/src/sys/conf/NOTES# állományban megtalálhatjuk a többi beállítás részletes leírását is.

=== Hasznos alkalmazások

A TV kártyánk tényleges használatához azonban még a következõ alkalmazások valamelyikét is telepítenünk kell:

* A package:multimedia/fxtv[] használatával ablakban tévézhetünk, valamint lehetõségünk van kép/audio/video kimentésére is.
* A package:multimedia/xawtv[] az fxtv-hez hasonló lehetõségekkel bíró tévénézõ alkalmazás.
* A package:misc/alevt[] dekódolja és megjeleníti a mûsorhoz kapcsolódó Videotex/Teletext üzeneteket.
* Az package:audio/xmradio[] segítségével az egyes TV kártyákon megtalálható FM rádiókészülékeket tudjuk használatba venni.
* Az package:audio/wmtune[] a rádióvevõkhöz használható hasznos grafikus alkalmazás.

Ebben a témában a FreeBSD Portgyûjteményében további érdekes alkalmazások találhatóak még.

=== Hibakeresés

Ha bármilyen gond adódna a TV kártyánkkal kapcsolatosan, akkor elõször mindenképpen érdemes megnézni, hogy a rajta levõ videorögzítõ chipet és vevõkészüléket a man:bktr[4] meghajtó ténylegesen ismeri-e, illetve hogy jól állítottuk-e be. A TV kártyákra irányuló különféle egyéb kérdések és segítség tekintetében érdemes lehet még levelet küldeni a {freebsd-multimedia} címére is.

[[scanners]]
== Lapolvasók

=== Bevezetés

A FreeBSD lapolvasókhoz a SANE (Scanner Access Now Easy) elnevezésû API (alkalmazásfejlesztõi felület) segítségével képes hozzáférni, amelyet a Portgyûjteményben találhatunk meg. A lapolvasást végzõ hardvereszközök használatához a FreeBSD a SANE mellett még néhány eszközmeghajtóra is támaszkodik.

A FreeBSD egyaránt ismeri az SCSI és USB csatlakoztatású lapolvasókat is. Még mielõtt nekikezdenénk a lapolvasó beállításához, bizonyosodjuk meg róla, hogy a SANE támogatja. A SANE http://www.sane-project.org/sane-supported-devices.html[által ismert eszközök] felsorolásában ellenõrizhetjük a lapolvasónk támogatottságának állapotát. A FreeBSD 8._X_ elõtti kiadásaiban ezenkívül még a man:uscanner[4] man oldalon is láthatjuk az ismert USB-s lapolvasók listáját.

=== A rendszermag beállítása

A korábbiak értelmében tehát mind a SCSI, mind pedig a USB felületen csatlakozó eszközök támogatottak. A lapolvasónknak megfelelõen eltérõ eszközmeghajtók szükségesek.

[[scanners-kernel-usb]]
==== Beállítás USB felületen

A [.filename]#GENERIC# rendszermag alapértelmezés szerint tartalmazza az USB-s lapolvasók használatához szükséges eszközmeghajtókat. Ha valamiért azonban mégis saját rendszermagot akarunk használni, akkor ne felejtsük el ellenõrizni, hogy a rendszermag beállításai között megtalálhatóak a következõ sorok:

[.programlisting]
....
device usb
device uhci
device ohci
device ehci
....

A FreeBSD 8._X_ elõtti kiadásaiban még a következõ sorra is szükségünk lesz:

[.programlisting]
....
device uscanner
....

A FreeBSD ezen változataiban a man:uscanner[4] eszközmeghajtón keresztül tudjuk használni az USB csatolóval rendelkezõ lapolvasókat. A FreeBSD 8.0 változatától kezdõdõen pedig ehhez a man:libusb[3] függvénykönyvtár nyújt közvetlen támogatást.

A megfelelõen elõkészített rendszermag elindítása után csatlakoztassuk az USB-s lapolvasónkat. Ez a sor fog megjelenni a rendszer üzenetpufferében (man:dmesg[8]):

[source,shell]
....
ugen0.2: <EPSON> at usbus0
....

Vagy FreeBSD 7._X_ rendszerek esetében:

[source,shell]
....
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
....

Ezek az üzenetek elárulják nekünk, hogy a lapolvasóhoz mostantól a használt FreeBSD verziótól függõen a [.filename]#/dev/ugen0.2# vagy a [.filename]#/dev/uscanner0# eszközleíró tartozik. A fenti példában egy EPSON Perfection(R) 1650 típusú USB lapolvasót láthatunk.

==== Beállítás SCSI felületen

Ha a lapolvasónk SCSI felületen csatlakozik, fontos tisztában lennünk azzal, hogy pontosan milyen SCSI-vezérlõn keresztül is érhetjük el, ugyanis a rajta található SCSI chipkészletnek megfelelõen kell majd hangolnunk a rendszermag beállításait. A [.filename]#GENERIC# rendszermag alapból ismeri a leggyakrabban elõforduló SCSI-vezérlõket. Mindenképpen olvassuk át a [.filename]#NOTES# nevû állományt és adjuk hozzá a rendszermag beállításaihoz a megfelelõ sort. A SCSI-kártya meghajtóján kívül még az alábbi beállításokat is meg kell adnunk a rendszermagunk számára:

[.programlisting]
....
device scbus
device pass
....

Ahogy sikerült a rendszermagot sikeresen lefordítani és telepíteni, a rendszer indulása során az üzenetpufferben már láthatjuk is a felismert eszközt:

[source,shell]
....
pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers
....

Ha a rendszer indulásakor még nem kapcsoltuk volna be a lapolvasónkat, a man:camcontrol[8] parancs segítségével késõbb külön kérhetjük a SCSI buszon található eszközök újbóli felderítését:

[source,shell]
....
# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful
....

Ekkor a lapolvasó megjelenik a SCSI eszközök felsorolásában:

[source,shell]
....
# camcontrol devlist
<IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)
....

A SCSI eszközökrõl további leírásokat a man:scsi[4] és man:camcontrol[8] man oldalakon találhatunk.

=== A SANE beállítása

A SANE rendszere két részre oszlik: a backendekre (package:graphics/sane-backends[]) és a frontendekre (package:graphics/sane-frontends[]). Ezek közül maguk a backendek szolgáltatják a lapolvasó hozzáférhetõségét. A SANE által http://www.sane-project.org/sane-supported-devices.html[ismert eszközeinek] listájából kifürkészhetjük, hogy lapolvasónkat melyik backenden keresztül érhetjük el. Az eszköz megfelelõ használatához döntõ fontosságú megállapítani a hozzá tartozó backendet. A frontendek között találjuk meg a lapolvasást felügyelõ grafikus felületeket (mint például az xscanimage).

Elsõként telepítsük a package:graphics/sane-backends[] portot vagy csomagot. Ezután ellenõrizzük, hogy a SANE felismeri a lapolvasót, és ehhez adjuk ki a `sane-find-scanner` parancsot:

[source,shell]
....
# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
....

A kimenetében jelzi a felületet, amin a lapolvasó csatlakozik, valamint a hozzá tartozó eszközleírót. A gyártó neve és a termék típusa nem minden esetben jelenik meg, de ez nem is annyira fontos.

[NOTE]
====
Némely USB-s lapolvasók esetén még egy firmware-t is be kell töltenünk, amirõl bõvebben a backendhez tartozó man oldalokon olvashatunk. Ajánlott még elolvasni a man:sane-find-scanner[1] és man:linprocfs[7] man oldalakat is.
====

Most pedig nézzük meg, hogy vajon a frontend is be tudja-e azonosítani a lapolvasónkat. Alapértelmezés szerint a SANE backendjéhez tartozik még egy man:sane[1] nevû segédprogram is, aminek segítségével listázni tudjuk a használható eszközöket és képeket tudunk beolvasni parancssorból. Közülük a `-L` kapcsoló listáz:

[source,shell]
....
# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
....

Vagy ha a <<scanners-kernel-usb>>ban szereplõ USB lapolvasóval nézzük:

[source,shell]
....
# scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner
....

Ezt a kimenetet egy FreeBSD 8._X_ rendszeren kaptuk, ahol a `'epson2:libusb:/dev/usb:/dev/ugen0.2'` az eszközhöz tartozó backendet (`epson2`) és eszközleírót (`/dev/ugen0.2`) adja meg.

[NOTE]
====
Ha ennek eredményeképpen semmi sem jelenik meg, vagy a man:sane[1] látszólag nem talált semmilyen eszközt, akkor a lapolvasó azonosítása nem sikerült. Ilyen esetekben valószínûleg módosítanunk kell a backend beállításait tartalmazó állományt a használni kívánt lapolvasó eszköz szerint. A backendek beállításait a [.filename]#/usr/local/etc/sane.d/# könyvtárban találjuk. Ez a probléma bizonyos USB-s lapolvasók esetében jelentkezik.

Például, ha <<scanners-kernel-usb>>ban használt USB-s lapolvasónkat FreeBSD 8._X_ alatt tökéletesen felismeri a rendszer, de a FreeBSD korábbi változatai esetén (ahol a man:uscanner[4] eszközmeghajtót használják) a `sane-find-scanner` parancs a következõket adja vissza:

[source,shell]
....
# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0
....

Akkor a lapolvasót sikerült megtalálni, és láthatjuk, hogy USB-n keresztül csatlakozik és a [.filename]#/dev/uscanner0# eszközleíró tartozik hozzá. Most már ellenõrizhetjük a lapolvasó helyes beazonosítását is:

[source,shell]
....
# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
....

Az üzenet fordítása:

[source,shell]
....
Nincs azonosítható lapolvasó.  Ha nem erre számítottunk, akkor ellenőrizzük,
hogy az eszközt tényleg bekapcsoltuk, csatlakoztattuk és észlelte a
sane-find-scanner segédprogram (amennyiben szükséges).  Kérjük, olvassa el a
szoftverhez tartozó dokumentációt (README, FAQ, man oldalak)!
....

Mivel a lapolvasót nem sikerült azonosítani, át kell írnunk a [.filename]#/usr/local/etc/sane.d/epson2.conf# állományt. A használt lapolvasó típusa EPSON Perfection(R) 1650, ezért hozzá az `epson2` backendet fogjuk használni. Ehhez feltétlenül olvassuk el a konfigurációs állományban található megjegyzéseket is. A sorokat igen könnyû átírni: tegyük megjegyzésbe az összes olyat, ahol a lapolvasónk számára nem megfelelõ felületek találhatóak (a mi esetünkben tehát megjegyzésbe fogjuk tenni az összes `scsi` szóval kezdõdõ sort, hiszen nekünk USB-s eszközünk van), majd az állomány végére írjuk be a használni kívánt felületet és eszközleírót. Ez ebben a konkrét esetben ennyi lenne:

[.programlisting]
....
usb /dev/uscanner0
....

A megfelelõ formátum és a további részletek leírásához ne felejtsük el azonban elolvasni a backend konfigurációs állományában felbukkanó megjegyzéseket és az ide tartozó man oldalt sem. Most már megpróbálkozhatunk újra a lapolvasó azonosításával:

[source,shell]
....
# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
....

Láthatjuk, hogy az USB-s lapolvasónkat sikerült azonosítani. Nem számít, ha esetleg nem egyezne a valósággal a gyártó vagy a típus megjelölése. Itt a valóban lényeges elem az `epson:/dev/uscanner0` mezõ lesz, melynek a backend és az eszközleíró nevét kell helyesen tartalmaznia.
====

A beállítást akkor zárhatjuk le, miután a `scanimage -L` parancs képes észlelni a lapolvasót. A eszköz ekkor már készen áll a beolvasásra.

Míg a man:sane[1] parancssorból teszi lehetõvé számunkra a lapolvasást, addig érdemesebb a képek olvasását egy grafikus felületen keresztül végeznünk. A SANE egy egyszerû, ám hatékony grafikus felületet ajánl fel ehhez, ez az xscanimage (package:graphics/sane-frontends[]).

Az Xsane (package:graphics/xsane[]) egy másik népszerû grafikus frontend. Segítségével speciális lehetõségeket is kihasználhatunk, mint például többféle képolvasási mód (fénymásoló, fax stb.), színkorrekció, kötegelt beolvasás, stb. Mind a két említett alkalmazás elérhetõ a The GIMP bõvítményeként is.

=== A lapolvasó használatának engedélyezése más felhasználók számára

A korábban tárgyalt mûveletek mindegyikét `root` felhasználóként tudjuk csak végrehajtani. Azonban elõfordulhat, hogy más felhasználók számára is szeretnénk hozzáférést biztosítani a lapolvasóhoz. Ehhez az érintett felhasználóknak a lapolvasóhoz tartozó eszközleíróhoz olvasási és írás joggal kell rendelkezniük. Például az USB-s lapolvasónk a [.filename]#/dev/ugen0.2# eszközleírót használja, amely valójában csak a [.filename]#/dev/usb/0.2.0# eszközleíróra mutató szimbolikus link (ezt gyorsan le tudjuk ellenõrizni, ha megnézzük a [.filename]#/dev# könyvtár tartalmát). Az eszközleíró és a rá mutató szimbolikus link rendre a `wheel` és `operator` csoportok birtokában van. Ha a `_pgj_` nevû felhasználót felvesszük ezekbe a csoportokba, akkor ezáltal hozzá tud majd férni a lapolvasóhoz. Nyilvánvaló biztonsági megfontolásokból azonban kétszer is javasolt meggondolni, mely felhasználókat mely csoportokba vesszük fel, különösen, ha `wheel` csoportról van szó. Ennél valamivel jobb megoldást kínál, ha létrehozunk külön az USB eszközök használatára vonatkozó csoportot és a lapolvasót ezen csoport tagjainak számára elérhetõvé tesszük.

Tehát erre a célra például megalkotjuk a `_usb_` csoportot. Ehhez elsõ lépésként a man:pw[8] parancs segítségével hozzuk létre magát a csoportot:

[source,shell]
....
# pw groupadd usb
....

Ezután a [.filename]#/dev/usb/0.2.0# eszközleírót és a rá mutató [.filename]#/dev/ugen0.2# szimbolikus linket kell az `usb` csoport részére elérhetõvé tennünk, a megfelelõ írási engedélyekkel (`0660` vagy `0664`) együtt, mivel alapértelmezetten csak a tulajdonosuk (`root`) tudja írni ezeket. Mindezt úgy tudjuk megtenni, ha az [.filename]#/etc/devfs.rules# állományhoz hozzáadjuk a megfelelõ sorokat:

[.programlisting]
....
[system=5]
add path ugen0.2 mode 0660 group usb
add path usb/0.2.0 mode 0660 group usb
....

A FreeBSD 7._X_ változatok esetén valószínûleg a következõ sorokra lesz szükségünk a [.filename]#/dev/uscanner0# eszközleíróhoz:

[.programlisting]
....
[system=5]
add path uscanner0 mode 0660 group usb
....

Ezt követõen az [.filename]#/etc/rc.conf# állományba írjuk be az alábbi sort és utána indítsuk újra a számítógépet:

[.programlisting]
....
devfs_system_ruleset="system"
....

Az itt szereplõ sorok pontos jelentésérõl a man:devfs[8] man oldaláról tájékozódhatunk.

Ezután már csak fel kell vennünk azokat a felhasználókat a `_usb_` csoportba, amelyeknek engedélyezzük a lapolvasó használatát:

[source,shell]
....
# pw groupmod usb -m pgj
....

A további részletekrõl a man:pw[8] man oldalon olvashatunk.
