AVAssetから初期化できますか..次のような関数を使用してURLからNSData初期化できることを知っていますAVData
[[AVURLAsset alloc] initWithURL:url options:nil];
AVAsset誰かが私に直接割り当てる同様の方法を提案できますNSDataか?
AVAssetから初期化できますか..次のような関数を使用してURLからNSData初期化できることを知っていますAVData
[[AVURLAsset alloc] initWithURL:url options:nil];
AVAsset誰かが私に直接割り当てる同様の方法を提案できますNSDataか?
私の知る限りではありません。AVAssetデバイスの(内部)メディアライブラリ内のアイテムを表すため、カスタムデータを使用して初期化してもあまり意味がありません。おそらく、このクラスにはのパブリック初期化子がないことを言及する価値がありますNSData。
これが必要な場合は、おそらくコードロジックを再設計する必要があると思います。
受け入れられた答えは正しくありません。
実装を介してAVAssetからを作成することが可能です。NSDataAVAssetResourceLoaderDelegate
具体的には以下を実装します。
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
ちがいない:
loadingRequest.contentInformationRequest.contentType = AVFileType.mycontenttype.rawValue後でコードを投稿しますが、例として「AVAssetResourceLoaderDelegategithub」をグーグルで検索できます。
これは私が解決した別の解決策です。間接的に、最初にローカルディレクトリにNSDataを書き込んで/保存してから、そのファイルパスからAVAssetを初期化しました。
AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:locationUrl]];
最初にnsdataをfilepathに書き込んでから、そのパスからAVAssetに初期化してみてください。
[videoData writeToFile: locationUrl atomically:YES];
ファイルの場所のURLが正しいことを確認し、ロードバック時にエラーが発生した場合にデータがそのファイルパスに保存されているかどうかをテスト確認します。最後に、ファイルが不要になった場合は、ファイルをクリーンアップすることを忘れないでください。