I think I just did it!!! I got an applescript from Apple's site to convert files to DV, and changed it to work with Mpeg4's. Hopefully it works. here's the code. it's a really cheap job, and I'm not sure if I even did it right... I do know, though, that I have it set to export using the most recent settings. I don't know all the export details for MPEG4 with AppleScript
The script does require the pro version though...
here's the code...
property target_folder : ""
property use_default : true
property type_list : {"MPEG4"}
-- since file types are optional in Mac OS X,
-- check the name extension if there is no file type
-- NOTE: do not use periods (.) with the items in the name extensions list
-- eg: {"txt", "text", "jpg", "jpeg"}, NOT: {".txt", ".text", ".jpg", ".jpeg"}
property extension_list : {"mp4", "cdda", "mp3", "aiff"}
property default_preset : "MPEG4 128 kbits/sec"
on run
repeat
display dialog "Save as MPEG4
This script will save a copy of dragged-on movie files as MPEG4 files." buttons {"Set Prefs", "OK"} default button 2
if the button returned of the result is "Set Prefs" then
display dialog "Use default settings or the most recent settings?" buttons {"Cancel", "Recent", "Default"} default button 3
if the button returned of the result is "Recent" then
set use_default to false
else
set use_default to true
end if
else
exit repeat
end if
end repeat
end run
-- This droplet processes both files or folders of files dropped onto the applet
on open these_items
set the target_folder to choose folder with prompt "Destination folder for the converted files:"
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 file type of the item_info is in the type_list) or ¬
the name extension of the item_info is in the extension_list) then
process_item(this_item)
end if
end repeat
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 file type of the item_info is in the type_list) or ¬
the name extension of the item_info is in the extension_list) 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
-- FILE PROCESSING STATEMENTS GOES HERE
with timeout of 3600 seconds -- one hour per movie time limit
tell application "QuickTime Player"
launch -- bypasses promo movie
activate
try
my toggle_suppress(true)
stop every movie
close every movie saving no
open this_item
if saveable of movie 1 is false then
error "This movie has previously been set so that it cannot be copied, edited, or saved."
end if
set this_file to the original file of movie 1
-- get the name of the movie
set the movie_name to the name of movie 1
-- check to see if the opened movie can be exported
if (can export movie 1 as MPEG4) is true then
tell application "Finder"
set the file_name to the name of this_file
set the new_file to ((the target_folder as text) & the file_name) as string
if (exists file new_file) then ¬
delete file new_file
end tell
-- export the movie as hinted movie
if use_default is true then
export movie 1 to file new_file as MPEG4 using settings preset default_preset
else
export movie 1 to file new_file as MPEG4 using most recent settings
end if
else
error "The movie " & the movie_name & " cannot be exported as a mp4."
end if
my toggle_suppress(false)
on error error_msg
my toggle_suppress(false)
display dialog error_msg buttons {"Stop", "Continue"} default button 2
set the button_pressed to the button returned of the result
if the button_pressed is "Stop" then error number -128
end try
-- close the movie
close movie 1 saving no
end tell
end timeout
end process_item
on toggle_suppress(status_flag)
tell application "QuickTime Player"
set ignore auto play to the status_flag
set ignore auto present to the status_flag
end tell
end toggle_suppress
on gestaltVersion_info(gestalt_code, string_length)
try
tell application "Finder" to ¬
copy my NumToHex((system attribute gestalt_code), ¬
string_length) to {a, b, c, d}
set the numeric_version to {a, b, c, d} as string
if a is "0" then set a to ""
set the version_string to (a & b & "." & c & "." & d) as string
return {numeric_version, version_string}
on error
return {"", "unknown"}
end try
end gestaltVersion_info
on NumToHex(hexData, stringLength)
set hexString to {}
repeat with i from stringLength to 1 by -1
set hexString to ((hexData mod 16) as string) & hexString
set hexData to hexData div 16
end repeat
return (hexString as string)
end NumToHex
Just remember, I really had no idea what I was doing, I just copied and pasted... If you can fix the code, or make it better, please try, that way we can have a good way to rip mp4's. If at all possible, try the CDDB support too...