大鱼自制索尼XVAC素材时间码修复改工具(25.6.3修复版)

已更新修复 支持Intel Mac电脑 感谢抖音网友 @格蚤(zao) 的反馈 感谢阿伟找到问题根源排除bug

2024.9.4更新 增加拖放区突出显示 方便拖放文件 增加另存为勾选框 增加调试信息显示窗口方便排查错误

2024.9.12更新 修正依赖库位置 保证所有设备都能正确调用依赖库

2025.5.7使用Swift重新编写代码,运行速度更快

2025.6.3 由于FFMPEG的封装bug有小概率导致画面撕裂 花屏 损坏素材,所以放弃了ffmpeg,使用了苹果原生的AVFoundation来进行重新封装,请各位务必删除旧版下载2.1新版本

原理是暴力修改素材开始时间码为00:00:00:00,让FCPX和达芬奇剪映对素材有统一开始时间码。注意,本软件只是修改元数据后重新封装,不涉及转码,不会对视频画质产生影响

界面非常简洁 使用也很简单 手动选择素材或者将素材文件夹拖放到界面中 就自动完成处理 整个过程不涉及转码 所以非常快 也不破坏文件结构 实测修改FCPX正在编辑的素材都不会有任何影响

本身是为自己开发的 自己怎么方便怎么来 其他人不懂用法 胡乱操作 搞烂了工程资源库 本人概不负责

以下是开发手记:

索尼微单的视频真正的时间码位于数据流轨道中,不在音视频流中,所以直接将素材从访达中拖入FCPX是无法读取到真正的时间码,从而导致索尼素材在FCPX中显示开始时间码为00:00:00:00。但是呢,很鸡巴扯淡的是,如果你开着FCPX插入索尼相机的存储卡,会自动弹出导入界面,如果你从那里面导入,FCPX会触发重新封装的进程,将位于数据流中的时间码写入到音视频流中,从而就会获取到真正的时间码,这时候输出FCPXML往达芬奇导就不会出现离线bug了。

在最开始的尝试中,我用了ffprobe解析到了索尼素材的真正时间码,尝试用ffmpeg重新封装,但是索尼微单MP4视频是以B帧开始的,不像常规相机厂商以I帧开始,这就导致FFMPEG在复制视频流时,无法同步视频前几帧的B帧,会导致前几帧黑掉。也会触发帧同步bug,小概率导致画面抽搐和撕裂。解决方法就是让ffmpeg重新编码前几帧,有点麻烦所以放弃

又尝试用AVFoundation搞了很久,发现它也只能把时间码写入数据流,并不能在不编码视频流的情况下在视频流插入时间码,这也是很扯淡的事情,我甚至动用AVMutableComposition尝试拆分封装,插入时间码再重新封装,依然以失败告终,所以最终的方案是,使用AVFoundation直接把时间码全部去掉,让达芬奇和FCPX都认为素材是00开始的,就不会出现时间码不同步的bug了。同时没有改动音视频流不涉及转码,所以速度也挺快,但是AVFoundation不支持多线程,所以没有最开始的ffmpeg版本快了。

2 评论

发表回复

大鱼先森粉丝福利

立即查看 了解详情