如何将AVAsset转换为NSData或将其保存到文件pipe理器
我正在尝试使用AVAsset
来录制audio文件,然后第一次存储在NSFileManager
之后,然后将其转换为nsdata我调用API来存储它。
我成功创buildAVAsset
录音文件,并使用SCPlayer
第三方Class进行SCPlayer
。
现在的问题是,我不知道如何使用AVAsset
文件保存在文件pipe理器,然后调用API后,通过将其转换为NSData
发送它。
有什么办法将AVAsset
转换为NSData
?
请帮忙…
您可以执行以下操作:
- 使用
AVAssetExportSession
将您的AVAsset
对象导出到文件pathURL。 -
使用其
dataWithContentsOfURL
方法将其转换为NSData
。NSURL *fileURL = nil; __block NSData *assetData = nil; // asset is you AVAsset object AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality]; exportSession.outputURL = fileURL; // eg .mov type exportSession.outputFileType = AVFileTypeQuickTimeMovie; [exportSession exportAsynchronouslyWithCompletionHandler:^{ assetData = [NSData dataWithContentsOfURL:fileURL]; NSLog(@"AVAsset saved to NSData."); }];
-
不要忘了在做任何事情之后清理输出文件;)
Swift 3
let manager = PHImageManager.default() manager.requestAVAsset(forVideo: asset, options: nil, resultHandler: { (avasset, audio, info) in if let avassetURL = avasset as? AVURLAsset { guard let video = try? Data(contentsOf: avassetURL.url) else { return } videoData = video } })
你可以看看AVAssetExportSession
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality]; exporter.outputURL = exportUrl; [exporter exportAsynchronouslyWithCompletionHandler:^{ // here your file will be saved into file system at specified exportUrl }];
- 在iOS设备上找不到文件Qt Creator C ++ QStandardPaths :: standardLocations(QStandardPaths :: DownloadLo cation);
- 如何使用UIActivityItemProvider设置邮件主题
- FB.Logout()在UnitySDK中不工作
- 在iOS中validation电话号码
- 自定义setter方法的委托被称为无限次
- 切换UITabBarController中的选项卡后,UIRefreshControl卡住了
- 如何在iOS Objective-C中实现php的openssl_encrypt()方法?
- 从CSV数据文件创build一个自定义格式的字典数组
- 如何将一个工具栏添加到故事板中的UITableViewController的底部?