我想使用AVFoundation在 osx 上显示视频。我想在运行时从原始数据初始化电影。根据此文档:https AVAsset
://developer.apple.com/library/mac/#technotes/tn2300/_index.html相当于QTKit 的 QTMovie
. QTMovie
具有movieWithData:error:
从数据加载视频的功能,而我在AVAsset
. 那么,是否有可能在AVFoundation中做同样的事情呢?
谢谢
我想使用AVFoundation在 osx 上显示视频。我想在运行时从原始数据初始化电影。根据此文档:https AVAsset
://developer.apple.com/library/mac/#technotes/tn2300/_index.html相当于QTKit 的 QTMovie
. QTMovie
具有movieWithData:error:
从数据加载视频的功能,而我在AVAsset
. 那么,是否有可能在AVFoundation中做同样的事情呢?
谢谢
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];
});
恐怕AVAsset
从原始数据初始化实例的唯一可能性是将之前的数据保存为文件。AVAsset
及其子类仅在其构造函数中使用 URL。
可以通过实现创建一个AVAsset
from an 。NSData
AVAssetResourceLoaderDelegate
具体实现:
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
它必须:
loadingRequest.contentInformationRequest.contentType = AVFileType.mycontenttype.rawValue