这里记录一些最近关于时间码学习到的一些细节。
为什么需要时间码
其实这个问题比较简单,存在多个设备的时候需要素材能在帧级别上面对齐,仅仅靠简单的时间戳(诸如文件创建时间)是很难获得精确的对齐的。而且设备上的计时器往往并不准确,隔一段时间相互之间的差异还会变化,所以不是个很好的方法。通常某些视频编辑软件也会提供一些通过声音进行对齐的算法,通过打板或者类似的方法录制下来的声音可以通过这个位置进行校正相对位置。这种方法存在一定的局限性:
比如打板都是在一些有固定脚本场景的情况下,流程化作业的步骤,对于相对比较随意拍摄的片段来说就很难,想起来就拍一段哪里有时间来打板。
多个音轨录制的时候可能并没有很明显重合的声音特征,导致对轨算法失败
那么我们能不能通过另一种方式获得同步的时间信息呢?这就涉及到时码器(timecode generator)这类设备,它们本质上都是非常精确的时钟,一旦同步之后就可以保证相当长时间不发生偏移,同时它们之间还可以进行多次自我同步,这就能保证在相当长一段时间里,完全不需要其他的方式进行对齐了。可是它的一个重要问题是,如何将它获得的同步时间信息传递到设备上呢?
metadata 最理想的方式自然是设备能够读取时码器给出的信号并且作为元数据存放在录制音频或者视频文件里,这样视频编辑程序读取该值即可
不少设备设计之初没有考虑时间码,但是它们可以录制声音,我们可以在录制的时候留一个通道同时录制一段通过编码的时间信息(这一半是将时间吗通过 BCD 转换到二进制,然后使用 AM 编码变成声音信息,听起来跟噪音一样),类似的视频编辑软件要能识别出来这个特殊的音轨将其包含的时间码解析出来
设备
我们一家三口人外出,录制的声音一般有三个通道,加上时间码我们一共需要 4 个通道,市面上比较合适的设备大约是 Zoom H4n(或者带 pro 的版本)与 Tascam DR-60D(带 MK2 可能更好),体积上前者可能还小一点,都可以通过 USB 充电宝之类的进行长期供电,其实也可以直接使用类似 eneloop 之类的镍锰电池,只是往往充电的时候要拔掉,设备掉电后又需要重新设置时间,所以宁可放电池 + 充电宝,这样平时靠电池保持时间,偶尔用一下也可以对付。但是长时间的任务通过一个大的充电宝两重备份。
说到充电宝还有一个细节也很重要,不少录机的耗电并不大,甚至可能达不到触发充电宝持续供电的下限(电流太小),所以挑选充电宝后需要做一下实验,看看录制的过程会不会自己断电,这个时间不长,可能在 10-30s 之间,录机上一般有指示告诉你用的是电池还是外接电源。克服这个问题可以有两个思路
使用一个周期触发电路(网上可以看到一些人自己设计的小电路图,能动手的话算是个不错的方案);比较暴力的就是接个电阻通过发热耗掉这部分电流。
使用一个类似 USB hub 的设备,通过一个充电宝 USB 口对多个设备供电,例如我发现 H4n 配上个 Meshtastic LoRa 的 modem 跟我的充电宝就挺好的。之前还有一个 Tascam DR-05 配 Tascam DR-10L 的组合也不错,单独用都不能让充电宝持续放电,但是合起来正好
最后还可以找不支持自动断电的充电宝,但是一般厂商都没有标注这个特性,所以只能口口相传了
如果我们使用诸如 Hollyland / DJI 的无线麦占用了两个声道,另外就需要一个类似 Deity TC-1 的时码器,它的 A-OUT 模式下,左声道录入的时间码,右声道是一个机载 mic,效果嘛,只能说一般。简单起见可以将 TC-1 作为携带录机(也就是我)人员的 mic。在四声道录入情况下,我们就可以获得需要结果了。
如果对 TC-1 的性能不满意可以考虑买它家更贵的 PR-2(无线录机),可以直接获得 TC-1 的时间码。当然便宜的话可以我自己用 DR-10L,事后通过对轨(跟 TC-1比较近)。
手头的设备支持时间码的其实还挺少的,大概这么几个
bmpcc 4k 果然是专业视频机,自带时间码接口,插上 TC-1 带的线(L-OUT)就好了
有音频接口的微单,比如 Panasonic S5II 或者 Sony ZV-E10,通过 3.5mm 获得 TC-1 的 A-OUT 音频
大疆最近发的 osmo pocket 3 跟 Action 4(或者更新的型号)都支持时间码,但是感觉这个实现是有一定的问题:它从菜单进入时间码选项之后会要求在 USB type C 插入一个时码器的输出,TC-1 需要一根特别的线。但是它获得时间码之后会要求拔掉。我的理解是相机自身可能内置了一个相对精确的时钟,它在一开始同步后会在一段时间内相对稳定,而且这些设备现在都有个“假关机”功能,我怀疑就跟这个时间码有一定的关系:即按下关机键后相机并没有真正的关机,而是处于低功耗的待机状态,这一方面是为了快速开机,另一方面很可能就是需要维护这个精确的时钟能够继续工作,再次开机之后还能保持精度。实际用下来感觉大疆这个内置的时钟可能还是没有那么准确的,也有可能是中间间隔时间长了真的关机了
最后说一个需要注意的东西,时码器需要设置拍摄的帧率,它要与所有的视频拍摄设备一致。特别需要注意的是,这个是要求很精确的,比如很多设备上写着 24fps 的帧率,但是实际上可能是 23.976fps(历史原因我这里不说了),所以一定要确认大家都是一个(比如我的绝大部分设备都是 23.976fps 而不是真正的 24fps)。
杂:
对于更高规格的(比如 60fps 或者 120fps)拍摄格式,不少时码器还不能很好的支持(据说没有相应的标准),所以一般使用倍率(60fps 使用 30fps),保证不会跳帧。
这里提一下这些专业录机使用 XLR 接口,跟无线麦合用的时候需要一根 双 XLR 公头转 3.5mm TRS 音频的转接线。
如果愿意买个 Tascam DR-701D 这种录机的话可以直接记录元数据,的确会更方便。但是它体积也大很多,贵也贵很多。
软件与编辑流程
录机获得 WAV 文件通常并不是四声道(比如获得两个 stereo WAV 文件),为了简化后续操作,写了个简单的 python 脚本将其合并成一个文件四声道。同时可以通过 flac 对其压缩。有些录机可能会切分文件,这里也可以进行合并。
这个过程中发现了几个奇葩的事情:
Davinci Resolve 只支持从视频文件的音轨里面对码,对纯音频文件居然不能自动对码,似乎有人提了这个 feature request 但是没人实现
Davinci Resolve 在打开一个相对较大的 flac 文件后需要渲染其波形图,这个时候切换时间线非常容易死掉,提了 bug 似乎没人修,在我的机器上基本上每次都会导致 Davinci Resolve 锁死自己,非常傻
Davinci Resolve 似乎只认识 BWF 这个格式里面存下来的元数据,flac 文件即便我写入一些元数据来表征时间码他似乎不会读出来
感觉 blackmagic 那个论坛呢作风也比较奇葩,拿这些问题想去看看有没有知情人士能分享一些细节,结果跑出来几个“专业人士”说你就该用合适的设备(但是看看价格你就明白那是给专业的人用的啊,我不需要那么贵的设备),影视行业都这么守旧吗,有个能用的就不想着怎么把成本降下来?
好吧,我这分享一下。其实有了 flac 可以很简单的运行个命令(ffmpeg)把音频和一个黑屏结合产生一个视频文件,我一个 600M 的 flac(四声道 30 分钟)转换之后音频细节完全不损失的情况下,文件增加了 1M。转换过程几乎是秒过,所以没有什么时间成本,批量处理的时候一个命令结束。Davinci Resolve 也很准确的获得了时间码,插入时间线的时候不要插入视频就行了。这个 flac2mp4.sh 拿走不谢了
#!/usr/bin/env bash
FILENAME=${1%.flac}
FRAMERATE=${2:-23.976}
ffmpeg7 -f lavfi -i color=size=32x18:rate=${FRAMERATE}:color=black \
-i "$1" -c:v libx264 -crf 10 -preset placebo -c:a copy -shortest \
"$FILENAME.mp4"
至于较长 flac 的波形图问题也很简单,可以直接将其分割成较小的片段,实验下来 30 分钟算是一个不错的折衷,如果录机默认就是分成 30 分钟的片段的话,就免了这部分操作了。
评分:分享到:
点击分享到 Facebook (在新窗口中打开)
点击以分享到 X(在新窗口中打开)
X
赞 正在加载……
相关