URLがあります。次のようになります。
https://content.stage.someCompany.net/deliveries/artistNameHere/songNameHere-128.mp3?Expires=someNumberHere&Signature=someReallyReallyReallyLongStringHere&Key-Pair-Id=someIdHere
それを細かく分けてみましょう:
https://content.stage.someCompany.net/deliveries/artistNameHere/songNameHere-128.mp3
?Expires=someNumberHere
&Signature=someReallyReallyReallyLongStringHere
&Key-Pair-Id=someIdHere
ご覧のとおり、これは 128 kbps に制限された .mp3 の美化されたものであり、末尾にいくつかのセキュリティ機能が追加されています。
Mac の Safari にロードすると、再生されます。iOS アプリの AVPlayer コンストラクターに渡すと、同様に再生されます。
ただし、これを使用して AVURLAsset を作成すると、.isPlayable が false であると報告されます。そのアセットに基づいて AVPlayerItem をさらに作成することに頑固に固執すると、AVPlayerItemStatusFailed が報告されます。
言うまでもなく、これらの条件では、私の AVURLAsset + AVPlayerItem + AVPLayer インフラストラクチャ (player.play() で最高潮に達します) は、実際には音楽を再生しません。
また
(別のstackoverflowトピックからのランダムな.mp3)http://podcast.cbc.ca/mp3/podcasts/asithappens_20160907_50906.mp3
私が見た違い: Apple の URL は実際にはある種の「プレイリスト」ですが、2 番目の URL はプレーンな「文明化された」.mp3 です。リンクの最後にセキュリティマンボジャンボはもうありません。
URL が再生されないのはなぜですか? セキュリティ関連で何か特別なことをする必要がありますか? 今、私は素朴に「ねえ、AVURLAsset...これが私の(全体の)URLです...それであなたのことをしてください...」