비디오: What's new in Android - Google I/O 2016 2024
이 섹션에서는 상위 수준 추상화 인 MPMoviePlayerViewController 클래스를 사용하여 iOS 앱에서 비디오를 재생하는 방법을 보여줍니다. 다음은 비디오보기 컨트롤러에서 TTTVideoViewController 파일의 코드입니다.
- (IBAction) playVideo: (id) sender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL: movieURL]; [self presentMoviePlayerViewControllerAnimated: moviePlayer];}
단순함 자체! 필요한 것은 파일 시스템의 무비 파일 또는 무비 플레이어를 인스턴스화 할 인터넷 URL을 가리키는 URL뿐입니다. 플레이어의 UI가 중지, 시작 등을 처리합니다.
멤버 변수 movieURL은이 뷰 컨트롤러에 대해 디스플레이가 초기화 된 후에 호출되는 viewDidLoad 메서드에서 설정됩니다. 샘플 동영상은 여기에 표시된 것처럼 Videos. bundle이라는 리소스 파일에 저장됩니다.:
- (무효) viewDidLoad {[super viewDidLoad]; // 뷰를로드 한 후 추가 설정을 수행합니다. NSString * videoPath = [[NSBundle mainBundle] pathForResource: @ "비디오. bundle / SampleVideo"ofType: @ "MOV"]; movieURL = [NSURL fileURLWithPath: videoPath];}
다음 예제에서는 recordVideo로 알려진 하위 수준 메서드를 사용하여 이전 수준보다 한 수준 낮은 추상화를 사용하는 방법을 보여줍니다.
- (IBAction) recordVideo: (id) 보낸 사람 {UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker. sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker. mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil]; imagePicker. 대의원 = 자기; [[UIApplication sharedApplication] setStatusBarHidden: YES]; [self presentViewController: imagePicker animated: YES completed: nil];}이 메서드가 호출되면 카메라 인터페이스가있는 화면이 나타납니다. 이 화면을 사용하여 비디오 녹화를 시작하고 중지 할 수 있습니다. 비디오 녹화가 끝나면이 화면은 제어를 호출 뷰 컨트롤러로 다시 전송합니다.
imagePickerControllerDidCancel은 기록이있을 때 호출됩니다. 취소 된. 단순히 피커를 닫고 iOS 상태 표시 줄을 다시 표시합니다.
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker {[[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES completion: nil];}
-
didFinishPickingMediaWithInfo는 iOS 상태 표시 줄을 다시 표시하여 시작하고 선택기를 닫습니다. 그런 다음 녹화 된 비디오를 장치의 카메라 롤에 저장합니다. 마지막으로이 메서드는 멤버 변수 movieURL을이 새 비디오를 가리 키도록 설정하므로 다시 비디오 재생을 선택하면 새로 녹화 된 무비가 재생됩니다.
- (void) imagePickerController: (UIImagePickerController *) 피커 didFinishPickingMediaWithInfo: (NSDictionary *) 결과 {NSURL * moviePathURL = [결과 objectForKey: UIImagePickerControllerMediaURL]; NSString * moviePath = [moviePathURL 경로]; movieURL = moviePathURL; // (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil);} [[UIApplication sharedApplication] setStatusBarHidden: NO]; // 카메라 롤에 저장합니다. [picker dismissViewControllerAnimated: 예 완료: 없음];}