6.5. Videoredigering

Videoredigering er en omfattende proces der kræver at man gennemfører en del skridt og at man har noget rimeligt hardware - især må man nok forvente at skulle bruge en del diskplads. Hvis man vil lave mange sjove effekter (overgange, mv) eller gerne vil indkode til MPEG2/DivX er det også en god idé at have en (eller flere) kraftige processorer.

Videoredigering under Linux er ikke trivielt at begynde at arbejde med. Det skyldes primært at man skal installere en del forskellig software for at få de forskellige codecs (se Afsnit 6.5.2) understøttet og at man også i et vist omfang vil blive tvunget til at foretage en del konverteringer mellem forskellige formater for at få de forskellige værktøjer til at arbejde med ens sekvenser. En af årsagerne til at man selv skal installere en del software er dels at udviklingen går meget hurtigt (hvilket er positivt) men også at megen multimedie software til Linux desværre rammes af patenter eller andre restriktioner der gør at softwaren kan være omfattet af restriktioner i USA. Derfor indeholder mange distributioner ikke denne software som standard. Ofte kan man dog finde europæiske hjemmesider der har denne software tilgængelig for specifikke distributioner - det gælder f.eks. Mandrake Linux.

For at kunne redigere video kræves at man kan

I det følgende vil hvert af disse skridt blive skitseret - da der er mange forskellige måder at gøre tingene på, vil de forskellige skridt ikke blive gennemgået i detaljer. Flere værktøjer dækker desuden flere skridt - de vil blive nævnt under de punkter hvor de er mest relevante.

6.5.1. Optage video

Der findes en række måder at få en videostrøm ind på dit system på. I det følgende antages at man har en videosekvens man har optaget på et videokamera eller lignende (kan også være f.eks. direkte tv, eller et webcam) og det er denne sekvens man vil have lagret på sin harddisk, med så lidt tab af signal (f.eks. frames) som muligt. Jeg forsøger at bruge ordet "optage" om denne proces - på engelsk kalder man det at "grabbe" video.

Det er selvklart muligt at købe et decideret optagekort (frame grabber card). Et sådan kort har den store fordel at det kan grabbe analog video og eventuelt komprimere det i hardware, hvilket fjerner en del af belastningen fra selve systemet. Der findes et par kort der er understøttet under Linux via mjpegtools (mjpegtools er beskrevet i Afsnit 6.5.2.2). Jeg har imidlertid ingen erfaring med disse kort.

mjpegtools kan desuden optage fra "Video For Linux" (v4l) enheder og understøtter også software realtids komprimering under optagelse til jpeg codecs. v4l er en generel video infrastruktur som de fleste drivere til Linux der beskæftiger sig med video understøtter. (Med f.eks. DV som en undtagelse, så vidt jeg ved). Hvis man har f.eks. et webcam, vil driveren til dette typisk stille en v4l grænseflade til rådighed for applikationer. Derfor kan de fleste programmer der f.eks. er beregnet til at optage video, fungere med v4l. Du kan finde mere information om v4l på f.eks. http://www.exploits.org/v4l/.

Hvis du har et tv-kort, der bruger v4l, kan du bruge f.eks. programmet XAWTV (se Afsnit 6.4), til at gemme din videosekvens på din harddisk enten som en række jpeg billeder, eller som både lyd og billede i en AVI strøm. Du skal blot afspille din videosekvens og bede XAWTV om at gemme den på en passende måde. Imidlertid kræver dette en del af din hardware. Ved normal fremvisning skriver dit tv-kort direkte i dit grafikkorts hukommelse og med mindre dit tv-kort (og driveren til det) kan overføre billederne til din ram direkte, skal XAWTV læse billederne fra videokortets hukommelse og behandle dem efterfølgende. Det kan være en temmeligt langsommelig proces og det er vanskeligt at grabbe med særlig høj opløsning, eller i særlig god kvalitet på den måde. Med en tilstrækkelig hurtig computer burde det dog kunne lade sig gøre.

For et webcam gælder egentlig de samme betragtninger som for tv-kortet, bortset fra at man nok har en større sandsynlighed for at opnå succes, da udgangspunktet som regel er at et webcam har en relativt ringere kvalitet end et videokamera og især et lavere båndbreddeforbrug.

6.5.1.1. Optage digital video

Hvis man er den lykkelige ejer af et digitalt videokamera (DV kamera) er der ingen tvivl om hvordan man skal optage video; det skal man gøre med Firewire. Firewire er en IEEE specifikation, nummer 1394. (Firewire er et "kælenavn" for denne specifikation, som omtales som IEEE1394 når man snakker teknik. Sony har forsøgt at kalde Firewire for ILink, men det er vist aldrig rigtigt slået an).

For at bruge Firewire, skal ens videokamera have en Firewire port. Det er mit indtryk at alle digitale videokameraer har en sådan. Derudover skal man have en Firewire port i sin PC. Har man en stationær, kan man købe f.eks. et Adaptec FireConnect 4300 kort til omkring 500-700 kr. Mange nyere bærbare (inklusiv alle fra Apple og de fleste fra Dell) kommer med en indbygget Firewire port. Det vigtige er at sikre sig at chippen er en OHCI-kompatibel chip - men, da det er langt den mest udbredte burde det være en smal sag.

Dernæst skal man selvfølgelig bruge noget software. Først og fremmest skal man bruge nogen kernedrivere. Projektet for disse drivere er på http://www.sourceforge.net/projects/linux1394/. Det vil fremgå af projektets hjemmeside hvilke kerneversioner, osv, der anbefales - jeg har i skrivende stund gode erfaringer med den der kommer med Mandrake 8.2, nemlig kerne 2.4.18. Bemærk at driverne er en del af standard kernen, altså også 2.4.18, men at det nogen gange kan betale sig at opgradere driverne alligevel. For mig har alting fungeret fint med den kerne og de pakker der kommer med Mandrake 8.2. (På nær libdv - det vender jeg tilbage til nedenfor).

Installationen af IEEE1394 driverne er i øvrigt beskrevet i dokumentationen til driverne. I det følgende vises kort hvordan en session hvor disse drivere anvendes f.eks. kan se ud.

Man skal have et device kaldet /dev/raw1394 som skal være oprettet som major 171, minor 0, og med passende ejer og rettigheder:

[root@linus /root]# ls -l /dev/raw1394
crw-r--r--    1 tyge     tyge     171,   0 mar 29 21:34 /dev/raw1394

Indsættelse af modulerne skulle helst ikke give nogen fejl. Det kan f.eks. se sådan ud, når man gør det manuelt (som sædvanligt kan moduler autoloades - se andetsteds for information om dette):

[root@linus /root]# modprobe raw1394
[root@linus /root]# modprobe ohci1394
[root@linus /root]# tail /var/log/messages
May  1 15:43:53 linus kernel: raw1394: /dev/raw1394 device initialized
May  1 15:43:59 linus kernel: ohci1394: $Revision$ Ben Collins ...
May  1 15:43:59 linus kernel: PCI: Found IRQ 10 for device 02:0f.2
May  1 15:43:59 linus kernel: PCI: Sharing IRQ 10 with 00:1f.2
May  1 15:43:59 linus kernel: PCI: Sharing IRQ 10 with 02:0f.0
May  1 15:43:59 linus kernel: PCI: Sharing IRQ 10 with 02:0f.1
May  1 15:43:59 linus kernel: ohci1394_0: OHCI-1394 1.0 (PCI): irq=[10] ...

IEEE1394 driveren bliver automatisk indlæst af ovenstående selv om den ikke blev indlæst eksplicit:

[root@linus /root]# lsmod | head
Module                  Size  Used by    Tainted: P
ohci1394               15904   0  (unused)
raw1394                 6832   0  (unused)
ieee1394               26312   0  [ohci1394 raw1394]

Når de forskellige drivere er indlæste, kan du køre programmet romtest som er et testprogram fra libavc pakken. Dette er en pakke der giver et standard programmerings grænsesnit (API) til "1394 Trade Association AV/C (Audio/Video Control) Digital Interface Command Set" - altså et API til de protokolkommandoer vi kan sende til vores Firewire controller og bus. Hvis du kører Mandrake 8.2, ligger dette program i pakken "libavc1394_0-testools" som selvfølgelig forudsætter at "libavc1394_0" er installeret (og, det er nok en god idé at installere "libavc1394_0-devel" mens man er i gang). I denne pakke medfølger desuden dvcont som er et kommandolinje værktøj til at manipulere med DV kameraer med. romtest og dvcont forudsætter udover libavc1394 at man har installeret "libraw1394" biblioteket (dette bibliotek anvendes iøvrigt af stort set alle programmer der håndterer DV nær hardwaren, så det er praktisk at installere det). I Mandrake 8.2 kan man installere "libraw1394_5" og "libraw1394_5-devel" pakkerne. Hjemmesiderne for de to biblioteker er på http://www.sourceforge.net/projects/libraw1394/ og http://www.sourceforge.net/projects/libavc1394/. Kørsel af romtest kan f.eks. se sådan her ud (når der ikke er nogen enheder tilsluttet Firewire bussen):

[root@linus /root]# romtest
Librom1394 Test Report
=================================================

Node 0:
-------------------------------------------------
bus info block length = 4
bus id = 0x31333934
bus options:
    isochronous resource manager capable: 0
    cycle master capable                : 1
    isochronous capable                 : 1
    bus manager capable                 : 0
    cycle master clock accuracy         : 0 ppm
    maximum asynchronous record size    : 2048 bytes
GUID: 0x434fc00032fea410
directory:
    node capabilities    : 0x000083c0
    vendor id            : 0x0000005e
    unit spec id         : 0x00000000
    unit software version: 0x00000000
    model id             : 0x00000000
    textual leaves       : Linux 1394

Når du har overbevist dig om at du har kontakt til din Firewire adapter, kan du prøve at forbinde dit kamera. Bemærk, at en del DV kameraer ikke vil snakke på Firewire-stikket, hvis ikke det er aktivt når kameraet er tændt. Med andre ord: det er typisk en god idé at slukke kameraet inden man stikker Firewire-kablet i. Dernæst bør man indlæse driverne på PC-siden og så endeligt tænde kameraet. Hvis man derefter kører romtest, skulle man gerne have to noder på sin Firewire-bus. Alternativt kan man køre programmet gscanbus, som er et grafisk program til at se enheder på en Firewire-bus, inspicere dem, og for enkelte enheder kontrollere dem. På Figur 6-20 er et skærmdump af gscanbus med et DV kamera tilsluttet og et dialogvindue til at kontrollere kameraet med, vist.

Figur 6-20. gscanbus

Og, endelig er vi fremme ved at optage video. Til dette kan du f.eks. bruge kommandolinjeprogrammet dvgrab. Dette program ligger under Mandrake 8.2 i "dvgrab" pakken. Hjemmesiden for dette værktøj er på http://www.schirmacher.de/arne/dvgrab/index_e.html. dvgrab kræver biblioteket "libdv". Det er en rigtigt god idé at installere libdv i den nyeste version, version 0.98. Hvis du f.eks. oplever at dvgrab ikke kan se dit kamera eller simpelthen crasher (dvs at f.eks. dvgrab crasher), kan det skyldes en kendt fejl med MMX detekteringen i libdv. De RPM filer der er med Mandrake 8.2 indeholder ikke en rettelse for denne fejl, så det er nødvendigt at hente den nye version. Bemærk at både Kino, MainActor og Broadcast 2000 tilbyder grafiske frontends til at optage fra DV med - disse programmer er beskrevet i Afsnit 6.5.3 nedenfor.

Når du bruger dvgrab og dit kamera er PAL (Meste af verden, pånær USA), optager du med 25 billeder i sekundet (I modsætning til NTSC, der optager med næsten 30 billeder i sekundet). Det betyder at du vil optage med ret præcist 3.6 MB/s. De fleste moderne harddiske har ingen problemer med at tage imod dette, men man skal være opmærksom på at der er ingen flowkontrol - det vil sige at hvis man sætter sin harddisk til at lave noget andet, kan man risikere at man mister billeder. Endvidere kan man tilsyneladende risikere at komme i nogen situationer hvor Linux naivt beslutter sig for at fylde ens RAM med billeder, istedet for at skrive ud til harddisken med det samme. Når Linux endelig opdager at man har tænkt sig at smide 12 GB på disken (en time i DV fylder omtrent 12 GB), begynder den hektisk at flushe ram til disken, og det kan også give nogen pakketab. Jeg har dog aldrig selv oplevet dette, men har set det beskrevet. For nogen er løsningen at starte en separat process der løbende syncer disken. Det kan man f.eks. gøre ved at skrive

[tyge@hven ~%]$ while : ; do sleep 1 && sync ; done

i en xterm eller lignende (hvis man bruger en anden shell end bash er syntaxen lidt anderledes). Dette vil synce disken omtrent hvert sekund, hvilket antageligvis kan løse problemet med mistede billeder for nogen. Det kan muligvis også betale sig at bruge low-latency patchene til Linux kernen, eller i yderste nødstilfælde disable skrive cachen på disken med programmet hdparm. Det sidste må dog generelt frarådes.

6.5.2. Konvertering af de optagne videosekvenser

Næsten ligegyldigt hvordan du har optaget din originale videosekvens, vil der opstå et behov for at konvertere sekvensen til et andet format, typisk et format dine værktøjer kan arbejde med. Når du har lavet din endelige film, vil der formentlig ligeledes være brug for at konvertere den til forskellige formater, afhængigt af hvad du skal bruge den til. Det sidste er dækket i Afsnit 6.5.4, det første gives der en introduktion til i dette afsnit.

Først skal man gøre sig klart, hvilke formater ens værktøjer understøtter. I Afsnit 6.5.3 nævnes et par værktøjer til at redigere i videofilm med. Eksempelvis for Kino gælder det at den kun redigerer DV klip i det format dvgrab optager med (DV format). For Broadcast 2000 gælder at den kun redigerer klip i QuickTime - og kun i et par af de mere simple codecs.

Overordnet set er der 3 udbredte formater; AVI (.avi), QuickTime (.mov) og MPEG (.mpeg). Imidlertid er f.eks. en .avi fil ikke bare en .avi fil. De forskellige formater her nævnt er faktisk kun en definition af hvordan man skal kunne udtrække de enkelte billeder, synkronisere med lyd, mv. fra videosekvensen. Selve indkodningen af billeder kan gøres på mange forskellige måder. Eksempelvis ser man .avi filer hvor hver enkelt billede er rå 24 bit RGB og lyden er rå 16 bit stereo i f.eks. 44 kHz. Hvis man konverterer denne .avi sekvens til at billederne skal være jpeg komprimeret og lyden ulaw komprimeret, kan man opnå en voldsom formindskelse i pladsforbrug med et normalt tåleligt kvalitetstab. De forskellige måder at indkode og afkode billeder og lyd på i de forskellige sekvenser kaldes codecs. Desværre er det ofte sådan at de bedste codec - altså dem der giver bedst billed- og lydkvalitet med mindst pladsforbrug - udelukkende frigives i binær form til f.eks. Windows og Mac. Eller er omfattet af patent- eller licensbetingelser der gør det umuligt at implementere dem i åben software. Derfor er det ikke nok at AVI, QuickTime og MPEG er understøttet under Linux - de enkelte codecs skal også være det. Det er generelt ikke noget problem med de sekvenser man selv optager, men hvis man vil mikse sekvenser man har fundet andre steder sammen, kan man opleve at man nok kan se sekvensen, f.eks. gennem programmet Mplayer (se Afsnit 6.1.3), men at det kan være meget vanskeligt at konvertere sekvensen til noget ens værktøjer kan arbejde med.

6.5.2.1. DV2 AVI til JPEG AVI

dv2jpg er et lille program der kan bruges til at konvertere en DV2 AVI sekvens, f.eks. optaget med dvgrab (se Afsnit 6.5.1.1) til en JPEG AVI sekvens. En JPG AVI sekvens kan ses med f.eks. xine og andre film afspillere (se Afsnit 6.1). dv2jpg's hjemmeside er på http://sourceforge.net/projects/dv2jpg,

Fordelen ved dv2jpg er at det er rimeligt hurtigt at køre og at den resulterende fil bliver væsentligt mindre end den oprindelige DV film. Ulempen er at man ikke har så meget kontrol over konverteringen - f.eks. sætter dv2jpg opløsningen ned i en forventning om at man vil lave en sekvens der skal ud på f.eks. en video-cd (VCD). Men, det er et simpelt program at bruge hvis man f.eks. gerne hurtigt vil lave en sekvens der f.eks. kan lægges online og/eller afspilles på en Windows-maskine. Til seriøs behandling af sekvenser er det dog ikke velegnet, med mindre konverteringen passer til det formål man har med videokonverteringen.

For at bruge dv2jpg skal DV-sekvensen være lagret i "DV format 2". Hvis du bruger dvgrab til at optage med, skal du altså bruge kommandolinjetilvalget "--format dv2".

6.5.2.2. mjpegtools

mjpegtools er en samling af en lang række kommandolinjeværktøjer der kan konvertere fra MPEG og DV codecs (samt et par YUV indkodninger) i AVI, movtar eller QuickTime format til tilsvarende indkodninger. Eksempelvis kan mjpegtools konvertere både almindelige DV strømme og uddata fra f.eks. Broadcast 2000 (mindst eet format ihvertfald). Disse værktøjer er nok uundværlige, hvis man vil konvertere sine færdige film til f.eks. forskellige bitrater, størrelse, indkodninger og til f.eks. et medie som VideoCD. Forudsætningen er naturligvis at ens slutresultat skal være MPEG i en eller anden form. mpjegtools hjemmeside er på http://sourceforge.net/projects/mjpeg/, men besøg også http://mjpeg.sourceforge.net/.

På hjemmesiden kan du hente mjpegtools i flere forskellige binære udgaver eller som kildefiler. Jeg vil anbefale dig at starte med at hente en binær udgave og blive fortrolig med programmet. Hvis du kan finde ud af det, kan det dog godt betale sig at oversætte mjpegtools selv, da det er et værktøj der er meget CPU tungt, og du formentlig vil kunne få en del glæde af at have en udgave af det der er optimeret til din maskine. På min maskine (866 MHz PIII) konverterer mjpegtools fra DV format til MPEG2 med ca. 0.6 billeder i sekundet. Det er temmeligt langsomt. Bemærk at det er enog meget vanskeligt at oversætte mjpegtools med DV support på en måde så det virker. Start med de binære pakker.

mjpegtools indeholder som sagt en lang række værktøjer. Skriv "man mjpegtools" i en shell for at få en introduktion. Disse værktøjer rækker over lavrec der kan optage MPEG strømme fra mange forskellige kilder, inklusiv nogle enkelte frame grabber korts, forskellige konverteringsværktøjer, mplex som er en MPEG multiplexer (anvendes typisk til at knytte en lydfil sammen med en videofil i slutkonvertering) og lavplay der kan afspille de understøttede formater.

Men, det mest interessante værktøj at introducere her må være lav2mpeg. Dette shellscript kan konvertere mellem de formater mjpegtools understøtter ved at kalde de forskellige værktøjer og har en rimeligt overskuelig syntaks. lav2mpeg (og muligvis andre af mjpegtools'ene) bruger toolame værktøjet til at indkode lyd i MPEG filerne med. Det er muligt at bruge en anden enkoder, f.eks. mp2enc som følger med mjpegtools, læs manual siden til lav2mpeg for at finde ud af hvordan. Men, hvis du vil bruge toolame fandt jeg toolamehttp://members.dingoblue.net.au/~mikecheng/. Installationen er lidt klodset, man skal selv rette i Makefilen og installere programmet manualt, men det er et lille program, og hurtigt oversat og installeret.

mjpegtools pakken indeholder endvidere et værktøj kaldet lav2divx, der angiveligt skulle kunne bruges til at konvertere til aiv/divx format. Jeg har dog ikke testet det.

Hvis du har mjpegtools installeret og er interesseret i at brænde dine færdige film på DVD, skulle programmet dvdauthor angiveligt kunne bruges. Det kan du finde på http://dvdauthor.sourceforge.net/.

6.5.2.3. Andre værktøjer

Pakken "dv_utils" kan konvertere mellem DV og et par formater, som mov og avi. Dog ikke indkodning. Denne pakke kan hentes fra http://www.singingwizard.org/programming.php.

transcode, som kan hentes fra http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/, kan ligeledes konvertere mellem en række formater.

6.5.3. Redigering af video- og lydsekvenser

Der findes en del programmer til at redigere video med. I det følgende vil nogen af de mest populære blive præsenteret. Disse programmer har typisk også mulighed for at redigere og filtrere en smule i lyd - Broadcast 2000 har f.eks. rigtigt mange lydfiltre - men iøvrigt vil jeg ikke komme ind på lydredigering i sig selv. Der findes en del programmer til dette under Linux af varierende modenhed, se Afsnit 5.3.

6.5.3.1. Broadcast 2000

Broadcast 2000 er et af de mest kendte og vel nok også ældste videoredigeringsprogrammer til Linux. Det understøtter optagelse fra et v4l interface, fra LML33, som er et frame grabber kort fra Linux Media Labs, samt fra Firewire interface. På Figur 6-21 kan du se et typisk billede af Broadcast 2000.

Figur 6-21. Broadcast 2000

Broadcast 2000 er et ret kraftfuldt program, men det har nogen problemer. For det første editerer det kun enkelte formater, primært QuickTime med ret primitive codes. Heldigvis kan Broadcast 2000 også læse MPEG2-video (men, jeg har ikke haft succes med MPEG1-video). Derudover har Broadcast 2000 nogen enkelte fejl og uhensigtsmæssigheder i grænsefladen, der nogen gange gør det lidt besværligt at finde ud af hvad der foregår i programmet. Jeg finder det personligt svært at arbejde med, lidt ala Blender. Endeligt har forfatteren stoppet udviklingen på Broadcast 2000, angiveligt fordi han blev truet med et sagsanlæg af nogen der mente at de havde rettigheder til nogen af de teknikker programmet anvender. Han forsætter dog tilsyneladende udviklingen på programmet, nu under et nyt navn, nemlig Cinelerra (se Afsnit 6.5.3.2). Under Mandrake 8.2 kan man installere pakken "bcast" for at få adgang til Broadcast 2000. På http://gajda.dk/ kan man hente kildeteksten til Broadcast 2000, sammen med et patch der blandt andet giver understøttelse af OpenDivx og Vorbis. Der er også instruktioner i at oversætte det. Hvis man vil igang med kildeteksten til Broadcast 2000 kan nok også godt kigge på Cinelerra.

Hvis man kan finde ud af grænsefladen har Broadcast 2000 mange styrker. Eksempelvis kan det bruge plugins fra Gimp til at lave overgange og effekter med. Det giver en umiddelbar adgang til bogstaveligt talt 100 vis af spændende effekter og gør det ekstremt nemt at skrive sine egne effekter eller overgange; hvis man gøre det til Gimp, kan man gøre det til Broadcast 2000. Broadcast 2000 er desuden et udemærket lydredigeringsprogram.

Der følger en del dokumentation med til Broadcast 2000 og, ihvertfald for forfatteren, var det nødvendigt at nærlæse denne meget grundigt for overhovedet at komme igang.

Det endelige format for sekvenser redigeret med Broadcast 2000 bliver nødt til at være en variation af QuickTime. En del simple codecs understøttes, herunder DV (som jeg tror er mest relevant, hvis man har brugt Broadcast 2000 til at optage video fra sit DV kamera med), JPEG, PNG, RGB og YUV. For f.eks. JPEG kan man få nogen kompression, men generelt er det ikke meget, før kvaliteten af billederne falder drastisk.

6.5.3.2. Cinelerra

Som nævnt i Afsnit 6.5.3.1 kaldes efterfølgeren til Broadcast 2000 Cinelerra. Hjemmesiden er på http://sourceforge.net/projects/heroines/. Cinelerra er en gennemgribende omskrivning af Broadcast 2000. Mens dette skrives (august 2002) er den nyeste version 1.0.0. Selv om Cinelerra således har nået version 1, oplever jeg ikke programmet som særligt stabilt. Visse dele af programmet virker dog fint, blandt andet lydredigering og grænsefladen er langt mere intuitiv end for Broadcast 2000. Så, hvis man er frisk på at eksperimentere lidt, så er det absolut interessant at prøve Cinelerra af. På Figur 6-22 kan du se et skærmdump af Cinelerra med composition og ressource vinduet vist.

Figur 6-22. Cinelerra

Hvis du har et DV kamera kan du konvertere filer i DV2 AVI format til et format Cinelerra kan indlæse vha. mjpegtools. Det kan gøres eksempelvis sådan her, hvor fil.dv2.avi konverteres til fil.mjpeg.mov (uddata fra programmerne slettet):

[tyge@hven ~%]$ lav2wav fil.dv2.avi > audio.wav
[tyge@hven ~%]$ lav2yuv fil.dv2.avi | yuv2lav -q100 -fq -b 512 -o video.mjpeg.mov
[tyge@hven ~%]$ lavaddwav video.mjpeg.mov audio.wav fil.mjpeg.mov
[tyge@hven ~%]$ rm video.mpjeg.mov audio.wav

Hvis du vælger at oversætte Cinelerra fra source, skal du vide at processen ikke er triviel. Makefilen er "hjemmestrikket" og har blandt andet den uheldige egenskab at den forsøger at oversætte flere dele af programmet samtidig, men ikke tager højde for at nogen dele kan fejle. Det vil sige at man faktisk kan risikere at det ser ud som om at programmet er blevet oversat korrekt, uden at det er tilfældet. Du skal have en rimelig erfaring med at oversætte software under Linux for at få det til at virke. Hent alle backup pakkerne (4 stk.: cinelerra, xmovie, libmpeg og quicktime) og udpak dem i et katalog. Læs derefter filen cinelerra/doc/doc_2002.html og ret i cinelerra/global_config. Jeg måtte f.eks. fjerne ALSA support fra config, for at få det til at virke, selvom jeg egentlig har ALSA support. Jeg måtte desuden installere pakken "libtermcap5-devel" - men der er ikke nogen oversigt over hvilke pakker der kræves for at oversætte.

Når du har rettet i config filen, kan du skifte til cinelerra og køre make 2>&1 | tee make.log. Redirectionen og pipen er for at sikre at du får al uddata i loggen. Når du er færdig med at oversætte skal du meget gerne have et program kaldet cinelerra/cinelerra/i686/cinelerra. Hvis ikke denne fil findes, så kig i make.log efter fejl. Fiks fejlene og prøv igen. Til sidst kan du køre make install som beskrevet i cinelerra/doc/doc_2002.html.

6.5.3.3. MainActor

MainActor, som kan fås fra http://www.mainconcept.de er ikke Open Source, men derimod ShareWare. Indtil du registrerer vil MainActor skrive "MainActor" hen over alle dine videor. Registrering koster DM 149.

MainActor kommer med flere programmer. Dels hovedprogrammet MainActor Sequencer (maseq), men også 3 mindre værktøjer (der vist alle er integreret i Sequencer), nemlig MainActor VideoEditor (mave) der er et simpelt værktøj til at råredigere enkelte sekvenser, MainActor VideoCapture (macap) der kan bruges til at optage sekvenser, samt i et vist omfang komprimere i realtid og endelig MATool (matool) der er et kommandolinje baseret program til at konvertere mellem forskellige videoformater. På Figur 6-23 kan du se et skærmdump af MainActor Sequencer.

Figur 6-23. MainActor Sequencer

Forfatteren til dette afsnit er en stor tilhænger af OSS software - for næsten enhver pris. Alligevel kan det kun anbefales at man i det mindste prøver MainActor, hvis man gerne vil lave videoredigering under Linux. Programmet tilbyder mange faciliteter man ellers vil skulle bruge mange forskellige programmer for at kunne få, herunder tekster, filtre, effekter og ikke mindst konvertering mellem en lang række formater og codecs. Imidlertid har jeg også oplevet at det er gået ned for mig mindst een gang - og så mærker man irritationen ved at det ikke er OSS. (Ikke at OSS programmer ikke crasher, men så kan man jo fyre op under gdb).

6.5.3.4. Kino

Kino er en simpel, men meget brugbar "DV only" editor du kan hente fra http://www.sourceforge.net/projects/kino.

Kino tilbyder stort set den samme funktionalitet som programmet "iMovie" til Mac's, men interfacet er ikke så simpelt som iMovie. På Figur 6-24 kan du se et skærmskud af kino. Der er kun indlæst én sekvens, men kino har automatisk fundet ud af at det er 4 scener, ved at kigge på tidsstemplerne i DV sekvensen. Du kan se det første billede i de 4 scener i venstre søjle. I hovedfeltet er vist "tidslinjen" som er en smart facilitet til at browse rundt i sin film med.

Figur 6-24. Kino

Kino udviklerne har fokuseret på korrekthed og simplicitet og programmet er, for mig, meget stabilt i brug.

Kino læser og skriver DV1 og DV2 codecs i AVI (altså samme formater som man typisk vil optage med dvgrab) samt rå DV. Ingen af delene tilbyder kompression, men til gengæld er der heller ikke noget kvalitetstab overhovedet. Hvis man vil lave playback i fuld PAL opløsning under Kino, skal man regne med at have mindst en PIII 866 MHz maskine.

Den nyeste udgave af kino er version 0.51 som kræver libdv i mindst version 0.98. Kino version 0.51 tilbyder scene redigering (de almindelige klip, kopier, indsæt, mv operationer). Kino kan optage video fra dit DV kamera, som kan kontrolleres direkte fra kino (via IEEE1394) og v4l. (v4l support skal slås til i preferences da det er eksperimental kode). Kino har en timeline funktion, samt mulighed for at trimme scener. Kino kan eksportere din film tilbage til dit kamera, hvis det understøtter DV in (se Afsnit 6.5.5.1). Det kræver ikke en særligt kraftig maskine, men en rimelig disk, der kan holde mindst 3.6 MB/s ligeså længe filmen varer. Kino kan også eksportere til DV filer, still billeder, mp3 og wav filer, samt til MJPEG (hvis du har mjpegtools installeret).

Nyt i version 0.51 er muligheden for at lave overgange og simple titler og effekter, via "FX" siden. Grænsefladen er lidt mærkværdig, men godt forklaret i kinos online hjælp. Mest besynderligt er nok den måde man vælger ens kildemateriale, altså f.eks. ved en overgang hvilke frames man vil bruge til overgangen. Man skal som regel vælge "Overwrite" - som faktisk burde hedde "Replace" - ihvertfald hvis man vil lave overgange. Kino udviklerne har i denne version valgt at fokusere på stabilitet og korrekthed og bevidst udskudt at forsøge at lave et fantastisk interface, indtil de har en bedre forståelse for hvordan dette skal laves.

Kino kommer som udgangspunkt ikke med vildt mange overgange eller effekter. F.eks. er der ikke engang "titler" med. Til det skal du hente, oversætte og installere nogen plugins. To gode steder at få kino plugins er http://users.pandora.be/acp/kino og http://www.k-3d.com/kino. Her er både titler og en række brugbare overgange og effekter.

6.5.4. Konvertering til det endelige format

Denne sektion beskriver meget kort hvilke værktøjer man kan bruge til slutkonvertering til det populære DIVX AVI format, og især MPEG strømme til Video-CD'er.

6.5.4.2. Indkodning til VideoCD-MPEG-film

Se lav2mpeg i Afsnit 6.5.2.2. Det er ret nemt at konvertere sine strømme til forskellige VideoCD-formater, såfremt man har dem i et format mjpegtools kan håndtere. For de bedre opløsninger, er kvaliteten væsentlig bedre end VHS. Et eksempel på hvordan man kan lave en Super VideoCD-strøm gives her:

[tyge@hven Avi 94%]$ lav2mpeg -m svcd video.avi
20:57:37 -  mode=svcd -
20:57:37 - using mode=svcd, stereo=2 audio bpr=224
20:57:38 - beginning conversion of video.avi to video.mpg
20:57:38 - had 37 to encode
20:57:38 - beginning video encoding
20:58:20 - finished video encoding ( took 0:00:42 - .880 fps)
20:58:20 - beginning audio encoding
20:58:21 - finished audio encoding ( took 0:00:01 - 37.000 fps)
20:58:21 - beginning multiplexing
20:58:21 - finished multiplexing ( took 0:00:00 )
20:58:21 - finished encoding (took 0:00:43 - .860 fps)
[tyge@hven Avi 94%]$ ls -l video.*
-rw-r--r--    1 tyge     tyge      5519548 maj 28 20:52 video.avi
-rw-rw-r--    1 tyge     tyge       501984 maj 28 20:58 video.mpg

Bemærk at der er mange parametre at skrue på og at forskellige afspillere, især DVD-afspillere, har mulighed for at afspille VCD'ere med langt højere kvalitet end standarden egentlig lægger op til. Det kan absolut betale sig at eksperimentere - brug eventuelt et genskrivbart cd-medie indtil du er helt tilfreds.

6.5.5. Overføre video til slutmedie

Dette afsnit hænger selvfølgelig meget sammen med det foregående, idet slutdestinationen for ens film naturligvis har stor indflydelse på hvilke formater man vælger at lægge den endelige film i. I dette afsnit vil der blive fokuseret på overførsel til DV-bånd, VideoCD og almindeligt video-signal/bånd.

6.5.5.1. Lagring af endelig film på DV

Hvis man har et DV kamera kan man i mange tilfælde lægge den endelige film tilbage på bånd i kameraet. Fordelen ved at lægge den endelige film tilbage på DV bånd er naturligvis, at man derved bevarer den oprindelige kvalitet og har mulighed for at bruge kameraet til at overspille til normal videobånd, mv. Som nævnt i Afsnit 6.5.3.4 stiller det ikke særligt store krav til ens hardware at overføre DV video fra disken, da der ikke skal ske nogen konvertering af nævneværdig art.

For at kameraet skal kunne optage DV tilbage fra Firewire porten, skal det understøtte "DV-in". I Europa sælges de fleste kameraer uden DV-in. Imidlertid er kameraerne identiske med dem der sælges i f.eks. Japan med DV-in. Muligheden er blot fjernet i firmwaren. Heldigvis kan man enable DV-in igen, med simpel software. En god oversigt over de forskellige programmer der findes til dette, kan findes på Enabling DV-IN on D8 & DV. Desværre er de fleste af disse programmer Windows programmer, men for f.eks. JVC kameraer, findes der et Linux program. Når man har enablet DV-in i firmwaren, skal man dog stadig have en mulighed for at starte optagelsen. Proceduren for dette er typisk beskrevet for hver type kamera. For nogen kameraer kan det kun gøres med software, for andre kan man trykke på recordknappen, mens kameraet står i playmode, eller lignende mærkværdigheder. NB: Brug for egen risiko, naturligvis. Skulle man være så heldig at eje et DV kamera med DV-in som standard, er ovenstående betragtninger selvklart ligegyldige.

Kino kan exportere ens film til DV-kameraet. Kino vil forsøge at starte optagelsen på kameraet, men for f.eks. mit kamera, skal jeg derudover selv presse record knappen ind. Der er nogle forskellige indstillinger i Kino man kan justere, der handler om timing mv. Hvis man oplever billedfejl eller lignende kan det muligvis betale sig at jurstere på disse indstillinger.

For at kunne eksportere tilbage til kameraet med Kino, skal man have indlæst modulet "video1394" og have et device med de rigtige rettigheder. Det kan f.eks. se sådan ud:

[root@linus /root]# ls -l /dev/video1394
crw-r--r--    1 tyge     tyge     172,   0 maj  4 13:39 /dev/video1394

6.5.5.2. Lagring af endelig film på VideoCD

Når man har konverteret sine formater til VideoCD-kompatible strømme, kan programmet vcdimager anbefales til at lave en VideoCD-fil (eng: image) med, som man derefter kan brænde til en cd-rom med programmet cdrdao.

VCDImagers hjemmeside er på http://www.vcdimager.org/ og cdrdao holder til på http://cdrdao.sourceforge.net.

En VideoCD kan være mange ting. Hvis man vil have f.eks. avancerede menuer, mv, kan VCDimager faktisk sagtens klare det. Det er dog lidt indviklet. Det kan anbefales at læse de guider der er på VCDImagers hjemmeside, men man kan også starte meget simpelt. Her er f.eks. et udpluk af en skabning af en videocd fil:

[tyge@hven Avi]$ vcdimager -t svcd -c video.cue -b video.bin -l TEST -v video.mpg
   INFO: scanning mpeg sequence item #0 for scanpoints...
   INFO: writing track 1 (ISO9660)...
   INFO: writing track 2, MPEG2, PAL 2/3 D-1 (480x576/25fps), audio[0]: l2/44.1kHz/224kbps/stereo ...
finished ok, image created with 816 sectors [00:10.66] (1919232 bytes)
[tyge@hven Avi]$ ls -l video.*
-rw-r--r--    1 tyge     tyge      5519548 maj 28 20:52 video.avi
-rw-rw-r--    1 tyge     tyge      1919232 maj 28 21:01 video.bin
-rw-rw-r--    1 tyge     tyge          170 maj 28 21:01 video.cue
-rw-rw-r--    1 tyge     tyge       501984 maj 28 20:58 video.mpg

Man kan så brænde til cd-rom med f.eks. følgende:

[tyge@hven Avi 95%]$ cdrdao write --device 0,0,0 --driver generic-mmc video.cue
...
Starting write at speed 8...
Pausing 10 seconds - hit CTRL-C to abort.
Process can be aborted with QUIT signal (usually CTRL-\).
Executing power calibration...
Power calibration successful.
Writing track 01 (mode MODE2_RAW/MODE2_RAW)...
Writing track 02 (mode MODE2_RAW/MODE2_RAW)...
...
Writing finished successfully.

Man kan så smide sin Video-CD i sin DVD-afspiller og se sin video på fjernsynet. I den højeste kvalitet (3000 kbit/s, 480×576 pixel, 25 billeder/s) kan man have omkring 40 minutter på en cd-rom beregnet til 80 minutters lydoptagelse. Og kvaliteten er en del bedre end på almindelige videobånd. Endelig er mediet jo billigere.

6.5.5.3. Lagring af endelig film på VHS

Hvis man vil lave en VHS-film, kan man naturligvis vælge at overføre til VideoCD eller tilbage til DV-bånd, hvis man har mulighed for at gøre dette. Herefter kan man overspille til analog bånd fra f.eks. en DVD-afspiller eller direkte fra videokameraet. Imidlertid kan man også, hvis man har et videokort der understøtter TV out, overføre direkte fra PC til sin videooptager. Det kræver naturligvis at man har konfigureret X11 til at understøtte dette. Man kan så afspille til videoudgangen, i fuldskærm og starte optagelsen samtidig med at man afspiller filmen. Se Afsnit 6.1 og Afsnit 6.2 for mere information om dette.

Den store ulempe ved at gøre det på denne måde er at man skal have tilstrækkeligt med computerkraft til at sikre afspilning uden at der bliver tabt billeder undervejs eller lyden hakker. Ellers vil disse fejl jo optræde på videoen. Det betyder at man i en vis udstrækning skal passe på hvad man laver på sin maskine samtidig - det vil f.eks. næppe være smart at begynde at oversætte kernen samtidig. »Low latency«-lapperne til kernen vil muligvis kunne hjælpe, men generelt må denne metode til overførsel af video siges at være den ringeste af dem der er omtalt her.

6.5.6. Yderligere information om videoredigering

Der findes et væld af værktøjer og information om videoredigering under Linux. På mange af de hjemmesider der er nævnt ovenfor, kan du finde yderligere information. Ellers kan du også kigge på nogen af følgende:

Der er som sagt meget meget mere. Et interessant lille værktøj, hvis man ejer et DV kamera, er dvbackup, som lader en gemme 10 Gb på et DV-bånd. Hjemmesiden er på http://sourceforge.net/projects/dvbackup.