User Tools

Site Tools


software:mov2flv

mov2flv conversion script

This applescript below converts quicktime .mov files to .flv files.

prerequisites

  • Create in After Effects a render profile called “Adobe Flash Video”, which uses the on6 codec for video and mp3 (256 kb/s) for audio.

Usage

  • drag and drop one or more files or a folder onto this script.

Code

-- 
-- ae_mov2flv.app
-- 
-- an apple script applet to convert .mov files to .flv files
-- this is specially for users which want to record clips with the macbook with an external microphone
--and correct (small) offset between audio and video
-- It uses Adobe After Effects CS3 to convert, correct audio offset and render into flv with on6/mp3 codec
--
--  THIS SCRIPT NEEDS SPECIAL PERMISSION FROM AFTER EFFECTS, OTHERWISE FILECOPY WILL NOT WORK. ENABLE:
--  Preferences > General, and select “Allow Scripts To Write Files And Access Network.”

-- Applet Code
-- 
-- The following appears only when the droplet is double clicked
on run
	display dialog "ae_mov2flv.app" & return & return & "Convert a mov w/Audio to a flv file" & return & return & "To convert .mov files to .flv, just drag the files or folders of files onto this applet.  The script will start Adobe After Effects CS3, setup a composition, correct offset between audio video." & return & return & "The resulting converted .flv movie files will be in the same folder."
end run

-- This droplet processes both files or folders of files dropped onto the applet
on open (these_items)
	repeat with i from 1 to the count of these_items
		set this_item to (item i of these_items)
		set the item_info to info for this_item
		if folder of the item_info is true then
			process_folder(this_item)
		else if (alias of the item_info is false) and (the name extension of the item_info is "MOV") then
			process_item(this_item)
		end if
	end repeat
	
	--	display dialog "Converted the movie(s)." & return & return & "Enjoy!"
end open

-- this sub-routine processes folders
on process_folder(this_folder)
	set these_items to list folder this_folder without invisibles
	repeat with i from 1 to the count of these_items
		set this_item to alias ((this_folder as text) & (item i of these_items))
		set the item_info to info for this_item
		if folder of the item_info is true then
			process_folder(this_item)
		else if (alias of the item_info is false) and (the name extension of the item_info is "MOV") then
			process_item(this_item)
		end if
	end repeat
end process_folder

-- this sub-routine processes files
on process_item(this_item)
	-- NOTE that the variable this_item is a file reference in alias format
	set full_path to the POSIX path of this_item
	-- !!! MODIFY THESE PARAMETERS TO SUIT if you have other preferences you'd like to use
	-- activate AE (this will be ignored if it's already open)
	try
		tell application "Adobe After Effects CS3"
			with timeout of 3600 seconds
				activate
				
				-- begin After Effects script: close any open project (if it isn't rendering)
				set line1 to "if (app.project.renderQueue.rendering != true){" & return
				set line2 to "app.project.close(CloseOptions.DO_NOT_SAVE_CHANGES);}" & return
				set closeAnyExistingProjects to line1 & line2
				DoScript closeAnyExistingProjects with override
				-- end After Effects script
				
				-- begin After Effects script
				set line1 to "if(!app.project){" & return
				set line2 to "var myProject = app.newProject();}" & return
				set line3 to "else{" & return
				set line4 to "var myProject = app.project;}" & return
				set line5 to "var theFile = \"" & this_item & "\";" & return
				set line6 to "var outFile = theFile.substring(0, theFile.lastIndexOf(\".\"));" & return
				set line7 to "time = new Date();" & return
				set line8 to "var tmpFile = \"~/AEtmp\"+time.getFullYear()+time.getMonth()+time.getDay()+time.getHours()+time.getMinutes()+time.getSeconds()+\".flv\";" & return
				set line9 to "var c=0;" & return
				set line10 to "var cs=\"\";" & return
				set line11 to "do{"
				set line12 to "if (c > 0) {cs = \"(\" + c.toString() + \")\"};" & return
				set line13 to "c=c+1;" & return
				set line14 to "} while (File(outFile + cs + \".flv\").exists)" & return
				set line15 to "var importOptions = new ImportOptions (new File (theFile));" & return
				set line16 to "if(importOptions.canImportAs(ImportAsType.FOOTAGE)){" & return
				set line17 to "try{"
				set line18 to "var myItem = myProject.importFile(importOptions);" & return
				set line19 to "var newComp = myProject.items.addComp(\"rendercomp\",myItem.width,myItem.height,myItem.pixelAspect,myItem.duration, myItem.frameRate);" & return
				set line20 to "var VideoLayer = newComp.layers.add(myItem);" & return
				set line21 to "var AudioLayer = newComp.layers.add(myItem);" & return
				set line22 to "AudioLayer.audioEnabled = false;" & return
				set line23 to "VideoLayer.enabled = false;" & return
				set line24 to "AudioLayer.startTime = AudioLayer.startTime - 3*(1/myItem.frameRate);" & return
				set line25 to "var rendQueue = myProject.renderQueue.items.add(newComp);" & return
				set line26 to "var thisQueue = myProject.renderQueue.item(myProject.renderQueue.numItems);" & return
				set line27 to "thisQueue.outputModules[1].applyTemplate(\"Adobe Flash Video\");" & return
				set line28 to "thisQueue.outputModule(1).file = new File(tmpFile);" & return
				set line29 to "thisQueue.applyTemplate(\"Best Settings\");" & return
				set line30 to "myProject.renderQueue.render();" & return
				set line31 to "newComp.remove();" & return
				set line32 to "myItem.remove();" & return
				set line33 to "var tempFile = File(tmpFile);" & return
				set line34 to "tempFile.copy(outFile+cs+\".flv\");" & return
				set line35 to "tempFile.remove();" & return
				
				set line36 to "}catch(e){" & return
				set line37 to "}" & return
				set line38 to "}" & return
				set mov2flv to line1 & line2 & line3 & line4 & line5 & line6 & line7 & line8 & line9 & line10 & line11 & line12 & line13 & line14 & line15 & line16 & line17 & line18 & line19 & line20 & line21 & line22 & line23 & line24 & line25 & line26 & line27 & line28 & line29 & line30 & line31 & line32 & line33 & line34 & line35 & line36 & line37 & line38
				DoScript mov2flv
				-- end After Effects script
				
			end timeout
			
			-- begin After Effects script: quit application
			set line1 to "myProject.close(CloseOptions.DO_NOT_SAVE_CHANGES);" & return
			set line2 to "app.quit();" & return
			DoScript line1 & line2 with override
			-- end After Effects script
			
			delay 5
			
		end tell
	on error the error_message number the error_number
		display dialog "Error: " & the error_number & ". " & the error_message
	end try
end process_item


on getFileName(thefile)
	set {oldDelims, AppleScript's text item delimiters} to {AppleScript's text item delimiters, {":"}}
	set mytextfilename to last text item of (thefile as text)
	set AppleScript's text item delimiters to oldDelims
	return mytextfilename
end getFileName
software/mov2flv.txt · Last modified: 2010/10/12 01:00 by admin