【脚本】导入AAF文件

严格来说这不是一个原创的脚本,属于站在大佬的肩膀上做的二次开发。之前有人做了一个可以读取AAF文件并导入reaper的脚本

项目地址
skysphr / Reaper AAF · GitLab

但这个脚本因为是python写的,普通用户不一定有装python不说,装了还需要配置环境,对新手不太友好。所以我进行了一些改写,让大部分用户(Win平台)都能直接使用而不需要额外安装任何内容。

原来的脚本主要做了两件事:读取和解析AAF文件内容,根据读取到的内容导入到reaper内。
我做的事情是把他们拆开,导入到reaper的部分转写成lua格式,这样所有用户都能运行。读取和解析部分保留py格式,然后封装成单独的exe文件(抱歉其他平台的用户,我不知道怎么封装你们平台的可执行文件),这样即可完全脱离python环境而运行。

使用方式
如上所说,脚本分成两部分,一个lua文件,一个exe文件,lua文件按照惯例处理加载即可,exe文件需要放在安装路径下的userplugins文件夹里,名字请保持原始的不要改动。然后运行lua脚本,按提示选择要导入的AAF,等待加载即可

注意
以Nuendo来举例,导出AAF有两种方式,《所有媒体文件嵌入到一个AAF文件》和《媒体文件和AAF文件分开存放》,请必须使用第二种。第一种方式现在原版脚本支持得不好,我自然也没法解决。所以当前请先使用媒体文件分开存放的方式来导出

相比原版,我改进了一个地方,导入的时候采用相对零点的方式,并且是以光标所在位置作为相对零点。比如说,AAF文件里一个音频块在5秒的位置,然后你导入前,把光标放在reaper工程里10秒的位置,那么导入后,这个音频块将会出现在工程里的15秒的位置,如此类推

重要说明
原版的脚本能获取的信息很有限,列举如下:

轨道信息包含:

  • 名字
  • Pan
  • 音量
  • Pan包络
  • 音量包络

音频块信息包含:

  • 文件路径
  • 内容偏移位置
  • 位置
  • 长度
  • 音量
  • 淡入淡出

标记信息包含:

  • 名字
  • 位置
  • 颜色

我没时间去了解是本来AAF只支持这么一点信息,还是脚本作者偷懒只选取了这部分。反正原来脚本能读取的信息,我全部都会导入到reaper里。不在上面列举出来的部分就不用问为什么没有导入进来了。

然后AAF是一个通用的格式,但是各家DAW/非编软件对他的导出处理都是各不一样。比如我测试用的Nuendo,他导出的轨道信息就没有音量和Pan的,然后也不支持导出标记信息的,那么虽然脚本支持,但Nuendo从一开始就没有给出来,那这些信息也没法导入到reaper里

最后说一下,支持导出AAF的有Nuendo、Cubase12、PT、Adobe Premiere、Final Cut Pro、达芬奇等等,可能还有别的我不知道。但我手上只有Nuendo可供测试,所以可能别的平台导出的AAF会产生新的问题也说不定,所以请有兴趣的人用你手上常用的软件去帮忙测试一下,有问题请回帖反馈

Lua脚本
DSY_导入AAF.lua (5.3 KB)

EXE文件

链接: 百度网盘 请输入提取码 提取码: e3s7
因为封装的文件太大,只能放在百度云上,请自行下载

常见出错信息及解决方法

attempt to index a nil value (local 'source')

出现这个错误的原因是,脚本从aaf中获取到的媒体文件路径无效

解决方法:打开记事本或任意文本编辑软件,进去按ctrl+v,会得到一大串信息,以上面这个aaf为例,留意最开头的几项内容:

track:
item:source=|offset=0.0|pos=0|len=31.44808333333333
track:音频 1_L|pan=-1.0
item:source=C:\Users\xxpc\Desktop\aaf\AAF 媒体\3d76ff7d-bebe-f8d8-391c-b7a60000007c.wav|offset=2.4607916666666667|pos=0|len=6.5065|fadein=1.001|fadeout=1.001|fadeintype=1|fadeouttype=1|volume=0.5011872

留意 item:source=C:\Users... 这一项,代表了输出aaf文件时所记录的媒体文件。然后根据这个路径原样建立一个一模一样的文件夹,把所有媒体文件拷进去,接着再导入就可以了

Donation

毕竟用爱发电不易,如果我的脚本给你带来了便利,不妨buy me a coffee

如果有需要订制个人化的脚本,请添加以下QQ联系:86989558

我的Reapack源

可以在Reapack里添加这个地址来获取到更多我共享过的脚本

7 个赞

有哪些途径可以下载到全信息的 aaf 示例文件吗?

很怀疑有没有“全信息的aaf”这样的东西存在,他本身也只是一个标准。然后各家怎么执行执行多少就是自己自由了

牛逼呀,支持挪大!

我这里使用的时候会在选择完aaf文件之后跳报错attempt to call a nil value,请问还有救嘛。。

你得把aaf传上来,和至少截个完整的出错信息


链接: 百度网盘 请输入提取码 提取码: 6auh
–来自百度网盘超级会员v8的分享
这个aaf是使用pr导出的一个纯测试用的aaf,aaf有点大传不上来我放度盘了。
报错信息如图所示,辛苦N大了。

这里有几个问题,要分开解释。首先这个出错信息是因为你没装sws。然后运行后确实是能导入的,但文件全部丢了,所以都离线了。因为解释出来的路径全部都在你的mac上,这个不知道是mac的原因还是pr的原因还是他原脚本的原因

用nuendo导入,也是提醒这个
image
部分丢失部分能导

好的非常感谢!!因为mac端原脚本没成功临时切到win上忘了sws这茬,稍晚我再试试。

无法导入,为什么呢?
uTools_1660049614215

请把你的aaf文件传上来吧。比起这个,你这一堆乱码的才是麻烦的问题

大佬你好,我按照正常的方法步骤装好后,导入AAF失败显示了这个,请问怎么解决呀?谢谢!
屏幕截图 2023-05-22 181502

我和你一模一样的问题,请问你解决了吗?

我的回复跟回复楼上的一样,发aaf上来

那我私发一下帮我看看吧,谢谢您内~

大佬你好!我导入之后也出现了这个问题,pr导出的aaf
image
sws也是装上的,能请大佬帮忙看看嘛!辛苦了!!
aaf链接如下:
链接:百度网盘 请输入提取码
提取码:dlvj
--来自百度网盘超级会员V4的分享

看了一下似乎是pr用了一个不太聪明的方式,把路径都用绝对路径的方式记录下来了,只能根据他原来的路径放置你的音频文件了

C:\Users\xxpc\Desktop\aaf\AAF 媒体\

把所有音频文件拷到这个路径,再导入一次应该就正常了

现在再看回前面的报错信息,基本都是这一条

attempt to index a nil value (local 'source')

出现这个错误的原因是,脚本从aaf中获取到的媒体文件路径无效,参考楼上的问题,就是导出aaf软件记录路径信息的时候采用绝对路径,导致aaf文件在别的电脑上导入会丢文件

解决方法:打开记事本或任意文本编辑软件,进去按ctrl+v,会得到一大串信息,以上面这个aaf为例,留意最开头的几项内容:

track:
item:source=|offset=0.0|pos=0|len=31.44808333333333
track:音频 1_L|pan=-1.0
item:source=C:\Users\xxpc\Desktop\aaf\AAF 媒体\3d76ff7d-bebe-f8d8-391c-b7a60000007c.wav|offset=2.4607916666666667|pos=0|len=6.5065|fadein=1.001|fadeout=1.001|fadeintype=1|fadeouttype=1|volume=0.5011872

留意 item:source=C:\Users... 这一项,代表了输出aaf文件时所记录的媒体文件。然后根据这个路径原样建立一个一模一样的文件夹,把所有媒体文件拷进去,接着再导入就可以了

感谢大佬!!!解决了! :heartbeat: :heartbeat: