Swift教程-視頻拍攝教程

原文鏈接:Take Video Tutorial in iOS8 with Swift
原文日期:2015/07/09

譯者:lfb_CD
校對:numbbbbb
定稿:shanks

蘋果公司提供了UIimagePickerController-這是一個使用 iOS 設備內(nèi)置的攝像頭來拍攝視頻的可視化界面缝其。在此教程中屯掖,我們將拍攝一段保存到手機相冊的視頻。教程運行在 iOS 8.4 和 Xcode 6.4 下。

打開 Xcode 并創(chuàng)建一個new Single View Application,項目名稱為IOS8SwiftTakeVideoPlayerTutorial儒洛,接著填上你的Organization NameOrganization Identifier鞍恢,選擇 Swift 語言,在設備一欄只選擇 iPhone沼瘫。

打開Storyboard歌馍,然后在主視圖中拖入兩個按鈕,并分別設置兩個buttontitleTake VideoView Library晕鹊。之后你的故事板內(nèi)容應該像下面這樣:

按住 Control鍵 并選中兩個按鈕松却,點擊故事板右下角的Resolve Auto Layout Issues按鈕(就是右下角那個三角形按鈕),選擇Add Missing Constraints

打開Assistant Editor(關聯(lián)面板),并確保ViewController.swift文件是打開著的溅话。按住 Control鍵晓锻,把第一個按鈕拖出到ViewController.swift文件中,并創(chuàng)建下面的Action

按住 Control鍵飞几,把第二個按鈕拖出到ViewController.swift文件砚哆,并創(chuàng)建下面的Action

打開ViewController.swfit文件,并在文件頂部添加下面代碼:

import MobileCoreServices
import AssetsLibrary

修改ViewController類的聲明:

class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

ViewController類中需要實現(xiàn)UIImagePickerController的代理方法屑墨。實現(xiàn)takeVideo方法:

@IBAction func takeVideo(sender: AnyObject) {
    // 1 Check if project runs on a device with camera available
    if UIImagePickerController.isSourceTypeAvailable(.Camera) {
        // 2 Present UIImagePickerController to take video
        controller.sourceType = .Camera
        controller.mediaTypes = [kUTTypeMovie as! String]
        controller.delegate = self
        controller.videoMaximumDuration = 10.0
        presentViewController(controller, 
            animated: true, completion: nil)
     }
     else {
        println("Camera is not available")
     }
}
  1. isSourceTypeAvailable用來檢測設備是否支持拍攝視頻躁锁。
  2. ImagePickerController的數(shù)據(jù)可以是CameraMovie(圖片和視頻)兩種類型。視頻的maximum(拍攝視頻的最長時間)長度設置為10秒卵史。

實現(xiàn) viewLibrary方法:

@IBAction func viewLibrary(sender: AnyObject) {
    // Display Photo Library
    controller.sourceType = 
    UIImagePickerControllerSourceType.PhotoLibrary
    controller.mediaTypes = [kUTTypeMovie as! String]
    controller.delegate = self  
    presentViewController(controller, 
        animated: true, completion: nil)
    }

點擊按鈕就會打開相冊战转。如果mediaType沒有被設置為視頻類型,那么視頻文件就不會顯示以躯,只會顯示圖片資源槐秧。下面實現(xiàn)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! String
                if stringType == kUTTypeMovie as! String {
                    let urlOfVideo = info[UIImagePickerControllerMediaURL] as? NSURL
                        if let url = urlOfVideo {
                            // 2  
                            assetsLibrary.writeVideoAtPathToSavedPhotosAlbum(url,
                                completionBlock: {(url: NSURL!, error: NSError!) in
                                    if let theError = error{
                                        println("Error saving video = \(theError)")
                                    }
                                    else {
                                        println("no errors happened")
                                    }
                                })
                        }
                } 
        }
    }
    // 3
    picker.dismissViewControllerAnimated(true, completion: nil)
}

imagePickerController(_:didFinishPickingMediaWithInfo:)方法告訴代理啄踊,用戶選擇了一段視頻。info參數(shù)包含了選中的視頻的URL數(shù)據(jù)

  1. 字典數(shù)據(jù)類型的infomediatype參數(shù)可用于檢測參數(shù)是否是movie類型刁标。如果是就提取視頻的URL
  2. writeVideoAtPathToSavedPhotosAlbum方法會把視頻保存到手機相冊中
  3. ViewController視圖消失

實現(xiàn)imagePickerControllerDidCancel方法:

func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        picker.dismissViewControllerAnimated(true, completion: nil)
}

當用戶點擊Cancel按鈕時颠通,View Controller視圖就會消失掉。如果模擬器沒有視頻文件膀懈,請在真實的設備上編譯并運行這個項目顿锰。選擇”Take Video“拍攝一段視頻并選擇”Use Video“,接著選擇”View Library“启搂,視頻就會保存到手機相冊中了撵儿。

你可以在Github上下載IOS8SwiftTakeVideoPlayerTutorial的代碼

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狐血,隨后出現(xiàn)的幾起案子淀歇,更是在濱河造成了極大的恐慌,老刑警劉巖匈织,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪默,死亡現(xiàn)場離奇詭異,居然都是意外死亡缀匕,警方通過查閱死者的電腦和手機纳决,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乡小,“玉大人阔加,你說我怎么就攤上這事÷樱” “怎么了胜榔?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長湃番。 經(jīng)常有香客問我夭织,道長,這世上最難降的妖魔是什么吠撮? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任尊惰,我火速辦了婚禮,結果婚禮上泥兰,老公的妹妹穿的比我還像新娘弄屡。我一直安慰自己,他們只是感情好鞋诗,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布膀捷。 她就那樣靜靜地躺著,像睡著了一般师脂。 火紅的嫁衣襯著肌膚如雪担孔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天吃警,我揣著相機與錄音糕篇,去河邊找鬼。 笑死酌心,一個胖子當著我的面吹牛拌消,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播安券,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼墩崩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侯勉?” 一聲冷哼從身側響起鹦筹,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎址貌,沒想到半個月后铐拐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡练对,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年遍蟋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螟凭。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡虚青,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出螺男,到底是詐尸還是另有隱情棒厘,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布下隧,位于F島的核電站绊谭,受9級特大地震影響,放射性物質發(fā)生泄漏汪拥。R本人自食惡果不足惜达传,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迫筑。 院中可真熱鬧宪赶,春花似錦、人聲如沸脯燃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辕棚。三九已至欲主,卻和暖如春邓厕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扁瓢。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工详恼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人引几。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓昧互,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伟桅。 傳聞我的和親對象是個殘疾皇子敞掘,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件楣铁、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 轉載自:https://github.com/Tim9Liu9/TimLiu-iOS[https://github...
    香橙柚子閱讀 8,550評論 0 35
  • 電影《北京遇上西雅圖之不二情書》讓我對這本書產(chǎn)生了興趣玖雁,某天去圖書館,無意間瞥見盖腕,一順手就借了回來茄菊。 總體來說,精...
    Z小姐過的很好閱讀 456評論 0 0
  • 第十一章:兒女情長自恩愛赊堪,秀兒閑話知根底 再說這阮氏陪著老夫人到得房里面殖,就有丫鬟急忙送了茶水來。 阮氏忙服侍老夫人...
    烜荷公子閱讀 538評論 0 5
  • 《我的前半生》最近熱播哭廉,劇情一句話來描述就是一個家庭主婦遭遇丈夫外遇出軌離婚后重拾信心面對生活的都市現(xiàn)實情感劇脊僚。 ...
    ca_heeniem閱讀 576評論 0 1