gpt4 book ai didi

objective-c - iOS:播放需要身份验证的视频在 QuickLook 中有效,但在 MPMoviePlayerViewController 中无效

转载 作者:可可西里 更新时间:2023-11-01 03:21:34 24 4
gpt4 key购买 nike

我使用 SOAP 网络服务 登录我的服务器。登录后,我正在查看的许多文件仅供登录用户使用,因此 iOS 必须在 NSURL 或其他内容中创建 session 。

当尝试使用 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];

// Properties
tempPlayer.moviePlayer.allowsAirPlay = YES;
tempPlayer.moviePlayer.shouldAutoplay = YES;
tempPlayer.moviePlayer.useApplicationAudioSession = NO;
[self presentMoviePlayerViewControllerAnimated:tempPlayer];
[tempPlayer.moviePlayer play];

}//end

由于该视频只能由登录用户观看,如果公共(public)用户访问视频 URL,他们将看到一个 HTML 表单以供登录。 NSURLCredential 在这种情况下不起作用吗?

为什么所有对 NSURLConnection 的调用都有效,使用我的登录凭据(例如下载视频),但 MPMoviePlayerViewController 似乎没有使用这些相同的凭据,并拒绝播放视频(可能是因为它获得了登录页面)?

有解决办法吗?

最佳答案

最近,我遇到了类似的问题,无法将 cookie 传递给 MPMoviePlayerController。我从堆栈溢出中发现,解决方案是使用 NSURLProtocol。尽管如此,弄清楚如何去做还是很痛苦,所以我想我可以通过分享编码解决方案来节省人们一些时间:https://stackoverflow.com/a/23261001/3547099

关于objective-c - iOS:播放需要身份验证的视频在 QuickLook 中有效,但在 MPMoviePlayerViewController 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9790697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com