Swift教程-视频拍摄教程
原文鏈接:Take Video Tutorial in iOS8 with Swift
原文日期:2015/07/09
譯者:lfb_CD
校對:numbbbbb
定稿:shanks
蘋果公司提供了UIimagePickerController-這是一個使用 iOS 設備內置的攝像頭來拍攝視頻的可視化界面。在此教程中,我們將拍攝一段保存到手機相冊的視頻。教程運行在 iOS 8.4 和 Xcode 6.4 下。
打開 Xcode 并創建一個new Single View Application,項目名稱為IOS8SwiftTakeVideoPlayerTutorial,接著填上你的Organization Name和Organization Identifier,選擇 Swift 語言,在設備一欄只選擇 iPhone。
打開Storyboard,然后在主視圖中拖入兩個按鈕,并分別設置兩個button的title為Take Video和View Library。之后你的故事板內容應該像下面這樣:
按住?Control鍵 并選中兩個按鈕,點擊故事板右下角的Resolve Auto Layout Issues按鈕(就是右下角那個三角形按鈕),選擇Add Missing Constraints
打開Assistant Editor(關聯面板),并確保ViewController.swift文件是打開著的。按住?Control鍵,把第一個按鈕拖出到ViewController.swift文件中,并創建下面的Action
按住?Control鍵,把第二個按鈕拖出到ViewController.swift文件,并創建下面的Action
打開ViewController.swfit文件,并在文件頂部添加下面代碼:
import MobileCoreServices import AssetsLibrary修改ViewController類的聲明:
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {ViewController類中需要實現UIImagePickerController的代理方法。實現takeVideo方法:
@IBAction func takeVideo(sender: AnyObject) {// 1 Check if project runs on a device with camera availableif UIImagePickerController.isSourceTypeAvailable(.Camera) {// 2 Present UIImagePickerController to take videocontroller.sourceType = .Cameracontroller.mediaTypes = [kUTTypeMovie as! String]controller.delegate = selfcontroller.videoMaximumDuration = 10.0presentViewController(controller, animated: true, completion: nil)}else {println("Camera is not available")} }實現?viewLibrary方法:
@IBAction func viewLibrary(sender: AnyObject) {// Display Photo Librarycontroller.sourceType = UIImagePickerControllerSourceType.PhotoLibrarycontroller.mediaTypes = [kUTTypeMovie as! String]controller.delegate = self presentViewController(controller, animated: true, completion: nil)}點擊按鈕就會打開相冊。如果mediaType沒有被設置為視頻類型,那么視頻文件就不會顯示,只會顯示圖片資源。下面實現UIImagePickerControllerDelegate:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject: AnyObject]) {// 1 let mediaType:AnyObject? = info[UIImagePickerControllerMediaType]if let type:AnyObject = mediaType {if type is String {let stringType = type as! Stringif stringType == kUTTypeMovie as! String {let urlOfVideo = info[UIImagePickerControllerMediaURL] as? NSURLif let url = urlOfVideo {// 2 assetsLibrary.writeVideoAtPathToSavedPhotosAlbum(url,completionBlock: {(url: NSURL!, error: NSError!) inif let theError = error{println("Error saving video = \(theError)")}else {println("no errors happened")}})}} }}// 3picker.dismissViewControllerAnimated(true, completion: nil) }imagePickerController(_:didFinishPickingMediaWithInfo:)方法告訴代理,用戶選擇了一段視頻。info參數包含了選中的視頻的URL數據
實現imagePickerControllerDidCancel方法:
func imagePickerControllerDidCancel(picker: UIImagePickerController) {picker.dismissViewControllerAnimated(true, completion: nil) }當用戶點擊Cancel按鈕時,View Controller視圖就會消失掉。如果模擬器沒有視頻文件,請在真實的設備上編譯并運行這個項目。選擇”Take Video“拍攝一段視頻并選擇”Use Video“,接著選擇”View Library“,視頻就會保存到手機相冊中了。
你可以在Github上下載IOS8SwiftTakeVideoPlayerTutorial的代碼
總結
以上是生活随笔為你收集整理的Swift教程-视频拍摄教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在python中实现输出易经六十四卦
- 下一篇: java文件批量下载打包成zip