2009-07-14 3 views
3

Я хочу извлечь временный код из видеоролика Quicktime в Applescript.Есть ли способ прочитать трассировку timecode фильма Quicktime с 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, high качество: false, deinterlace поля: false, href: "", natural Размеры: {0, 0 }, одно поле: false, вид: «Timecode», индекс: 4, данные размер: 38412, визуальный характеристика: false, скорость передачи данных: 100, никогда не чистить: false, прозрачность: 49, chapterlist: {} , name: «Timecode Track», alternate: {}, цвет операции: {3 2768, 32768, 32768}, разрешено: true, Тип: «tmcd», качество потоковой передачи: -1,0, Режим передачи: неизвестен, Размеры: {0, 0}, текущий matrix: {{1.0, 0,0, 0,0}, {0,0, 1,0, 0,0 }, {0,0, 0,0, 1,0}}}

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

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

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

ТИА -stib

ответ

2

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

Теперь она требует немного взлома, на линии 152 timecodereader.m вам нужно изменить выход из STDERR на стандартный вывод, так что 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" 

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

+1

Вы могли бы просто перенаправить поток ошибок. Поместите '2> & 1' в конец командной строки оболочки, чтобы перенаправить stderr, чтобы идти туда, куда идет stdout. –

+0

ах, конечно! благодаря! – stib

0

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

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 
+0

Я могу получить дорожку в порядке, используя вид или имя, просто я не могу получить доступ к тайм-коду внутри этого трека. – stib

Смежные вопросы