0

我在我的应用程序中使用 AVAsset 并遇到了下一个问题。当我写这样的东西时:

AVAsset *audioAsset = [AVAsset assetWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Hello.mp3", [[NSBundle mainBundle] resourcePath]]]];

它的工作正常。但是,当我尝试从应用程序的沙箱中的 tmp 目录中获取新记录的文件时,如下所示:

AVAsset *audioAsset2 = [AVAsset assetWithURL:[NSURL URLWithString:[NSTemporaryDirectory() stringByAppendingPathComponent:[@"speechRecord" stringByAppendingPathExtension:@"m4a"]]]];

它也不起作用。即使我尝试将视频文件从沙盒添加到资产 - 结果是相同的。我什至尝试过使用AVURLAsset,但资产也总是空的。我需要它在它们之间混合两个音频文件,然后将其与录制的视频合并。如果我可以在没有 AVAssets 的情况下做到这一点并且有另一种方法,如果你告诉我,我将不胜感激。或者可能还有其他功能?

4

1 回答 1

2

您使用选择器为 audioAsset2 创建第二个 URL URLWithString。您的第一个资产正确加载,因为您使用了fileURLWithPath选择器。

如果要在给定的 URL 加载文件,请始终使用fileURLWithPath选择器创建 NSURL 对象。

所以简单地尝试:

AVAsset *audioAsset2 = [AVAsset assetWithURL:[NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:[@"speechRecord" stringByAppendingPathExtension:@"m4a"]]]];
于 2014-03-27T20:07:55.357 回答