8

我想使用AVFoundation在 osx 上显示视频。我想在运行时从原始数据初始化电影。根据此文档:https AVAsset ://developer.apple.com/library/mac/#technotes/tn2300/_index.html相当于QTKit 的 QTMovie. QTMovie具有movieWithData:error:从数据加载视频的功能,而我在AVAsset. 那么,是否有可能在AVFoundation中做同样的事情呢?

谢谢

4

3 回答 3

2
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];
        });
于 2014-12-26T13:18:26.540 回答
1

恐怕AVAsset从原始数据初始化实例的唯一可能性是将之前的数据保存为文件。AVAsset及其子类仅在其构造函数中使用 URL。

于 2013-06-07T11:12:54.850 回答
1

可以通过实现创建一个AVAssetfrom an 。NSDataAVAssetResourceLoaderDelegate

具体实现:

func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool

它必须:

  1. 正确填写 loadingRequest.contentInformationRequest。提示,使用loadingRequest.contentInformationRequest.contentType = AVFileType.mycontenttype.rawValue
  2. 正确响应数据
于 2019-05-18T16:28:33.323 回答