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
からを作成することが可能です。NSData
AVAssetResourceLoaderDelegate
具体的には以下を実装します。
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が正しいことを確認し、ロードバック時にエラーが発生した場合にデータがそのファイルパスに保存されているかどうかをテスト確認します。最後に、ファイルが不要になった場合は、ファイルをクリーンアップすることを忘れないでください。