0

저는 한 가지 문제에 직면 해 왔습니다. 레일즈 서버에서 iPhone 앱 내부로 비디오를 스트리밍해야합니다. 스트리밍 요청을 보내는 동안 나는 인증을위한 jwt 토큰 인 요청 헤더를 설정해야합니다. iPhone 비디오 스트림이 작동하지 않습니다.

  1. 아이폰 구성 요소 MPMoviePlayerController를 내장 사용하려고하지만, 문제는 그것이 단지 NSURLRequest 대신 NSURL이 걸리기 때문에 헤더를 설정할 수 아니에요입니다.

  2. 또한 UIWebView을 사용하여 요청 헤더와로드가있는 NSURLRequest을 Webview에 생성하여이 작업을 시도했습니다. 처음으로 앱을 빌드하고 실행할 때 동영상을 스트리밍 할 수 있습니다. 하지만 그 후 스트리밍하지 않습니다 (스트리밍하는 동안 요청을 여러 번 보내고 첫 번째 요청의 경우에만 헤더를 설정하고 후속 요청을하지 않기 때문에). 앱을 다시 설치하면 다시 처음 실행됩니다.

코드는 다음과 같습니다 :

NSString * jwtToken = @“Token”; 
NSString * Bearer = @"Bearer "; 
NSString *authHeader=[Bearer stringByAppendingString:jwtToken]; 
[urlRequest setValue:authHeader forHTTPHeaderField:@"Authorization"]; 
urlRequest.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; 
webview.allowsInlineMediaPlayback = YES; 
webview.mediaPlaybackRequiresUserAction = NO; 
webview.opaque = NO; 
webview.backgroundColor = [UIColor clearColor]; 
[webview setTranslatesAutoresizingMaskIntoConstraints:NO]; 
webview.delegate = self; 
[self.view addSubview:webview]; 
[webview loadRequest:urlRequest]; 

좀 의심이, 1. 요청 헤더와 아이폰 내장 비디오 구성 요소를 사용하는 방법이 있나요? 2. UIwebView를 사용해야하는 경우 어떻게이 문제를 해결할 수 있습니까?

이 문제를 해결하려면 안내하십시오.

답변

0

AVPlayerAVFoundation이며 URL 만 사용하십시오. 그것은 내가 생각하는 다른 것을 관리 할 것이다. 어떤 유형의 헤더 나 다른 것을 설정할 필요가 없습니다. AVPlayer을 통해 원격 비디오에서 비디오를 재생할 수 있습니다. 당신이 좋아하는 뭔가를 할 수

,

NSString *urlString = @"yourUrlStrong"; 
NSURL *url = [NSURL URLWithString:urlString]; 
self.item = [AVPlayerItem playerItemWithURL:url]; 
self.player = [[AVPlayer alloc] initWithPlayerItem:self.item]; 
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; 
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayingFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.item]; 
playerLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
playerLayer.backgroundColor = [UIColor greenColor].CGColor; 
[self.view.layer addSublayer:playerLayer]; 
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
[self.player play]; 
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

그리고 당신은 재산 로컬이 아닌 변수로 AVPlayerAVPlayerItem 선언되어 있는지 확인하십시오.

+0

답변을 주셔서 감사합니다.하지만 서버에 비디오를 제공해야하므로 헤더를 설정해야합니다. –

+0

URL에서 비디오를 직접 재생하려고하면 어떤 오류가 발생합니까 ?? – Lion

+0

서버에서 비디오를 제공하지 않습니다. 인증하려면 토큰을 설정해야합니다. –

관련 문제