HƯỚNG DẪN XÂY DỰNG MỘT MÁY QUAY VÀ PLAYBACK Multimedia rất phổ biến trong cuộc sống hiện đại , Ảnh, video , âm nhạc… Phần trước chúng ta đã tìm hiểu làm thế nào để xây dựng máy ảnh đơn
Trang 1HƯỚNG DẪN XÂY DỰNG MỘT MÁY QUAY VÀ
PLAYBACK
Multimedia rất phổ biến trong cuộc sống hiện đại , Ảnh, video , âm nhạc… Phần trước chúng ta đã tìm hiểu làm thế nào để xây dựng máy ảnh đơn giản,truy cập thư viện chung, xem ảnh trong màn hình lớn hơn Phần này mình sẽ giới thiệu cho các bạn một máy quay đơn giản và xem lại những gì chúng ta đã quay đươc
MediaPlayer framework hỗ trợ chúng ta xem lại video Trong đó có hai phương thức:
AVFoundation – Giúp bạn thiết kế các tính năng tiên tiến như quản lý tài sản phương tiện truyền thông, chỉnh sửa phương tiện truyền thông, quản lý theo dõi Không có giao diện hỗ trợ chúng ta xử lý tuỳ chỉnh
MPMoviePlayerController – có giao diện giúp chúng ta chơi nhạc video , tuy nhiên không thể chỉnh sửa được
Trong hướng dẫn này, chúng tôi sẽ tập trung vào các MPMoviePlayerController Giúp chúng ta chơi video đơn giản
Mục tiêu:
1 Sử dụng UIImagePickerController để quay video
2 Sử dụng MPMoviePkayerController để chơi video chúng ta vừa quay xong
Khởi tạo một Project mới !
Trang 2Thiết kế giao diện:
Để quay video ta kéo vào một button để cho phép bắt đầu quay!!! đặt tên: Recording
Trang 3xoá 2 file ViewController Vào newFile tạo 2 file mới :
đặt tên “recordingAndPlaybackViewController” Dùng để quản lý view chúng ta vừa tạo
ra
Kết nối view với class!!!
Trang 4Tạo action cho button “recording”.
Quay video Mã nguồn
Thêm thư viện: quản lý chơi nhạc!
1 #import "MediaPlayer/MediaPlayer.h"
2 #import "MobileCoreServices/MobileCoreServices.h"
Để lấy url video chúng ta quay được và đối tượng đại diện để chạy video! Chúng ta khai báo:
1 @property(nonatomic,strong) NSURL *videoUrl;
2 @property(nonatomic,strong) MPMoviePlayerController *videoController;
như bài trước ứng dụng chụp ảnh ta khai
báo <UIImagePickerControllerDelegate,UINavigationControllerDelegate> Ứng dụng cho phép quay video cũng tương tự -Hai phương thức để cho phép truy cập camera và thư viện
1 @interface recordingAndPlaybackViewController :
UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
Trang 5Sau các bước trên, Ta được mã nguồn trông giống thế này:
1 #import <UIKit/UIKit.h>
2 #import "MediaPlayer/MediaPlayer.h"
3 #import "MobileCoreServices/MobileCoreServices.h"
4 @interface recordingAndPlaybackViewController :
UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
5 @property(nonatomic,strong) NSURL *videoUrl;
6 @property(nonatomic,strong) MPMoviePlayerController *videoController;
7 - (IBAction)recordingPlayback:(id)sender;
8 @end
Để cho phép quay video ta thêm mã lệnh sau:
1 - (IBAction)recordingPlayback:(id)sender {
2 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
3 //tạo đối tượng
4 UIImagePickerController *picker = [[UIImagePickerController alloc] init];
5 // đăng ký khuôn mẫu
6 picker.delegate = self;
7 //Đăng ký chỉnh sửa
8 picker.allowsEditing = YES;
9 // đăng ký cho phép dùng camera
10 picker.sourceType = UIImagePickerControllerSourceTypeCamera;
11 //đăng ký kiểu dữ liệu
12 picker.mediaTypes=[[NSArray alloc] initWithObjects:(NSString*)kUTTypeMovie, nil];
13 //phủ view
15 }
Các bạn nếu đã theo dõi ứng dụng chụp ảnh ở bài trước cơ bản hiểu các câu lệch –
nguyên lý links: “http://laptrinhios.vn/huong-dan-xay-dung-mot-may-anh-don-gian-su-dung-uiimagepickercontroller/“ Ở ứng dụng chụp ảnh ta không cần báo
picker.mediaTypes bởi vì mặc định của nó là cho kUTTypeImage cho phép camera ở
chế độ chụp ảnh Ở đây chúng ta muốn quay video Chúng ta phải khai báo
mediaTypes là kUTTypeMovie
Như vậy chúng ta đã cho phép camera quay video thành công!
Tuy nhiên để kiểm tra kết quả chúng ta cần cho phép video đó chạy
Chơi Video mã nguồn:
Một khi người dùng đã hoàn thành bản và xác nhận để lưu video, ứng dụng sẽ tự động phát lại video trong màn hình chính Để thực hiện việc phát lại video, chúng ta cần thực hiện:
1 Nhận URL của video chúng ta vừa quay được!
Trang 62 Bỏ chế độ UIImagePickkerController
3 Phát video bằng cách sử dụng các lớp MPMoviePlayerController
Tương tự UIImagePickkerViewController camera Video chúng ta có
mảng info[UIImagePickerControllerMediaURL] lưu url video vừa quay được
Như các bạn đã biết phương pháp didFinishPickingMediaWithInfo sẽ được gọi khi chúng ta xác nhận sử dụng video Khi đó chúng ta phải thoát chế độ quay video chuyển sang chế độ xem video
1 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info {
2 // dict lưu urlvideo
3 self.videoUrl = info[UIImagePickerControllerMediaURL];
6 self.videoController = [[MPMoviePlayerController alloc] init];
10 [self.videoController play];
11 }
Use Video-lấy url để chạy video, dismiss để thoát chế độ quay video Khởi tạo đối tượng self.videocontroller để chạy video – Xét url cho nó
Xét chế độ xem Frame, đưa nó vào view, cho phép play để bắt đầu chơi video
Như thế chúng ta đã Quay được video và chơi lại video
Thử biên dịch và kiểm tra :thật đáng tiếc simulator không có camera chúng ta phải chạy trên iphone kiểm tra
Sử dụng NSNotificationCenter:
Giúp chúng ta đăng ký một sự kiện khi đối tượng có một yêu cầu!
Trong didFinishPickingMediaWithInfo ta thêm đoạn mã:
2 selector:@selector(videoPlayBackDidFinish:)
3 name:MPMoviePlayerPlaybackDidFinishNotification
4 object:self.videoController];
– Đăng ký người quan sát NSNotificationCenter theo dõi video chạy
Trang 7– Khi kết thúc xem video phương thức MPMoviePlayerPlaybackDidFinishNotification trả
về NSNotificationCenter lắng nghe Gửi đến videoPlayBackDidFinish
(kèm đối tượng videocontroller)để xử lý
1 - (void)videoPlayBackDidFinish:(NSNotification *)notification {
2
3 UIAlertView *alert = [[UIAlertView alloc]
4 initWithTitle:@"Video Playback" message:@"Playback" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
6
7
8 }
Khi kết thúc video ta cho phép nó chạy lại đồng thời đưa ra thông báo
Biên dịch vào chạy thử trên Iphone!.ok
Có gì trong phần tiếp theo:
Mình sẽ giới thiệu cho các bạn TabarViewcontroller và navigationController! điều
hướng các cảnh!!!
full mã nguồn
1 http ://www.mediafire.com/download/xifbu3ceg8q2iyp/videoRecordingAndPlayback.zip