Как преобразовать данные в AVAsset? - PullRequest
0 голосов
/ 25 апреля 2018

Есть ли способ конвертировать данные в AVAsset / AVURLAsset или лучше AVPlayerItem?Я нашел ответ, который преобразует данные в PHAsset и требует сначала сохранить их на столе.Есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы можете сделать следующее: 1. Используйте AVAssetExportSession для экспорта объекта AVAsset в URL-адрес пути к файлу. 2. Преобразуйте его в 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.");
}];

Не забудьте очистить выходной файл после выполнения всего, что вам нужно с ним делать;)

0 голосов
/ 25 апреля 2018

Мне удалось это сделать, вот вы для всех, кому интересно.

extension Data {
    func getAVAsset() -> AVAsset {
        let directory = NSTemporaryDirectory()
        let fileName = "\(NSUUID().uuidString).mov"
        let fullURL = NSURL.fileURL(withPathComponents: [directory, fileName])
        try! self.write(to: fullURL!)
        let asset = AVAsset(url: fullURL!)
        return asset
    }
}
...