如何在不重新编码的情况下使用FFmpeg或其他工具修复损坏的AAC文件?
如何在不重新编码的情况下使用FFmpeg或其他工具修复损坏的AAC文件?
我有一个256Kbps的AAC文件,其中有一段大约1/20秒的损坏片段。我想在不重新编码(或者至少用最小侵入性的操作)的情况下修复这个损坏部分。
在Audacity里能看到这段损坏的“glitch”——波形会出现异常错乱的片段。
这段损坏发生在一段持续几秒的单音合成器音符期间,背景还有轻微的观众掌声,所以我能通过创意编辑在Audacity里修复它,但前提是必须先把文件转成无损格式,具体步骤如下:
- 裁剪掉损坏部分(共2290个采样点)
- 将损坏部分前后的轨道片段进行合并/交叉淡化,重叠部分设置为2120个采样点
- 操作后整个轨道时长会缩短4410个采样点(也就是1/10秒)
- 编辑后的文件播放时,音色连续顺畅,完全听不到glitch
- 为了保留原轨道的时长,我从修复区域附近截取了一段4410个采样点的片段,把它插入到修复位置进行复制补充
- 最终结果:既保留了原轨道的时长,播放时几乎察觉不到任何异常
但现在的问题是,我只有在无损格式下编辑才能达到这个效果,我想在原有损AAC文件上实现类似的修复,同时避免重新编码。我试过直接裁剪原文件里的损坏部分,然后用修复后的无损文件里的对应片段替换,但因为时间戳偏移的问题,根本没法精准匹配原文件里的片段位置。
之前用FFmpeg分割文件时,它总是会在最接近的时间戳位置分割,可能和我需要编辑的位置差100多个采样点,完全做不到精准的采样级操作。
所以我想问问有没有办法解决这个问题?比如能不能移除或修改时间戳,让我可以对有损文件进行采样级别的剪切/编辑?当然,任何其他可行的思路我也都愿意尝试。
备注:内容来源于stack exchange,提问作者U2Joshua




