如何将 AVAsset 转换为 NSData 或将其保存到文件管理器
How to convert AVAsset to NSData or save it to file manager
我正在尝试使用 AVAsset
来录制音频文件,然后首先将其存储在 NSFileManager
上,然后将其转换为 nsdata 我调用 API 到存储它。
我成功创建 AVAsset
录音文件并使用第三方 Class 播放它,即 SCPlayer
。
现在的问题是我不知道如何使用 AVAsset
文件将其保存在文件管理器中,然后在调用 API 后通过将其转换为 NSData
来发送它.
有什么方法可以将AVAsset
转换成NSData
???
请帮忙...
你可以看看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
}];
您可以执行以下操作:
- 使用
AVAssetExportSession
将您的 AVAsset
对象导出到文件
路径 URL.
使用其 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;
// e.g .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
}
})
我正在尝试使用 AVAsset
来录制音频文件,然后首先将其存储在 NSFileManager
上,然后将其转换为 nsdata 我调用 API 到存储它。
我成功创建 AVAsset
录音文件并使用第三方 Class 播放它,即 SCPlayer
。
现在的问题是我不知道如何使用 AVAsset
文件将其保存在文件管理器中,然后在调用 API 后通过将其转换为 NSData
来发送它.
有什么方法可以将AVAsset
转换成NSData
???
请帮忙...
你可以看看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
}];
您可以执行以下操作:
- 使用
AVAssetExportSession
将您的AVAsset
对象导出到文件 路径 URL. 使用其
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; // e.g .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
}
})