Cocoa:原始数据(即NSData)中的AVAsset
我想使用AVFoundation在osx上显示视频。我想在运行时从原始数据初始化电影。根据本文档:Cocoa:原始数据(即NSData)中的AVAsset,cocoa,avfoundation,qtkit,Cocoa,Avfoundation,Qtkit,我想使用AVFoundation在osx上显示视频。我想在运行时从原始数据初始化电影。根据本文档:AVAsset相当于QTKit的QTMovieQTMovie具有从数据加载视频的功能movieWithData:error:,而我在AVAsset中找不到任何类似的功能。那么,在AVFoundation中也可以做同样的事情吗 谢谢恐怕从原始数据初始化AVAsset实例的唯一可能性是将之前的数据保存为文件AVAsset及其子类仅在其构造函数中使用URL。可以通过AVAssetResourceLoade
AVAsset
相当于QTKit的QTMovie
QTMovie
具有从数据加载视频的功能movieWithData:error:
,而我在AVAsset
中找不到任何类似的功能。那么,在AVFoundation中也可以做同样的事情吗
谢谢恐怕从原始数据初始化
AVAsset
实例的唯一可能性是将之前的数据保存为文件AVAsset
及其子类仅在其构造函数中使用URL。可以通过AVAssetResourceLoaderDelegate
实现从NSData
创建AVAsset
NSString *tempFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tmp.mp3"];
NSFileManager *manager = [NSFileManager defaultManager];
[manager createFileAtPath:tempFilePath contents:mp3Data attributes:nil];
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:tempFilePath] options:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[manager removeItemAtPath:tempFilePath error:nil];
});
具体实施:
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
它必须:
loadingRequest.contentInformationRequest.contentType=AVFileType.mycontenttype.rawValue
这并没有回答问题,它只是显示了如何将
NSData
写入临时文件,并由此初始化AVAsset
。如何操作?如何找到您的示例代码?谢谢