1

Я установил Perian-аддон для Quicktime, чтобы он мог открывать файлы .flv, а затем сохранять их как .m4v или .mov. Я пытаюсь сделать Applescript для автоматического преобразования из .flv в .m4v, используя этот учебник и разделывая их пример файла applecript, который обычно конвертирует файлы ChemDraw (.cdx, .cml, .mol) в .tiff, чтобы он вместо этого использует Quicktime для сохранения файлов .flv как .m4v. Однако, когда я пытаюсь использовать его, я получаю сообщение об ошибке «QuickTime Player получил ошибку: документ 1 не понимает сообщение сохранения». Мое сохраненное сообщение в данный момент:

сохранить первый документ в target_path как ".m4v"

который выглядит как инструкции словаря QuickTime:

спецификатор сохранения : документ (ы) или окно (окна) для сохранения.

[ как сохраняемый формат файла]: используемый формат файла.

Я также попробовал "m4v", без точки, и все еще получаю ошибку.
Неправильно ли выбрано направление сохранения или, возможно, ошибка при попытке использовать Quicktime вместо оригинального ChemDraw? Я пытался изменить ссылки на .cdx, .cml, .mol, .tiff и ChemDraw на .flv, .m4v и QuickTime соответственно, но, может быть, это сложнее?

4 ответа4

2

Этот ответ приветствуется, потому что ваши комментарии, кажется, указывают на то, что ваш основной интерес - сам 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
1

Вы всегда можете прибегнуть к UI-скриптингу. Принимая ответ @ Бенни за основу, вот что работает (несколько):

set infile to choose file with prompt "select file:"
set outfile to "filename"

try
    tell application "QuickTime Player"
        activate
        close every window
        open infile
        delay 2 # wait for the document to open
        tell application "System Events"
            keystroke "s" using {command down, shift down} # press Cmd-Shift-S
            delay 1 # wait for the sheet
            keystroke outfile # the filename
            key code 36 # press enter
        end tell
        close document 1 saving no
    end tell
end try

Если вы хотите просто сохранить что-то в TextEdit согласно вашему комментарию, вы можете использовать следующее в качестве основы:

set infile to choose file with prompt "select file:"
set outfile to choose file name with prompt "Save altered file here:"

tell application "TextEdit"
    activate
    open infile
    tell application "System Events" # just some keystrokes for edits
        keystroke "AppleScript was here!"
        key code 36 # press enter
    end tell
    tell document 1 to save in outfile
    close every document saving no
end tell

Если вы хотите сохранить документ как файл определенного типа, кажется, есть проблема с параметром as : я не смог сохранить его в одном из выбираемых форматов. Вы можете обойти проблему, указав желаемое расширение файла, например, filename.html или filename.odt для форматов веб-страниц и OpenDocument соответственно.

0

Я не знаю, работает ли это, но попробуйте,

set infile to choose file with prompt "select file:"
set outfile to choose file name with prompt "Save altered file here:"

try
tell application "QuickTime Player"
activate
close every window
open infile
set dimensions of document 1 to {720, 400}
tell document 1
save self contained file outfile
end tell
-- save document 1 given «class dfil»:file outfile, «class savk»:self contained
close document 1 saving no
end tell
end try

Посмотри, работает ли это.

Если это не сработает, посмотрите эту страницу. http://discussions.apple.com/thread.jspa?threadID=1055811

0

Описанный здесь сценарий Applescript может быть полезен: QuickTime Export Droplet.

Хотя это не отвечает на ваш вопрос, вот два коммерческих продукта, которые кажутся решением, с доступными испытаниями:

Wondershare iPad Video Converter для Mac ($ 25)
Видео Конвертер для Mac ($ 39)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .