如您所知,使用MPMoviePlayerController对象播放电影
[[MPMoviePlayerController alloc] initWithContentURL: aURL];
Run Code Online (Sandbox Code Playgroud)
现在,我想实现一个自定义NSURLProtocol,我将在其中解密已被AlgorithmDES加密的电影源.那可能吗?谢谢你给予任何想法.需要你的帮助〜
我使用a登录我的服务器SOAP web service.登录后,我正在查看的许多文件仅供登录用户使用,因此iOS必须在其中创建会话NSURL.
当尝试使用MPMoviePlayerViewController它预览视频文件将无法工作时,它只是加载viewController,然后解散它.
如果我使用QuickLook它确实有效,可能是因为我首先在本地下载视频,然后查看它.
但是,我不想这样做,我想使用流式传输视频,MPMoviePlayerViewController因为我不希望用户必须下载整个视频文件.我看过关于使用的帖子,NSURLCredential但这对我来说似乎不起作用.我用过(显然添加了我自己的个人信息):
/**
* Play media session
*
* @version $Revision: 0.1
*/
- (void)playMediaWithURL:(NSString *)mediaURL {
// Authenticate
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"myusername"
password:@"mypassword"
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]
initWithHost:@"mysite.com"
port:80
protocol:@"http"
realm:nil
authenticationMethod:NSURLAuthenticationMethodDefault];
[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential forProtectionSpace:protectionSpace];
// The movie player
NSURL *movieURL = [NSURL URLWithString:[mediaURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
MPMoviePlayerViewController *tempPlayer = [[MPMoviePlayerViewController alloc]initWithContentURL:movieURL];
// Add observer
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; …Run Code Online (Sandbox Code Playgroud) objective-c nsurl mpmovieplayercontroller nsurlcredential ios
我正在尝试从受基于会话的身份验证保护的服务器流式传输音频文件,我注意到MPMoviePlayerController和AVPlayerItem/AVPlayer似乎都没有使用NSHTTPCookieStorage中设置的cookie.如果我使用NSURLConnection发出相同的URL请求,我会得到200并且能够访问音频文件.当我通过代理监视请求时,似乎MPMoviePlayerController没有在请求头中设置cookie,而NSURLConnection执行:
使用MPMoviePlayerController发出的请求initWithContentURL:
GET /path/on/server/test1.m4a HTTP/1.1
Host: server.example.net
User-Agent: AppleCoreMedia/1.0.0.9A334 (iPhone Simulator; U; CPU OS 5_0 like Mac OS X; en_us)
Accept: */*
Range: bytes=0-1
Accept-Encoding: identity
X-Playback-Session-Id: E8F093F4-C906-46A8-94FE-30BBCFDAB3F6
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
使用NSURLConnection进行的请求:
GET /path/on/server/test1.m4a HTTP/1.1
Host: server.example.net
User-Agent: otest (unknown version) CFNetwork/548.0.3 Darwin/11.1.0
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: somekey=abc123def456
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
有谁知道如何让MPMoviePlayerController或AVPlayerItem在请求远程资源时使用NSHTTPCookie?