Zpracování MOD video souborů na Linuxu
Video soubory mají koncovku .MOD. Dle informací tento formát používají i některé kamery Canon a Sony.MOD files - specifikace
Zatím jsem, bohužel nenašel žádnou oficiální specifikaci souborů. Takže jen ze zkušeností:
- Jedná o mpeg-2 video s AC3 audio souborem (dohromady v jednom souboru).
- Průměrný bitrate kolísá mezi 4000 kbps a 6000kbps, maximální 8000kbps (SD kvalita, pro HD je to málo).
- fps 25 (frame per second - snímků za sekundu)
- Rozlišení 720x576 (klasické rozlišení pro PAL), poměr 4:3
Založení projektu - adresáře, soubory
Pro příklad: vytvoříme adresář video s následující strukturu adresářů:
$ tree -d video video/ |-- avidemux |-- dvd |-- mod_files |-- mpeg `-- openshot_projectsZ kamery jdou soubory stáhnout celkem snadno (připojení přes USB). Soubory zkopírujeme do adresáře mod_files.
Soubory přejmenujeme - dle data a času vytvoření.
$ find mod_files -type f -printf "mv %p mod_files/%TY%Tm%Td%TH%TM%TS\n" >> rename.sh $ ./rename.sh
Titulky
Mezi jednotlivými tituly budoucího DVD budou titulky a také záverečné titulky. Ty vytvoříme třeba OpenShot video editorem. V našem příkladu bude existovat pět titulů a sedm titulkových souborů (jedny navíc na začátku a jedny na konci). V editoru nastříháme jak potřebujeme a vyexportujeme.
Parametry exportu:
Pokročilá nastavení | ||
Exportovat do: | Video a audio | |
Typ projektu | ||
DV PAL Widescreen | ||
Nastavení sekvence snímků | ||
Formát obrázku: | png | |
Video nastavení | ||
Video formát: | vob | |
Video kodek: | mpeg2video | |
Datový tok: | 5 Mb/s | |
Audio nastavení | ||
Audio kodek: | ac3 | |
Vzorkovací frekvence: | 48000 | |
# kanálů: | 2 | |
Datový tok: | 256 kb/s |
Indexace mpeg
Nyní vytvoříme index pro všechny soubory. Například skriptem indexing.sh:
$ cd avidemux $ cat indexing.sh for f in ../openshot_projects/*.vob do fn=$(basename "$f") cp $f ../mod_files/openshot_$fn done cd ../mod_files for f in * do avidemux --autoindex --load $f --nogui --quit done ./indexing.shSkript zároveň zkopíruje vob soubory (z OpenShot editoru) do adresáře mod_files.
Spojení, deinterlace
Pro zpracování využijeme avidemux, který má kvalitní filtry a celkem dobře se s ním pracuje.
Varianta A
V adresáři avidemux vytvoříme textové soubory 001.mf, 002.mf, 003.mf, 004.mf, 005.mf, 006.mf a 007.mf, které obsahují po sobě jdoucí video soubory. Například:$ cat 002.mf openshot_002.vob 20090919_103614.0000000000.mod 20090919_111256.0000000000.mod 20090919_112212.0000000000.mod 20090919_112434.0000000000.mod 20090919_112534.0000000000.mod 20090919_112758.0000000000.mod 20090919_113114.0000000000.mod 20090919_113434.0000000000.modVytvoříme avidemuxfiles_template.txt, ve kterém jsou parametry pro zpracování souborů pomocí avidemux.
Parametry:
Video | ||
DVD (lavc) | ||
Encoding mode: | Two pass - average bitrate | |
Average bitrate (kb/s): | 7500 | |
Max. datový tok: | 9000 | |
Min. datový tok: | 150 | |
Řízení datového toku z kodeku Xvid: | True | |
Velikost bufferu: | DVD 224 kB | |
Poměr stran: | 16:9 | |
Prokládání: | Progresivní | |
Matice: | Výchozí | |
Velikost GOP: | 12 | |
Video filtry | ||
KernelDeint | ||
Field order: | Top | |
Treshold: | 6 | |
Sharp: | True | |
Twoway: | False | |
Map: | False | |
Audio | ||
AC3 (lav) | ||
Bitrate: | 224 | |
Audio filtry | ||
Změna snímkové frekvence: | Nic | |
Mixér: | Beze změny | |
Časový posun (ms): | False | |
Převzorkování (Hz): | False | |
Komprese dynamického rozsahu: | False | |
Zvýšení hlasitosti: | Nic | |
Formát | ||
MPEG-PS (A+V) |
Spustíme python skript avidemuxfiles.py, který ze souborů *.mf a avidemuxfiles_template.txt vytvoří skripty pro avidemux.
$ cat avidemuxfiles.py import os base_path = os.path.abspath('..') # v *.mf jsou ulozeny mod file, ktere prijdou do jednoho klipu files = [] for f in os.listdir('.'): if os.path.splitext(f)[1] == '.mf': files.append(f) files.sort() template = open('avidemuxfiles_template.txt').read() for f in files: modfiles = open(f).read().strip().split('\n') s = '' for i in range(len(modfiles)): cmd = 'append' if i == 0: cmd = 'load' s += 'app.%s("%s/mod_files/%s.idx");\n' % (cmd, base_path, modfiles[i]) #s += 'app.rebuildIndex();\n' ofilename = 'avscript_%s.avs' % os.path.splitext(f)[0] outfile = open(ofilename, 'w') outfile.write(template % (ofilename, s, os.path.join(base_path, 'mpeg', '%s.mpeg' % os.path.splitext(f)[0])) ) outfile.close() print '%s ulozen' % ofilenameTím nám v adresáři avidemux vznikly soubory avscript_001.avs, avscript_002.avs, avscript_003.avs, avscript_004.avs, avscript_005.avs, avscript_006.avs a avscript_007.avs.
Varianta B
Nebudeme potřebovat žádný soubor *.mf, avidemuxfiles_template.txt ani avidemuxfiles.py. Prostě za pomoci nějaké editoru vytvoříme přímo soubory avscript_*.avs. Například avscript_002.avs:$ cat avscript_002.avs //AD <- Needed to identify// //--automatically built-- //--Project: /tmp/video//avidemux/avscript_002.avs var app = new Avidemux(); //** Video ** // videos source app.load("/tmp/video/mod_files/openshot_002.vob.idx"); app.append("/tmp/video/mod_files/20090919_103614.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_111256.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_112212.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_112434.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_112534.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_112758.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_113114.0000000000.mod.idx"); app.append("/tmp/video/mod_files/20090919_113434.0000000000.mod.idx"); // segments app.rebuildIndex(); //** Postproc ** app.video.setPostProc(3,3,0); app.video.fps1000 = 25000; //** Filters ** app.video.addFilter("kerneldeint","order=1","threshold=6","sharp=1","twoway=0","map=0"); //** Video Codec conf ** app.video.codec("XDVD", "2PASSBITRATE=7400", "160 05 00 00 00 00 00 00 00 00 00 00 00 00 00 ......"); //** Audio ** app.audio.reset(); app.audio.codec("LavAC3",224,4,"e0 00 00 00 "); app.audio.normalizeMode=0; app.audio.normalizeValue=0; app.audio.delay=0; app.audio.mixer="NONE"; app.setContainer("PS"); //setSuccess(1); app.save("/tmp/video//mpeg/002.mpeg"); //app.Exit(); //End of script
Kafe, pohoda...
Zpracování souborů bude nějakou dobu trvat, takže si vytvoříme shell skript run.sh a ten spustíme.
$ cat run.sh for i in 1 2 3 4 5 6 7 do avidemux --run avscript_00$i.avs --quit done
Závěr
Pokud nedošlo k žádné chybě, tak v adresáři mpeg vznikly soubory 001.mpeg, 002.mpeg, 003.mpeg, 004.mpeg, 005.mpeg, 006.mpeg a 007.mpeg. Tyto soubory už můžeme jako jednotlivé tituly vložit do nějakého authoringového software a vytvořit DVD. Já jsem použil DVD Styler a pro mpeg použil volbu 'do not remultiplex/transcode'.
Last update: 18.11.2010 22:34:49