Hướng dẫn xây dựng một máy quay và Playback

This entry is part 1 of 1 in the series Danh mục bài học IOS
  • 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 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 .

Screen Shot 2016-04-28 at 12.18.11

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 !

Thiế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

Screen Shot 2016-04-28 at 11.05.25

xoá 2 file ViewController .Vào newFile tạo 2 file mới :

Screen Shot 2016-04-28 at 11.05.54

đặ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!!!.

Screen Shot 2016-04-28 at 11.06.08 Tạo action cho button “recording”.Screen Shot 2016-04-28 at 11.16.31

Quay video Mã nguồn

Thêm thư viện: quản lý chơi nhạc!.

#import "MediaPlayer/MediaPlayer.h"
#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:

@property(nonatomic,strong) NSURL *videoUrl;
@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.

@interface recordingAndPlaybackViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>

Sau các bước trên, Ta được mã nguồn trông giống thế này:

#import <UIKit/UIKit.h>
#import "MediaPlayer/MediaPlayer.h"
#import "MobileCoreServices/MobileCoreServices.h"
@interface recordingAndPlaybackViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
@property(nonatomic,strong) NSURL *videoUrl;
@property(nonatomic,strong) MPMoviePlayerController *videoController;
- (IBAction)recordingPlayback:(id)sender;
@end

Để cho phép quay video ta thêm mã lệnh sau:

- (IBAction)recordingPlayback:(id)sender {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        //tạo đối tượng
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        // đăng ký khuôn mẫu
        picker.delegate = self;
        //Đăng ký chỉnh sửa
        picker.allowsEditing = YES;
        // đăng ký cho phép dùng camera
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        //đăng ký kiểu dữ liệu
        picker.mediaTypes=[[NSArray alloc] initWithObjects:(NSString*)kUTTypeMovie, nil];
        //phủ view
        [self presentViewController:picker animated:YES completion:NULL];
    }

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!.
  2. 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.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    // dict lưu urlvideo
    self.videoUrl = info[UIImagePickerControllerMediaURL];
    [url addObject:self.videoUrl];
    [picker dismissViewControllerAnimated:YES completion:NULL];
    self.videoController = [[MPMoviePlayerController alloc] init];
    [self.videoController setContentURL:self.videoUrl];
    [self.videoController.view setFrame:CGRectMake (0, 0, 320, 460)];
    [self.view addSubview:self.videoController.view];
    [self.videoController play];
}

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ã:

[[NSNotificationCenter defaultCenter] addObserver:self
                                            selector:@selector(videoPlayBackDidFinish:)
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:self.videoController];

– Đăng ký người quan sát NSNotificationCenter theo dõi video chạy.

– 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ý.

- (void)videoPlayBackDidFinish:(NSNotification *)notification {
    
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Video Playback" message:@"Playback" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    
    
}

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

http://www.mediafire.com/download/xifbu3ceg8q2iyp/videoRecordingAndPlayback.zip
  • Nếu các bạn muốn biết thêm các kỹ thuật khác về ios, các bạn có thể tham khảo thêm các khóa học ios tại đây.

Add a Comment

Your email address will not be published. Required fields are marked *