2017-03-10 7 views
0

동호회 poolid를 사용하여 AWS 서버에서 동영상 NSData을 다운로드했습니다. NSData을 에서 NSURL으로 변환 한 후 을 AVPlayer에서 재생하려고합니다. 그러나 그것은 재생되지 않습니다.AVPlayer에서 NSData를 재생하는 방법은 무엇입니까?

는 인터페이스에서, 나는 여기에

@property (nonatomic, strong) AVPlayer *avPlayer; 

내가 여기 데이터를 얻고 실제로

NSData *data = [UserProfileInfo getVideoData]; 
NSLog(@"%lu", (unsigned long)data.length); 

NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
_avPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:dataString]]; 

_avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 
AVPlayerLayer *videoLayer = [AVPlayerLayer playerLayerWithPlayer:_avPlayer]; 
videoLayer.frame = videoPreviewView.bounds; 
videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
[videoPreviewView.layer addSublayer:videoLayer]; 
[videoPreviewView.layer setOpacity:1.0]; 
[_avPlayer play]; 

코드입니다 정의 왔지만 나는 그런 NSString

NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

로 변환하고 때 나는 nildataSt를 얻고 있습니다. 고리. 누군가 도와주세요.

+0

UserProfileInfo 데이터 추가 – iOS

+0

UserProfileInfo는 다운로드 한 NSData를 저장 한 내 Model 클래스입니다. 그리고 getVideoData 메서드를 사용하여 데이터 변수에 NSData를 가져옵니다. –

답변

1

NSDATA를 문서 디렉토리에 저장하고 재생할 때 AVPlayer의 경로를 지정해야합니다.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
      NSString *documentsDirectory = [paths objectAtIndex:0]; 
      NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:@"myVideo.mp4"]; 
      [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
      BOOL isFileWriteComplete = [yourNSdata writeToFile:myPathDocs atomically:YES]; 
    if(isFileWriteComplete) 
    { 
_avPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:myPathDocs]]; 
_avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 
AVPlayerLayer *videoLayer = [AVPlayerLayer playerLayerWithPlayer:_avPlayer]; 
videoLayer.frame = videoPreviewView.bounds; 
videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
[videoPreviewView.layer addSublayer:videoLayer]; 
[videoPreviewView.layer setOpacity:1.0]; 
[_avPlayer play]; 
    }