我可以AVAsset
从NSData
.. 初始化吗?我知道我可以AVData
使用如下函数从 url初始化
[[AVURLAsset alloc] initWithURL:url options:nil];
任何人都可以建议我一种类似的AVAsset
直接分配方式NSData
吗?
我可以AVAsset
从NSData
.. 初始化吗?我知道我可以AVData
使用如下函数从 url初始化
[[AVURLAsset alloc] initWithURL:url options:nil];
任何人都可以建议我一种类似的AVAsset
直接分配方式NSData
吗?
据我所知,没有。AVAsset
表示设备(内部)媒体库中的项目,因此使用自定义数据对其进行初始化没有多大意义。也许值得一提的是,这个类没有用于NSData
.
我怀疑如果需要,您很可能需要重新设计代码逻辑。
接受的答案不正确。
可以通过实现创建一个AVAsset
from an 。NSData
AVAssetResourceLoaderDelegate
具体实现:
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
它必须:
loadingRequest.contentInformationRequest.contentType = AVFileType.mycontenttype.rawValue
稍后我会发布一些代码,但你可以谷歌“AVAssetResourceLoaderDelegate github”获取示例
这是我解决它的方式的替代解决方案。间接地,我首先通过将 NSData 写入/保存到本地目录进行初始化,然后从该文件路径初始化 AVAsset。
AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:locationUrl]];
您可以尝试先将 nsdata 写入文件路径,然后从该路径初始化到 AVAsset。
[videoData writeToFile: locationUrl atomically:YES];
只需确保文件位置 URL 正确,并测试确认数据是否正在保存到该文件路径,如果在加载时发生任何错误。最后,如果您不再需要它们,请不要忘记清理您的文件。