Sprite kit 在SpriteKit SKVideoNode中播放来自摄影机滚轮的视频

Sprite kit 在SpriteKit SKVideoNode中播放来自摄影机滚轮的视频,sprite-kit,xcode7,avplayer,camera-roll,skvideonode,Sprite Kit,Xcode7,Avplayer,Camera Roll,Skvideonode,我已经完成了大部分工作,但我仍然坚持做一些简单的事情。我正试图在SpriteKit中播放一段来自摄像机的视频。视频将从主捆绑包播放,视频选择器也会工作,直到我选择视频。我想我锁定了主线程,因为在选择视频时,选择器会冻结。非常感谢你的帮助 h #导入 #导入“GameViewController.h” #进口 @界面游戏场景:SKScene @结束 m #导入“GameScene.h” #进口 @实现游戏场景{ AVPlayer*播放器; SKVideoNode*videoNode1; NSUR

我已经完成了大部分工作,但我仍然坚持做一些简单的事情。我正试图在SpriteKit中播放一段来自摄像机的视频。视频将从主捆绑包播放,视频选择器也会工作,直到我选择视频。我想我锁定了主线程,因为在选择视频时,选择器会冻结。非常感谢你的帮助

h

#导入
#导入“GameViewController.h”
#进口
@界面游戏场景:SKScene
@结束
m

#导入“GameScene.h”
#进口
@实现游戏场景{
AVPlayer*播放器;
SKVideoNode*videoNode1;
NSURL*文件URL;
NSString*moviePath;
UIViewController*viewController;
}
-(void)didMoveToView:(SKView*)视图{
player=[AVPlayer playerWithURL:fileURL];
videoNode1=[[SKVideoNode alloc]initWithAVPlayer:player];
videoNode1.size=CGSizeMake(self.frame.size.width,self.frame.size.height);
videoNode1.position=CGPointMake(self.frame.size.width/2.0f,self.frame.size.height/2.0f);
videoNode1.zPosition=100.0f;
[自添加子节点:videoNode1];
player.volume=1.0f;
[视频节点1播放];
}
-(无效)获取视频{
UIImagePickerController*imagePicker=[[UIImagePickerController alloc]init];
imagePicker.delegate=self;
imagePicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes=[[NSArray alloc]initWithObjects:(NSString*)kUTTypeMovie,nil];
viewController=self.view.window.rootViewController;
[viewController presentViewController:imagePicker动画:是完成:无];
}
-(void)imagePickerController:(UIImagePickerController*)picker未使用信息完成PickingMediaWithInfo:(NSDictionary*)信息{
NSString*mediaType=[info objectForKey:UIImagePickerControllerMediaType];
如果(CFStringCompare((uu桥CFStringRef)mediaType,kUTTypeMovie,0)=KCFComparequalto){
fileURL=(NSURL*)[info-objectForKey:UIImagePickerController-DiaUrl];
moviePath=[fileURL路径];
if(UIVideoAtPath与SavedPhotosAlbum(moviePath))兼容){
UISaveVideoAtPathToSavedPhotosAlbum(电影路径,无,无,无);
}
player=[AVPlayer playerWithURL:fileURL];
}
viewController=self.view.window.rootViewController;
[viewController解除viewController激活:是完成:无];
NSLog(“地点视频”);
}

为其他想要此功能的人回答我自己的问题。必须在imagePicker方法中设置节点和播放机

- (void)getVideo {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];
viewController = self.view.window.rootViewController;
[viewController presentViewController: imagePicker animated: YES completion:nil];

}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

fileURL = [info objectForKey:UIImagePickerControllerMediaURL];
[picker dismissViewControllerAnimated:YES completion:NULL];
player = [AVPlayer playerWithURL: fileURL];

videoNode1 = [[SKVideoNode alloc] initWithAVPlayer:player];
videoNode1.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
videoNode1.position = CGPointMake(self.frame.size.width/2.0f, self.frame.size.height/2);
videoNode1.zPosition = 100.0f;
[self addChild:videoNode1];

player.volume = 1.0f;
[videoNode1 play];

 }

为其他想要此功能的人回答我自己的问题。必须在imagePicker方法中设置节点和播放机

- (void)getVideo {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];
viewController = self.view.window.rootViewController;
[viewController presentViewController: imagePicker animated: YES completion:nil];

}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

fileURL = [info objectForKey:UIImagePickerControllerMediaURL];
[picker dismissViewControllerAnimated:YES completion:NULL];
player = [AVPlayer playerWithURL: fileURL];

videoNode1 = [[SKVideoNode alloc] initWithAVPlayer:player];
videoNode1.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
videoNode1.position = CGPointMake(self.frame.size.width/2.0f, self.frame.size.height/2);
videoNode1.zPosition = 100.0f;
[self addChild:videoNode1];

player.volume = 1.0f;
[videoNode1 play];

 }
- (void)getVideo {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];
viewController = self.view.window.rootViewController;
[viewController presentViewController: imagePicker animated: YES completion:nil];

}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

fileURL = [info objectForKey:UIImagePickerControllerMediaURL];
[picker dismissViewControllerAnimated:YES completion:NULL];
player = [AVPlayer playerWithURL: fileURL];

videoNode1 = [[SKVideoNode alloc] initWithAVPlayer:player];
videoNode1.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
videoNode1.position = CGPointMake(self.frame.size.width/2.0f, self.frame.size.height/2);
videoNode1.zPosition = 100.0f;
[self addChild:videoNode1];

player.volume = 1.0f;
[videoNode1 play];

 }