私はAVAsset
を使用してオーディオファイルを録音し、最初にNSFileManager
に保存した後、それをnsdataに変換してAPIを呼び出して保存します。
AVAsset
記録ファイルを作成し、SCPlayer
であるサードパーティのクラスを使用して再生することに成功しました。
今問題は、ファイルマネージャに保存するためにAVAsset
ファイルを使用する方法がわからないことです。次にAPIを呼び出した後、NSData
に変換して送信します。
AVAsset
をNSData
に変換する方法はありますか???
助けてください...
次のことができます。
AVAssetExportSession
を使用して、AVAsset
オブジェクトをファイルパスURLにエクスポートします。NSData
メソッドを使用してdataWithContentsOfURL
に変換します。
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.");
}];
必要なことをすべて実行した後は、出力ファイルをクリーンアップすることを忘れないでください;)
スウィフト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
}];