23. januar 2006 - 09:32Der er
4 kommentarer og 1 løsning
Batch Mencoder
Hejsa
Jeg optager en del video med mit digtalkamera. Problemet er bare at kameraret encoder i QuickTime MPEG4, hvilket for det første fylder ad helvede til, og så er xine ikke lige så glad for lyden i det. Anyway, har lavet et simpelt script der ser sådan her ud:
Men det er lidt besværligt. Så jeg vil gerne have et script der gør følgende:
1. For hver fil der slutter med .MOV 1.1 Encode filen med output file extension .avi, og ikke .MOV.avi (som den gør nu) 1.2 Flyt den originale fil til .MOV~
Scriptet må ikke encode filer der hedder .MOV~, kun .MOV.
Jeg kører Linux, og vil foretrække et bash script, men python er også ok, så længe det virker. Har ikk så meget erfaring (læs: intet) med python, men hvis nogen har er der 150 point at hente :)
Du skal selv ændre linien: Command = "renxx.exe " + OldName + " " + NewName Det er den kommando der skal til for at lave .avi filen, OldName er navnet op .mov filen, NewName er navnet på .avi filen. Jeg vil tro at det skal se sådan ud: "mencoder " + OldName + " -oac mp3lame -lameopts abr:br=96 -ovc xvid -xvidencopts bitrate=250 -o " + NewName
Linien: MyPath='c:\\temp' Fortæller hvor den skal lede efter filer.
For at teste kan du udskifte linien: os.system(Command) Med: print Command og slette linien os.rename(OldName, BackupName)
Så udfører den ingenting, men udskriver den kommando den ville have udført.
import time, os, sys, fnmatch, shutil from stat import *
MyPath='c:\\temp'
for Root, Dirs, Files in os.walk(MyPath) : MatchFiles = fnmatch.filter(Files, "*.mov") for File in MatchFiles : OldName = os.path.join(Root, File) Mode = os.stat(OldName)[ST_MODE] if not S_ISDIR(Mode): Base, Ext = os.path.splitext(OldName) NewName = Base + ".avi" Command = "renxx.exe " + OldName + " " + NewName os.system(Command) BackupName = OldName + "~" os.rename(OldName, BackupName)
Med en smule redigering så det passer til Linux, så virker det fint :) takker mange gange.
Lige for en god ordens skyld, så er her det script jeg bruger: #!/usr/bin/env python
import time, os, sys, fnmatch, shutil from stat import *
MyPath='/home/des/Images/'
for Root, Dirs, Files in os.walk(MyPath) : MatchFiles = fnmatch.filter(Files, "*.MOV") for File in MatchFiles : OldName = os.path.join(Root, File) Mode = os.stat(OldName)[ST_MODE] if not S_ISDIR(Mode) : Base, Ext = os.path.splitext(OldName) NewName = Base + ".avi" Command = "mencoder " + OldName + " -oac mp3lame -lameopts abr:br=96 -ovc xvid -xvidencopts bitrate=350 -o " + NewName os.system(Command) BackupName = OldName + "~" os.rename(OldName, BackupName)
Grunden til det er .MOV og ikke .mov er fordi Linux er case-sensitive. Har ikk prøvet med lower-case .mov, så ved ikk om python ignorerer case-sensitivity, men det ville jeg finde meget meget mærkeligt ...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.