Log in

View Full Version : MXF batch convert


goorawin
21st May 2015, 01:11
I have a problem and am hoping someone will be able help.
I have a whole bunch of MXF files that will not open in Sony Vegas. They also have 4 tracks of audio.
I need to convert them all to a format that will open in Vegas.
This script works fine but I need to be able batch convert these files.
So my question is how can I get the audio tracks to insert the differences A01, A02, A03, A04, in place of the
V01 from the clip name?


Clip="D:\Video\C0005\C0005V01.MXF"
V1=DirectShowSource(Clip)
Track1=DirectShowSource("D:\Video\C0005\C0005A01.MXF" )
Track2=DirectShowSource("D:\Video\C0005\C0005A02.MXF" )
Track3=DirectShowSource("D:\Video\C0005\C0005A03.MXF" )
Track4=DirectShowSource("D:\Video\C0005\C0005A04.MXF" )
Audio=MergeChannels(Track1, Track2, Track3, Track4)
AudioDub(V1, Audio)

I nornamly use Avisynth Batch Scripter to do this work.
Any ideas please.

StainlessS
21st May 2015, 02:36
Try this (untested, dont have any mxf files).


myName="MXF Batcher: "
#######
FSEL_TITLE="Select MXF files"
FSEL_DIR="."
FSEL_FILT="MXF files|*.MXF"
FSEL_MULTI=True
FILE_LIST = RT_FSelOpen(title=FSEL_TITLE,dir=FSEL_DIR,filt=FSEL_FILT,multi=FSEL_MULTI)
Assert(FILE_LIST.IsString,RT_String("%s RT_FSelOpen Error",myName))

SCRIPT_TMPT = """
Clip="%s"
V1=DirectShowSource(Clip)
Track1=DirectShowSource("%sA01.MXF" )
Track2=DirectShowSource("%sA02.MXF" )
Track3=DirectShowSource("%sA03.MXF" )
Track4=DirectShowSource("%sA04.MXF" )
Audio=MergeChannels(Track1, Track2, Track3, Track4)
AudioDub(V1, Audio)
"""

GSCript("""
NLINES = RT_TxtQueryLines(FILE_LIST)
for(i=0,NLINES-1) {
MXFName = RT_TxtGetLine(FILE_LIST,i)
AFN = LeftStr(MXFName, Strlen(MXFName) - StrleN("V01.MXF"))
MXF=RT_String(SCRIPT_TMPT,MXFName,AFN,AFN,AFN,AFN)
RT_WriteFile(AFN+".AVS","%s",MXF)
}
""")
MessageClip("DONE")


Dont use AvsPMod, it upsets the FileSelector (use media player or anything else).

If all files in same directory, then can batch select them (just the V01 etc files, not A01).

EDIT: Take care, it is unfortunate that both video and audio share same extension and so audio files will also appear
in the file selector.

EDIT: Created C0005.avs

Clip="D:\Video\C0005\C0005V01.MXF"
V1=DirectShowSource(Clip)
Track1=DirectShowSource("D:\Video\C0005\C0005A01.MXF" )
Track2=DirectShowSource("D:\Video\C0005\C0005A02.MXF" )
Track3=DirectShowSource("D:\Video\C0005\C0005A03.MXF" )
Track4=DirectShowSource("D:\Video\C0005\C0005A04.MXF" )
Audio=MergeChannels(Track1, Track2, Track3, Track4)
AudioDub(V1, Audio)


Created C0006.avs (EDIT: both files were in the C0005 directory)

Clip="D:\Video\C0005\C0006V01.MXF"
V1=DirectShowSource(Clip)
Track1=DirectShowSource("D:\Video\C0005\C0006A01.MXF" )
Track2=DirectShowSource("D:\Video\C0005\C0006A02.MXF" )
Track3=DirectShowSource("D:\Video\C0005\C0006A03.MXF" )
Track4=DirectShowSource("D:\Video\C0005\C0006A04.MXF" )
Audio=MergeChannels(Track1, Track2, Track3, Track4)
AudioDub(V1, Audio)


EDIT: Or this, creates output avs's in current directory. Can keep current directory layout without moving all clips into
same directory for batch file selector selection, just set start and end number and it will create the avs files (whether
directories/files exist or not).

BASENAME ="D:\Video\C%04d\C%04d" # Source Dir and Filename, %04d == 4 digit number

START_No = 5 # ie C0005\C0005V01.MFX
END_No = 6 # ie C0006\C0006V01.MFX


SCRIPT_TMPT = """
Clip="%sV01.MXF"
V1=DirectShowSource(Clip)
Track1=DirectShowSource("%sA01.MXF" )
Track2=DirectShowSource("%sA02.MXF" )
Track3=DirectShowSource("%sA03.MXF" )
Track4=DirectShowSource("%sA04.MXF" )
Audio=MergeChannels(Track1, Track2, Track3, Track4)
AudioDub(V1, Audio)
"""

GSCript("""
for(i=START_No,END_No) {
BN = RT_String(BASENAME,i,i)
TMP=RT_String(SCRIPT_TMPT,BN,BN,BN,BN,BN)
RT_WriteFile(RT_FilenameSplit(BN,Get=4)+".AVS","%s",TMP) # Output filename eg "C0005" + ".AVS"
}
""")
MessageClip("DONE")

goorawin
21st May 2015, 03:03
Thank you, that is perfect. It will save so much time and is very easy to use. It's not a problem including the audio files in the same directory.

StainlessS
21st May 2015, 03:13
Added an edit