Есть ли способ прочитать дорожку временного кода фильма QuickTime с AppleScript - PullRequest
3 голосов
/ 14 июля 2009

Я хочу извлечь тайм-код из быстрого фильма в Applescript.

Используя этот скрипт

tell application "QuickTime Player"
    set themovie to open thefile
    set thetracks to tracks of document 1
    repeat with thetrack in thetracks
        if the kind of thetrack is "Timecode" then
            get the properties of thetrack
        end if
    end repeat
end tell

Я могу получить трек с временным кодом, свойства трека:

{переменная скорость звука: правда, видео серая шкала: ложь, размер аудиосэмпла: 0, класс: дорожка, частота дискретизации аудио: 0.0, звуковой баланс: 0, предварительная нагрузка: ложь, битрейт потоковой передачи: -1,0, продолжительность: 960300, язык: "английский", количество аудиоканалов: 0, уровень: 0, содержание: пропущенное значение, усиление басов: 0, время начала: 0, формат данных: «Timecode», усиление высоких частот: 0, аудио характеристика: ложь, громкость звука: 0, маска: пропущенное значение, глубина видео: 0, позиция: {0, 0}, id: 4, высокий качество: ложь, деинтерлейсинг поля: false, href: "", натуральный размеры: {0, 0}, одно поле: ложь, вид: "Таймкод", индекс: 4, данные размер: 38412, визуальный характеристика: ложь, скорость передачи данных: 100, никогда не очищать: ложь, прозрачность: 49, список разделов: {}, название: «Track Time Track», альтернативный: {}, цвет операции: {32768, 32768, 32768}, включено: true, тип: "tmcd", качество потоковой передачи: -1.0, режим передачи: режим передачи неизвестен, размеры: {0, 0}, ток матрица: {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}}

ни один из них не имеет отношения к временному коду. Обратите внимание, что свойство содержимого имеет значение «пропущенное значение»

Если я пытаюсь получить текущее время фильма, он возвращает 0, даже если временной код не начинается с 0.

Я думаю о том, что нашел в сети, что это невозможно. Пожалуйста, докажите, что я не прав

ТИА -stib

Ответы [ 2 ]

2 голосов
/ 15 июля 2009

Я нашел обходной путь. Существует приложение с открытым исходным кодом, приложение командной строки под названием timecodereader, доступное здесь

Теперь это требует небольшого взлома, в строке 152 timecodereader.m вам нужно изменить вывод с stderr на stdout, чтобы appleScript мог прочитать результат. Вот так:

fprintf(stderr,"%s\n", [timecodeString fileSystemRepresentation]);

до

fprintf(stdout,"%s\n", [timecodeString fileSystemRepresentation]);

как только вы его построите и поместите результат в путь к исполняемому файлу, вы можете просто использовать

set theStartTC to do shell script "timecodereader /Posix/Path/To/My/Movie.mov"

возвращает строку с первым кадром временного кода.

0 голосов
/ 08 октября 2009

Вы можете использовать название трека вместо вида:

on open myfiles
 repeat with thefile in myfiles

  tell application "QuickTime Player"
   set themovie to open thefile
   set thetracks to tracks of document 1
   repeat with thetrack in thetracks
    if the name of thetrack is "Closed Caption Track" then
     set thetrack's enabled to false

    end if
   end repeat
  end tell
 end repeat
end open
...