Digital videoredigering i Linux

Från Unix.se, den fria unixresursen.

Innehåll

Introduktion

Den här artikeln beskriver hur du kommer igång med digital videoredigering i Linux. En del av detta bör gälla även i exempelvis FreeBSD, men dess FireWire-stöd har jag tyvärr inte hunnit testa än. Jag kommer att gå igenom installation av FireWire (IEEE 1394, även känt som iLinkSonys prylar), nödvändiga bibliotek och användbara program.

Du behöver följande:

  • Dator med Linux 2.4.x
  • FireWire-kort. Ibland är det inbyggt (t.ex. på många Apple- och Sony Vaio-maskiner), annars kostar det några hundralappar på närmsta vettiga datoraffär.
  • DV-kamera (Panasonic NV-DS30 i mitt fall)
  • Stor hårddisk - DV är 3,6MB per sekund...

FireWire-installation

Om du använder en distribution med version 2.4.18 eller senare av kärnan har du förmodligen redan de nödvändiga modulerna. Testa följande:

# modprobe ohci1394
# modprobe raw1394
# modprobe video1394

Om ovanstående utfördes utan problem kan du hoppa vidare till "Testa FireWire". Om inte är det bara att ladda ner senaste versionen av Linux (2.4.20 i skrivande stund) och kompilera, vilket beskrivs mer i [Kernelkompilering i Linux|den här artikeln]. I konfigurationen ska du aktivera 'Prompt for development and/or incomplete code/driver' under 'Code maturity level options'. Gå sedan till 'IEEE 1394 (FireWire) support' och aktivera 'IEEE 1394 (FireWire)', 'OHCI-1394', 'OHCI-1394 Video' och 'Raw IEEE1394 I/O' som moduler.

Ladda sedan ner libraw1394 (http://sourceforge.net/projects/libraw1394/), kompilera och installera:

# tar zxvf libraw1394_0.9.0.tar.gz
# cd libraw1394-0.9.0
# ./configure
# make && make install

Stanna kvar i libraw1394-katalogen och skapa /dev/raw1394 på följande vis:

# make dev

Starta sedan om datorn. Logga in och ladda modulerna:

# modprobe ohci1394
# modprobe raw1394
# modprobe video1394

Om det inte fungerade kan du testa att ladda modulerna i följande ordning:

# insmod ieee1394
# insmod ohci1394
# insmod raw1394
# insmod video1394

Om du inte kör devfs och inte har /dev/video1394 måste du skapa den. Om kärnan är 2.4.19 eller senare:

# mknod -m 666 /dev/video1394 c 171 16

Om kärnan är äldre än 2.4.19:

# mknod -m 666 /dev/video1394 c 172 0

Testa FireWire

Undersök meddelandena som kärnan ger ifrån sig med hjälp av dmesg och less:

$ dmesg | less

Leta efter rader som börjar med 'ieee1394' eller 'ohci1394_0' och specifikt ett eller flera meddelanden i stil med 'ieee1394: Host added:', som indikerar att FireWire-kort hittats. Kör sedan testlibraw, som utför några enkla tester.

Gscanbus (http://gscanbus.berlios.de/) är ett användbart verkyg med vilket du kan testa och visualisera din FireWire-konfiguration och anslutna enheter. Det har även AV/C-stöd för att skicka kommandon till t.ex. videokameror. Packa upp, kompilera och kör:

$ tar zxvf gscanbus-0.7.1.tgz
$ cd gscanbus-0.7.1
$ ./configure
$ make
$ ./gscanbus

Du bör nu få upp ett fönster där varje nod representeras av varsin ikon som du kan klicka på för att få mer information. Testa att sätta på och koppla DV-kameran (eller någon annan FireWire-enhet) till kortet; den bör då dyka upp i gscanbus.

Nödvändiga bibliotek

Förutom libraw, som vi redan installerat, behövs libdv (http://sourceforge.net/projects/libdv/). Kompilera, installera:

# tar zxvf libdv-0.99.tar.gz
# cd libdv-0.99
# ./configure
# make && make install

libavc1394 (http://sourceforge.net/projects/libavc1394) behövs för att kunna kontrollera kameran från olika program. Kompilera, installera:

# tar zxvf libavc1394-0.4.1.tar.gz
# cd libavc1394-0.4.1
# ./configure
# make && make install

Kino

Kino (http://kino.schirmacher.de/) är ett utmärkt ickelinjärt (non-linear) videoredigeringsprogram som du kan importera, exportera och redigera DV-film med. Det stöder en del enkla audio/video-filter och plugins. Om du som jag har vi(m) som favoriteditor kan jag glädja dig med att de flesta redigerings- och navigationskommandona i Kino är mappade till dess vi-motsvarigheter. Läs mer om Kino (http://kino.schirmacher.de/article/static/2).

Installation

Ladda ner (http://kino.schirmacher.de/article/static/1), kompilera och installera (GNOME 1.4, och en del annat, krävs - se README om du stöter på problem):

# tar zxvf kino-0.6.4.tar.gz
# cd kino-0.6.4
# ./configure
# make && make install

Starta Kino och gå till File->Preferences. Om du får meddelandet "The IEEE 1394 subsystem is not loaded; all IEEE 1394 options are disabled." har du antingen inte alla nödvändiga moduler laddade eller otillräckliga rättigheter (fixa dessa eller kör programmet som root).

Kolla så att allt verkar stämma under IEEE 1394-tabben och bläddra igenom de andra tabbarna för annat du kan tänkas vilja ändra (t.ex. vilken fil/katalog importerad film ska läggas i).

Importera (Capture)

För att importera video måste kameran vara i Play/Camera- eller VCR-läget. Välj Capture-tabben i Kinos huvudfönster, klicka på AV/C-knappen (vilket ger dig kontroll över play/stop/rewind/etc. på kameran), välj filnamn (indexnummer och .dv läggs till i filnamnet automatiskt) och klicka sen på Capture. Känn ditt lediga hårddiskutrymme snabbt minska och tryck på Stop när du är klar.

Exportera

För att exportera film tillbaka till DV-bandet går du till Export-tabben. Se till så att din kamera är i Play/Camera- eller VCR-läge och klicka på Export.

Du kan också exportera DV-filmens audio/video till en uppsjö andra format: MPEG-1, MPEG-2, DivX, WAV, Ogg Vorbis, MP3, JPEG, PNG, etc. Observera att du kanske inte har stöd för alla - för att t.ex. exportera till MPEG-1, MPEG-2 och DivX krävs mjpegtools (http://mjpeg.sourceforge.net/), för MP3 krävs LAME (http://lame.sourceforge.net/), osv.

Redigera

Kinos kommandobindningar liknar som sagt de som du finner i editorn vi - l och h flyttar framåt respektive bakåt en bildruta, x tar bort en bildruta, dw tar bort en sekund, dd tar bort en hel scen, i byter till Capture-tabben, osv. När du är van vid hur det fungerar kommer du att kunna navigera och redigera i snabbt. För att jämföra med vi:

  • Ett tecken blir en bildruta
  • Ett ord blir en sekund
  • En rad blir en scen
  • En fil blir en film

Läs mer om kommandona i Command Reference som ingår i dokumentationen.

I FX-tabben kan du välja bland ett gäng grundläggande audio/video-effekter i form av filter (t.ex. b/w och reverse) och transitions (t.ex. fade to/from och cross-fade).

dvgrab

Vad dvgrab (http://kino.schirmacher.de/article/static/1) gör hör du på namnet. Det är ett konsolprogram som helt enkelt importerar DV-audio/video till en eller flera filer i olika format (dv1/dv2/raw/qt/jpeg). Kompilera och installera:

# tar zxvf dvgrab-1.2.tar.gz
# cd dvgrab-1.2
# ./configure
# make && make install

Observera att dvgrab inte kontrollerar kameran på något sätt. För att fånga allt från att du trycker på play på kameran till att du trycker på stop (filnamnen blir foo_001.avi, foo_002.avi, etc. - tryck ctrl+c efter att du stoppat):

$ dvgrab foo

foo001.avi: 301 frames

Fånga 100 bildrutor (d v s fyra sekunder, om källan är PAL):

$ dvgrab --frames 100 foo
foo001.avi: 100 frames

Du kan ha nåt webcam-liknande med hjälp av följande kommando, som fångar var 125:e bildruta (alltså var femte sekund) till filen foo001.jpg:

$ dvgrab --format jpeg --every 125 foo
>>> Trying foo001.jpg

Se dvgrab --help för fler valmöjligheter.

Cinelerra

Ett välkänt program i Linuxvideoredigeringskretsar är det väldigt funktionsrika Cinelerra (http://heroinewarrior.com/cinelerra.php3) (från personerna (?) bakom Broadcast 2000), som är helt professionellt inriktat och som brukar jämföras med Adobe Premiere.

Referenser och mer läsning

Se även

Personliga verktyg