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 iLink på Sonys 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
- IEEE 1394 for Linux (http://www.linux1394.org/)
- Kino, dvgrab (http://kino.schirmacher.de/)
- Cinelerra (http://heroinewarrior.com/cinelerra.php3)
- mjpegtools (http://mjpeg.sourceforge.net/)
- transcode (http://www.transcoding.org/)
- Kino tutorial - capture and export (http://www.robfisher.net/video/kino.html)
- Cinelerra - editing (http://www.robfisher.net/video/cinelerra1.html)
- Secrets of Cinelerra (http://heroinewarrior.com/cinelerra/cinelerra.html)
- dv_utils (http://www.singingwizard.org/programming.php)
- DV and Firewire Central (http://www.dvcentral.org/)