Ios AVAssetExportSession no audio(iPhone),可在iPad上使用

Ios AVAssetExportSession no audio(iPhone),可在iPad上使用,ios,iphone,ios4,avfoundation,Ios,Iphone,Ios4,Avfoundation,我们正在尝试使用音频(.mov)拍摄现有视频,并制作一个更友好的电子邮件版本。看起来很简单,下面的代码正是我们需要的。。。差不多 在iPad2(4.3.3)上,它始终在调试和发布版本中工作。在iPhone4(4.3.3)或第四代iPodtouch上没有音频。有时,由于没有明显的相关性,它将在iPhone上开始工作。删除应用程序,重新生成/安装,它将不再工作 AVURLAsset* asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath

我们正在尝试使用音频(.mov)拍摄现有视频,并制作一个更友好的电子邮件版本。看起来很简单,下面的代码正是我们需要的。。。差不多

在iPad2(4.3.3)上,它始终在调试和发布版本中工作。在iPhone4(4.3.3)或第四代iPodtouch上没有音频。有时,由于没有明显的相关性,它将在iPhone上开始工作。删除应用程序,重新生成/安装,它将不再工作

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:sourcePath] options:nil];
session = [[AVAssetExportSession alloc] initWithAsset:asset
                                       presetName:AVAssetExportPresetLowQuality];
session.outputURL = [NSURL fileURLWithPath:destPath];
session.outputFileType = AVFileTypeQuickTimeMovie;
session.shouldOptimizeForNetworkUse = YES;
[session exportAsynchronouslyWithCompletionHandler:^{
    [self performSelectorOnMainThread:@selector(conversionFinished)
                           withObject:nil
                        waitUntilDone:NO]; }];

您是否也在播放电影,例如在MPMoviePlayer中?在玩游戏或使用其他具有相同URL的初始化资产时,我偶尔会遇到一些导出怪癖。

我已经用两种方法对其进行了测试,没有区别。我们使用AVAssetWriter创建电影,并对其调用[assetWriterInput markAsFinished]和[assetWriter finishWriting]。它可以在设备上正常播放(或者在xfer之后在桌面上播放)。事实上,这是一个很好的线索!如果我在录制后强制退出应用程序,然后进入创建较小的视频,它会正常工作。现在来找出原因。另一个想法是记忆。有内存警告吗?有一次我收到了记忆警告,丢失了一些曲目。谢谢你的提示,彼得。我检查了代码以确保所有其他资产都已释放/完成,现在它似乎已经稳定下来。仍然需要输入一个内存警告生成器,看看这是否导致了问题。我有一个类似的问题,有点像这个问题。问题似乎来自于在
AVPlayer
中播放相关资产,但我无法弄清确切的情况。