无法使用 AVAssetExportSession 修剪音频文件
Posted
技术标签:
【中文标题】无法使用 AVAssetExportSession 修剪音频文件【英文标题】:Unable to trim an audio file with AVAssetExportSession 【发布时间】:2014-12-21 18:00:06 【问题描述】:我正在尝试从我的 iTunes 资料库中获取一个文件并生成它的剪辑/修剪版本。我遇到的问题是我告诉它在特定的时间范围内修剪。它以正确的持续时间进行修剪,但开始时间不同。
我正在使用Trim audio with ios中给出的导出会话方法。
这个 github 项目重现了这个问题。它设置为从 10 秒开始修剪,持续 3 秒。生成的是一个时间范围在 0:12.1 到 0:15.1 左右的剪辑。
https://github.com/nickbolton/AVAssetExportSessionDebug.git
关于为什么修剪的时间范围是错误的任何想法? 谢谢!
【问题讨论】:
【参考方案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 秒。当我只对一小部分感兴趣时,必须处理整个文件似乎效率很低。我想我可以在选择时预处理文件。谢谢! 对不起,我之前的回答完全是假的。请参阅我修改后的答案。事实证明,这比我想象的更有趣,也更简单。 是的,这样好多了。但是现在我在询问当前时间时遇到了与 AVPlayer 类似的问题。在所有情况下,它都不会返回精确的时间。任何想法如何补救?我可能仍然需要将整个源音频转换为 aac。因为这似乎有效.. :-/以上是关于无法使用 AVAssetExportSession 修剪音频文件的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 AVAssetExportSession 修剪音频文件
AVAssetExportSession 无法创建文件错误 -12115
使用 AVAssetExportSession 全屏导出视频
AVAssetExportSession AVFoundationErrorDomain Code -11800 操作无法完成,NSOSStatusErrorDomain Code=-12780 &q