本文對之前做過的相機模塊做個小結,包括自定義相機進行視頻拍攝,視頻處理及保存等,感興趣的朋友可以做個參考
創新互聯建站主要從事成都網站建設、成都做網站、網頁設計、企業做網站、公司建網站等業務。立足成都服務二道,十年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:13518219792
常用于媒體錄制、編輯、播放,音頻錄制和播放,視頻音頻解碼等
常用類:AVCaptureDevice、 AVCaptureDeviceInput、 AVCapturePhotoOutput、 AVCaptureVideoPreviewLayer、
AVAsset、 AVAssetReader、 AVAssetWriter、 CMSampleBuffer、 AVPlayer、 CMTime、 AVCaptureMovieFileOutput、 AVCaptureMetadataOutput等
1.判斷有無權限
如果未申請過權限,則進行權限獲取
Capture 系統體系結構主要部分是會話,輸入和輸出
Capture 會話將一個或多個輸入連接到一個或多個
輸出。輸入是媒體的來源,包括捕獲設備相機和麥克風。輸出是從輸入中獲取媒體數據,例如寫入磁盤文件并產生一個電影文件。
視頻錄制需要在沙盒中先生成一個路徑,用于存儲視頻錄制過程中的文件信息寫入,等視頻資料全部寫入完成后,即可獲取到完整的視頻
2.1 獲取存儲路徑 存儲路徑在沙盒中,需要唯一
2.2 開啟異步線程進行寫入配置
2.3. 生成視頻采集對象
2.4. 生成圖像采集對象并添加到視頻采集對象 可以對圖像及音頻采集對象進行設置,格式,尺寸,碼率、幀率、頻道等等
2.5. 生成音頻采集對象并添加到視頻采集對象
上面的寫法會在獲取到視頻信息的時候開始寫入錄制,避免出現先寫入語音信息,導致開始的時候有語音但是沒有視頻信息問題出現 (實測此問題不明顯,根據個人需要看是否添加)
startSessionAtSourceTime方法用于設置開始播放時間
AVCaptureMovieFileOutput方式提供了暫停錄制方法和恢復錄制方法,但是僅mac os可用
AVAssetWriter不支持暫停錄制,嘗試過暫停文件寫入,結果為空白段,且音頻時間順序混亂, 狀態枚舉無暫停狀態,不支持
相同點:數據采集都在AVCaptureSession中進行,視頻和音頻的輸入都一樣,畫面的預覽一致。
不同點:
錄制完成之后可以通過之前的路徑來獲取視頻文件,進行播放、保存等操作
保存
參考相機拍照屬性設置
使用UIImagePickerController來實現在項目中添加視頻和圖片的功能。
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType
指定的源類型是否可用,sourceType是枚舉類型:
UIImagePickerControllerSourceTypePhotoLibrary:照片庫
UIImagePickerControllerSourceTypeCamera:攝像頭
UIImagePickerControllerSourceTypeSavedPhotosAlbum:相簿
+ (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType
指定的源設備上可用的媒體類型,一般就是圖片和視頻
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;
指定來源是否支持:
UIImagePickerControllerSourceTypePhotoLibrary:來自圖庫
UIImagePickerControllerSourceTypeCamera:來自相機
UIImagePickerControllerSourceTypeSavedPhotosAlbum:來自相冊
+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice
指定的攝像頭是否可用,cameraDevice是枚舉類型:
UIImagePickerControllerCameraDeviceRear:前置攝像頭
UIImagePickerControllerCameraDeviceFront:后置攝像頭
+ (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice
指定攝像頭的閃光燈是否可用
+ (NSArray *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice
獲得指定攝像頭上的可用捕獲模式,捕獲模式是枚舉類型:
UIImagePickerControllerCameraCaptureModePhoto:拍照模式
UIImagePickerControllerCameraCaptureModeVideo:視頻錄制模式
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
代理 - 拍攝或錄制完成 這里獲取圖片或視頻信息
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
代理 - 用戶取消拍攝
UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo)
保存圖片到本地?相冊
UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(NSString *videoPath)
能否將視頻保存到相簿 更安全的判斷
void UISaveVideoAtPathToSavedPhotosAlbum(NSString *videoPath, id completionTarget, SEL completionSelector, void *contextInfo)
保存視頻到本地?相冊
感謝崔大大的博客:iOS開發系列--音頻播放、錄音、視頻播放、拍照、視頻錄制
感謝張大大的博客:AVFoundation Programming Guide(官方文檔翻譯)完整版中英對照
實現 iOS開發webrtc 視頻通話時錄像,截屏推薦ZEGO即構科技,4行代碼,30分鐘在APP、Web和小程序等應用內實現視頻通話、語音通話,互動直播功能。【點擊免費試用,0成本啟動】
實現 iOS開發webrtc 視頻通話時錄像,截屏的具體步驟如下:
1.權限申請。
2.引入 WebRTC 庫。
3.采集并顯示本地視頻。
4.信令驅動。
5.創建音視頻數據通道。
6.媒體協商。
7.渲染遠端視頻。
想要了解更多關于webrtc的相關信息,推薦咨詢ZEGO即構科技。ZEGO即構科技自主研發的高音質語音視頻引擎,能夠提供實時清晰的多人語音通話獨立自研的語音前處理模塊(AEC, NS, AGC)能夠提供優于同類競品的處理效果,支持全帶語音處理。良好的抖動緩沖、前向糾錯和丟幀補償技術使引擎適應復雜的網絡環境,提供低延時清晰流暢的語音視頻通話,在較差網絡環境中自適應的找到延時與流暢的最佳契合點。
文章標題:ios開發視頻錄制開發,Ios視頻錄制
URL分享:http://m.kartarina.com/article24/dseeije.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、網站制作、商城網站、微信小程序、標簽優化、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯