問題タブ [avassetdownloadtask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7534 参照

ios - オフライン HLS コンテンツのダウンロードと再生 - iOS 10

iOS 10 以降、Apple はオフライン表示用に HLS (m3u8) ビデオのダウンロードをサポートしています。

私の質問は、HLS を再生中にのみダウンロードできるようにする必要があるかどうかです。または、ユーザーがダウンロード ボタンを押して進行状況を表示したときにダウンロードすることもできます。

Objective Cバージョンでこれを実装した人はいますか? 実際、私の以前のアプリは Objective C で作成されています。MP4 ではなく HLS のダウンロードのサポートを追加したいと考えています (以前は、オフライン ビュー用に MP4 をダウンロードしていました)。

私はこれに本当に必死です。実装されている場合は、考えやコードを共有してください。

0 投票する
0 に答える
257 参照

ios - AVAssetDownloadURLSession へのダウンキャストが失敗する

を作成していますAVAssetDownloadURLSession

ここに私のコードがあります:

ここで、 を印刷するavSessionと、__NSURLBackgroundSessionではなく であると表示されAVAssetDownloadURLSessionます。avSession別の変数 (この場合は Any)に代入し、後でダウンキャストすると失敗します。

まさにこれを行う必要があるため、これは本当の問題です。失敗せずにこれをダウンキャストできないのはなぜですか? のメモリ アドレスをavSession検査し、デバッガーでいずれかを検査すると、両方とも同じアドレスになります。しかし、それは間違いなく (デバッガーとランタイム自体によると) ではありませんAVAssetDownloadURLSession

これについて助けてくれてありがとう。

0 投票する
1 に答える
1654 参照

ios - オフラインの Fairplay AVAssetDownloadTask で、ダウンロード中に不明なエラー コールバックが発生しました (iOS 10.2 でのみ発生)

クライアント アプリ用のオフライン フェアプレイ コンテンツを作成しています。HLSCatalog デモ アプリの Apple サンプル ダウンロード マネージャー AssetPersistenceManager クラスを参照して、その機能を実装しました。ここで強調したいのは、AssetPersistenceManager クラスに 1 つの関数と 2 つのコールバックです。

ストリームのダウンロードが完了したらコールバックします

最後は didCompleteWithError コールバックです

iOS < 10.2 ではすべて正常に動作するようですが、最新の iOS 10.2 を実行している一部のデバイスでテストした後、アプリは常に didFinishDownloadTo デリゲートへのコールバックを取得しましたが、完了率は 13 ~ 15% のみでした。その後、didCompleteWithError が呼び出され、以下のエラーを受け取りました。

プロキシデバッグアプリで確認すると、アプリが応答全体を受信する前に接続を閉じることが指摘されています。

そのエラーが発生するのは iOS 10.2 のみです。そのバージョンより下の他の OS でテストされた同じストリームは、引き続き正常に動作します。この部分についてiOS 10.2の変更ログを見つけようとしましたが、何も見つかりませんでしたか? 何かアドバイスはありますか?

0 投票する
1 に答える
1033 参照

ios - AVAssetDownloadTask を使用して、まだストリーミングされていない FairPlay で暗号化された AVURLAsset インスタンスをダウンロードするにはどうすればよいですか?

AVAssetDownloadTaskFairPlay で暗号化されたオーディオ コンテンツをオフラインでダウンロードして再生するために使用しようとしています。で次のようなエラーが発生し続けましたurlSession:task:didCompleteWithError:

エラー Domain=AVFoundationErrorDomain Code=-11863 "Operation Stopped" UserInfo={NSLocalizedFailureReason=このコンテンツは利用できなくなりました., NSLocalizedDescription=操作は停止しました}

私のフローは次のとおりです。

これはすべて機能し、Apple のHLSCatalog サンプル コードと同じ方法で実行されました。しかし、同じプレイリストと主要な URL をサンプル コードにプラグインすると正常にダウンロードされるにもかかわらず、ダウンロードすると上記のエラーが表示されます。

私が最終的に理解したのは、既にストリーミングされており、( を介して) 復号化キーが与えられていて、プレーヤーに関連付けられていないインスタンスAVAssetDownloadTaskのみをダウンロードするということです。既に再生中のものと同じ URL を使用して新しいものを作成してダウンロードすることはできません。したがって、任意の FairPlay コンテンツをダウンロードするには、次のことを行う必要があるようです。AVURLAsset AVAssetResourceLoaderDelegateAVURLAsset

  • を作るAVURLAsset
  • を作成し、AVPlayerそのボリュームを 0 に設定します
  • アセットを渡して再生する
  • リソースローダーからキーを要求して再生を開始するまで待ちます
  • ダウンロードタスクに渡し、プレーヤーとの関連付けを解除します

しかし、これはひどいようです。それは真実ではありません。

それで、私の質問: FairPlay で暗号化された AVURLAsset を、その特定のインスタンスを以前にストリーミングせずにダウンロードするにはどうすればよいですか?