Этот ответ приветствуется, потому что ваши комментарии, кажется, указывают на то, что ваш основной интерес - сам AppleScript, а не преобразование видео из FLV в MP4. Если это так, я настоятельно рекомендую начать с хорошего справочника AppleScript, внимательно прочитать и научиться использовать доступные вам инструменты (особенно Script Editor и словари приложений). Попытка выучить новый язык путем изменения существующих приложений не годится для отладки и может закончиться очень плохими вещами, такими как программирование культа грузов. Это сказало,
Я бы начал с открытия словаря QuickTime Player (
Файл ->
Открыть словарь ... в редакторе скриптов), чтобы узнать, какие команды доступны. В моей версии QuickTime Player (7.6.4) в QuickTime Player Suite есть команда
export
:
export v : Export a movie or track to a file
export reference : the movie or track to export
to file : the destination file
as AIFF/Apple TV/AVI/BMP/DV stream/Fast Start QTVR Movie/FLC/hinted
movie/image sequence/interframe compressed VR object movie/iPhone/
iPhone cellular/iTunes/MuLaw/MPEG2/MPEG4/picture/QuickTime media
link/QuickTime movie/QuickTime TeXML/standard MIDI/System 7 sound/
text file/ThreeGPP/wave : the desired file type
[using default settings/most recent settings] : the export settings
to use
[using settings preset string] : the name of the export settings
preset to use
[using settings file] : the file containing the export settings
[replacing boolean] : should the original file be deleted first?
Небольшой поиск в Google позволяет предположить, что тип файла "iPhone" относится к файлу .m4v, поэтому первым шагом может быть замена save first document in target_path as ".m4v"
на export first document to target_path as iPhone
. Тем не менее, просматривая словарь, вы увидите, что есть также команда can export
:
can export v : Determine if a movie or track can be exported to the desired
type
can export reference : the movie or track to export
as AIFF/Apple TV/AVI/BMP/DV stream/Fast Start QTVR Movie/FLC/hinted
movie/image sequence/interframe compressed VR object movie/iPhone/
iPhone cellular/iTunes/MuLaw/MPEG2/MPEG4/picture/QuickTime media
link/QuickTime movie/QuickTime TeXML/standard MIDI/System 7 sound/
text file/ThreeGPP/wave : the desired file type
→ boolean : is the export supported
Поэтому мы должны проверить, что можно экспортировать фильм в формате iPhone/.m4v, прежде чем делать это:
if (can export first document as iPhone) then
export first document to target_path as iPhone
else
error "Cannot export " & (source_file as string) & " in .m4v (iPhone) format."
end if
Однако, если мы остановимся здесь, мы можем заметить, что некоторые выходные файлы не воспроизводятся правильно после определенной точки, потому что QuickTime может загружать файлы асинхронно (то есть, не все сразу). Мы должны попытаться проверить, что QuickTime Player завершил загрузку фильма, прежде чем мы скажем его экспортировать; Изучив полный список состояний загрузки, перечисленных в словаре, и предположив, что каждый фильм в конечном итоге оказывается в конечном состоянии или в состоянии ошибки, мы можем добавить это относительно легко.
set error_states to {load state unknown, load error}
set successful_states to {loaded, complete}
repeat until load state of first document is in (error_states & successful_states)
delay 0.1
end repeat
if (load state of first document is in successful_states) then
if (can export first document as iPhone) then
export first document to target_path as iPhone
else
error "Cannot export " & (source_file as string) & " in .m4v (iPhone) format."
end if
else
error "File is not in a successful load state: " & (load state of first document as string)
end if