有没有办法用AppleScript读取Quicktime电影的时间码轨道

时间:2009-07-14 03:33:44

标签: applescript 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

我可以获得时间码曲目,曲目的属性是:

  

{是音频变速率:是的,是视频   灰度:false,音频样本大小:0,   类:音轨,音频采样率:0.0,   声音平衡:0,preload:false,   流比特率:-1.0,   持续时间:960300,语言:“英语”,   音频通道数:0,图层:0,   内容:缺失值,低音增益:0,   开始时间:0,数据格式:“时间码”,   高音增益:0,音频   特点:假,音量:0,   掩码:缺失值,视频深度:0,   位置:{0,0},id:4,高   质量:假,去隔行   fields:false,href:“”,自然   维度:{0,0},单个字段:false,   kind:“Timecode”,索引:4,数据   尺寸:38412,视觉   特征:虚假,数据率:100,   从不清除:虚假,透明:49,   chapterlist:{},name:“Timecode Track”,   alternate:{},操作颜色:{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}}}

其中没有一个与时间码有任何关系。请注意,contents属性是“缺失值”

如果我尝试获取电影的当前时间,则返回0,即使时间码不是从0开始。

我正在考虑到目前为止我在网上发现的事情,这是不可能的。请证明我错了

TIA -stib

2 个答案:

答案 0 :(得分:2)

我找到了解决方法。有一个名为timecodereader的开源命令行应用程序here

现在它需要一点点黑客攻击,在timecodereader.m的第152行,您需要将输出从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"

它返回一个带有第一帧时间码的字符串。

答案 1 :(得分: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