Objective c 无法使用AVAssetExportSession修剪音频文件

Objective c 无法使用AVAssetExportSession修剪音频文件,objective-c,avfoundation,core-audio,avassetexportsession,Objective C,Avfoundation,Core Audio,Avassetexportsession,我正试图从我的iTunes库中获取一个文件,并生成一个剪辑/修剪版本。我遇到的问题是,我告诉它在特定的时间范围内进行修剪。它以正确的持续时间修剪,但开始时间不同 我正在使用中给出的导出会话方法 这个github项目再现了这个问题。它的设置是从10秒开始修剪,持续3秒。生成的是一个时间范围在0:12.1到0:15.1之间的剪辑 有没有办法解释为什么调整后的时间范围是错误的? 谢谢 您的代码本身没有问题 您遇到的问题是您从MP3开始这一事实的直接产物。它不会自动提供准确的持续时间和计时。你必须要他

我正试图从我的iTunes库中获取一个文件,并生成一个剪辑/修剪版本。我遇到的问题是,我告诉它在特定的时间范围内进行修剪。它以正确的持续时间修剪,但开始时间不同

我正在使用中给出的导出会话方法

这个github项目再现了这个问题。它的设置是从10秒开始修剪,持续3秒。生成的是一个时间范围在0:12.1到0:15.1之间的剪辑

有没有办法解释为什么调整后的时间范围是错误的?
谢谢

您的代码本身没有问题

您遇到的问题是您从MP3开始这一事实的直接产物。它不会自动提供准确的持续时间和计时。你必须要他们

你是说:

AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:self.sourceAudioURL 
    options:nil]; 
造成损害的是
nil
选项。相反,只需说:

AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:self.sourceAudioURL 
    options:@{AVURLAssetPreferPreciseDurationAndTimingKey:@YES}];

是的,那是你的宾果游戏。问题是测试文件从mp3转换为aac大约需要1.15秒。当我只对一小部分感兴趣时,处理整个文件似乎效率很低。我想我可以在选中时预处理该文件。谢谢,tho!对不起,我以前的回答完全是假的。看我修改过的答案。这比我想象的有趣得多,也简单得多。是的,这比我想象的要好得多。但是现在我在询问AVPlayer的当前时间时遇到了类似的问题。并不是所有情况下都返回一个精确的时间。有什么办法补救吗?我可能仍然需要将整个源音频转换为aac。因为这似乎有效-/