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_projects
Z 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.sh
Skript 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.mod
Vytvoří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' % ofilename
Tí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