3

我可以AVAssetNSData.. 初始化吗?我知道我可以AVData使用如下函数从 url初始化

 [[AVURLAsset alloc] initWithURL:url options:nil];

任何人都可以建议我一种类似的AVAsset直接分配方式NSData吗?

4

3 回答 3

3

据我所知,没有。AVAsset表示设备(内部)媒体库中的项目,因此使用自定义数据对其进行初始化没有多大意义。也许值得一提的是,这个类没有用于NSData.

我怀疑如果需要,您很可能需要重新设计代码逻辑。

于 2012-12-06T10:57:43.197 回答
1

接受的答案不正确。

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

具体实现:

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

它必须:

  1. 正确填写 loadingRequest.contentInformationRequest。提示,使用loadingRequest.contentInformationRequest.contentType = AVFileType.mycontenttype.rawValue
  2. 正确响应数据

稍后我会发布一些代码,但你可以谷歌“AVAssetResourceLoaderDelegate github”获取示例

于 2019-05-18T16:27:09.500 回答
0

这是我解决它的方式的替代解决方案。间接地,我首先通过将 NSData 写入/保存到本地目录进行初始化,然后从该文件路径初始化 AVAsset。

AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:locationUrl]];

您可以尝试先将 nsdata 写入文件路径,然后从该路径初始化到 AVAsset。

[videoData writeToFile: locationUrl atomically:YES];

只需确保文件位置 URL 正确,并测试确认数据是否正在保存到该文件路径,如果在加载时发生任何错误。最后,如果您不再需要它们,请不要忘记清理您的文件。

于 2020-01-19T06:27:06.603 回答