如何使用自定义NSURLProtocol使用URL播放电影?

ben*_*ben 8 url mpmovieplayercontroller nsurlprotocol ios

如您所知,使用MPMoviePlayerController对象播放电影

[[MPMoviePlayerController alloc] initWithContentURL: aURL];
Run Code Online (Sandbox Code Playgroud)

现在,我想实现一个自定义NSURLProtocol,我将在其中解密已被AlgorithmDES加密的电影源.那可能吗?谢谢你给予任何想法.需要你的帮助〜

Oli*_*yme 13

更新:我与Apple谈到了这一点,目前不可能将MPMoviePlayerController与NSURLProtocol子类一起使用!


HEJ,

我不确定但是有可能.我目前正在研究类似的东西,但还没有完全发挥作用.我发现MPMoviePlayerController与我的自定义NSURLProtocol子类交互但是考虑到NSURLRequest的HTTPHeaders似乎很重要,因为它们定义了MPMoviePlayerController需要的字节范围.

如果你将它们转储到你的NSURLProtocol子类中,你会得到两次这样的东西:

2011-01-16 17:00:47.287 iPhoneApp[1177:5f03] Start loading from request: {
Range = "bytes=0-1";
Run Code Online (Sandbox Code Playgroud)

}

所以我的GUESS就是只要你能提供正确的范围并返回一个可以由MPMoviePlayerController播放的mp4文件就应该可以!

编辑:这是一个有趣的链接:保护iPhone和iPad应用程序中的资源

  • @auibrian我发送了一张DTS票给Apple,他们回答说仍然无法使用NSURLProtocol在iOS 7中提供视频文件.他们建议在雷达上提交功能增强请求. (4认同)

vau*_*han 6

解决方案是通过本地HTTP服务器代理请求.我使用CocoaHTTPServer完成了这个.

看看这个HTTPAsyncFileResponse例子.


Sop*_*oph 5

从iOS 7开始还有一个解决方案.您可以为AVAssetResourceLoader使用AVAssetResourceLoaderDelegate.但这只适用于AVPlayer.

Apple有一个名为AVARLDelegateDemo的演示项目,看看它,你应该找到你需要的东西.(我认为链接到它不是一个好主意,所以只需在developer.apple.com上的Developer Library中搜索它)然后使用任何自定义URL方案(不声明NSURLProtocol)并在AVAssetResourceLoaderDelegate中处理该URL方案.

如果有巨大的兴趣,我可以提供概念验证要点.