我有一个URL。它看起来像这样:使用AVURLAsset + AVPlayerItem + AVPLayer流式传输.mp3
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()中实际上不会播放音乐。
但是,它成功地打,如果我(从另一个计算器话题一些随机.MP3)取代其他URL,就像苹果公司自己https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8
或
http://podcast.cbc.ca/mp3/podcasts/asithappens_20160907_50906.mp3
,我看到的差异:苹果的网址实际上是某种类型的“播放列表”,而第二个网址则是一个普通的“文明”.mp3文件。链接末尾没有更多的安全mambo-jumbo。
为什么我的网址不能播放?我需要做一些特定的安全措施吗?现在,我只是天真地“嘿,AVURLAsset ...这是我的(整个)URL ...做你的东西...”
那么,你提供的工作样本没有url属性。您的请求是否被网络服务器或其他东西重定向,而不是直接指向文件? – Lepidopteron