當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  編程技術(shù) >  正文

【融云分析】基于 AVFoundation 框架開發(fā)小視頻功能的方案解析

 2020-04-28 18:55  來源: 互聯(lián)網(wǎng)   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過

開發(fā)視頻錄制功能最簡(jiǎn)單的就是使用系統(tǒng)封裝的 UIImagePickerController,但是這種方式比較封閉,可自定義東西比較少,所以就需要基于 AVFoundation 框架來開發(fā)視頻錄制功能。基于 AVFoundation 框架來開發(fā),則需要自己手動(dòng)設(shè)置設(shè)備音頻,視頻輸入、輸出。

AVCaptureSession 是 AVFoundation 的核心類,用于管理捕獲對(duì)象 AVCaptureInput 的視頻和音頻的輸入,協(xié)調(diào)捕獲的輸出 AVCaptureOutput。AVCaptureOutput 的輸出有兩種方法:一種是直接以 movieFileUrl 方式輸出;一種是以原始數(shù)據(jù)流 data 的方式輸出,流程對(duì)比圖如下:

下面詳細(xì)講解兩種錄制視頻的方案:

(1 )AVCaptureSession + AVCaptureMovieFileOutput

1. 創(chuàng)建 AVCaptureSession

注意:AVCaptureSession 的調(diào)用是會(huì)阻塞線程的,建議單獨(dú)開辟子線程處理。

2. 設(shè)置音頻、視頻輸入

3. 設(shè)置文件輸出源

4.添加視頻預(yù)覽層

5.開始采集

6.開始錄制

當(dāng)實(shí)際的錄制開始或停止時(shí),系統(tǒng)會(huì)有代理回調(diào)。當(dāng)開始錄制之后,這時(shí)可能還沒有真正寫入,真正開始寫入會(huì)回調(diào)下面代理,停止錄制也是如此,所以如果你需要對(duì)錄制視頻起始點(diǎn)操作,建議通過系統(tǒng)的回調(diào)代理:

7.停止錄制

8.停止采集

(2 )AVCaptureSession + AVAssetWriter

1.創(chuàng)建 AVCaptureSession

2.設(shè)置音頻、視頻輸入

3.設(shè)置音頻 Data、視頻 Data 輸出

4.添加視頻預(yù)覽層

5.開始采集

和第一種方式不同,第一種方式是開始錄制之后,movieFileOutput 的回調(diào)才會(huì)觸發(fā),停止錄制回調(diào)觸發(fā)之后也就完成了。AVCaptureSession + AVAssetWriter 方式因?yàn)樵谠O(shè)置輸出源的時(shí)候,把輸出代理 (setSampleBufferDelegate)已經(jīng)設(shè)置好了,所以一旦開始采集(startRunning),數(shù)據(jù)流回調(diào)也就觸發(fā)了。

6.開始錄制

這里需要?jiǎng)?chuàng)建AVAssetWriter,配置音頻、視頻錄制參數(shù),錄制寫入過程要單獨(dú)開辟線程處理,避免阻塞線程,可以和 AVCaptureSession 放在同一線程處理。

7.處理數(shù)據(jù)流

開始采集,數(shù)據(jù)流就會(huì)回調(diào),所以這里用了變量 isRecording 來界定當(dāng)前是否需要對(duì)數(shù)據(jù)處理,一般是在 startRecord 和 stopRecord 才會(huì)去處理數(shù)據(jù)流。

8.停止錄制

9.停止采集

兩種方案對(duì)比:

相同點(diǎn):他們的數(shù)據(jù)采集都是通過 AVCaptureSession 處理,音頻視頻的輸入源也是一致的,畫面預(yù)覽一致。

不同點(diǎn):輸出源不一樣,前者輸出是 fileUrl,也就是說在視頻寫入完成之前開發(fā)者無法操作處理;后者輸出是 data,AVAssetWriter 需要拿到 AVCaptureVideoDataOutput 和 AVCaptureAudioDataOutput 兩個(gè)單獨(dú)的輸出,然后分別處理再寫入指定路徑。輸出方式不同,決定了開發(fā)者對(duì)視頻處理剪裁壓縮的方式也就不同,前者如果需要對(duì)視頻剪裁壓縮,就需要從本地取出完整的視頻文件,再做處理;而 AVAssetWriter 拿到的是數(shù)據(jù)流 data,如果需要剪裁壓縮,可以直接配置相關(guān)參數(shù)后處理數(shù)據(jù)流,這樣寫入本地的就是已經(jīng)處理過的視頻文件。

其他功能點(diǎn)擴(kuò)充

1.聚焦處理

2.攝像頭切換

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
軟件開發(fā)

相關(guān)文章

  • 遠(yuǎn)光軟件出席央國(guó)企智慧司庫(kù)建設(shè)實(shí)踐論壇

    3月16日,由中國(guó)總會(huì)計(jì)師協(xié)會(huì)指導(dǎo),中國(guó)總會(huì)計(jì)師協(xié)會(huì)信息化分會(huì)主辦的“央國(guó)企智慧司庫(kù)建設(shè)實(shí)踐論壇”在北京召開。遠(yuǎn)光軟件集團(tuán)客戶事業(yè)部總經(jīng)理原娟娟受邀出席論壇,作《數(shù)智司庫(kù)賦能管理創(chuàng)造價(jià)值》主題演講,分享遠(yuǎn)光軟件在央國(guó)企集團(tuán)司庫(kù)建設(shè)上的前沿探索與創(chuàng)新實(shí)踐。2022年初,國(guó)務(wù)院國(guó)資委制定發(fā)布了《關(guān)于推動(dòng)

    標(biāo)簽:
    軟件開發(fā)
  • 再次上榜!麒麟軟件榮獲“中國(guó)年度最佳雇主-天津最佳雇主”

    近日,“出發(fā)!職場(chǎng)多元宇宙”2022中國(guó)年度最佳雇主頒獎(jiǎng)盛典-天津站成功舉辦。麒麟軟件憑借在人才培養(yǎng)與發(fā)展等方面的突出表現(xiàn)榮獲“2022中國(guó)年度最佳雇主-天津最佳雇主”獎(jiǎng)項(xiàng)。本次獲評(píng),是麒麟軟件2021年度獲得“年度最佳雇主-最具智造精神雇主”后再次榮登最佳雇主獎(jiǎng)項(xiàng)榜單,是評(píng)委會(huì)對(duì)麒麟軟件通過卓越的

    標(biāo)簽:
    軟件開發(fā)
  • 國(guó)際認(rèn)可 東軟通過ISO 26262功能安全管理體系最高等級(jí)認(rèn)證

    近日,東軟集團(tuán)正式通過ISO26262功能安全管理體系A(chǔ)SILD等級(jí)認(rèn)證,獲得由國(guó)際獨(dú)立第三方檢測(cè)、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國(guó)萊茵TüV頒發(fā)的認(rèn)證證書,標(biāo)志著東軟在汽車電子領(lǐng)域的功能安全管理過程、系統(tǒng)開發(fā)流程、硬件開發(fā)流程、軟件開發(fā)流程、支持過程、ASIL的功能安全分析等方面獲得國(guó)際最高等級(jí)的權(quán)威認(rèn)可。IS

    標(biāo)簽:
    軟件開發(fā)
  • 東軟集團(tuán)與盛京金控集團(tuán)聯(lián)合成立健康醫(yī)療數(shù)據(jù)公司

    近日,由東軟集團(tuán)與盛京金控集團(tuán)聯(lián)合組建的“沈陽(yáng)健康醫(yī)療數(shù)據(jù)有限公司”正式成立。該公司將秉承“政府授權(quán)、國(guó)有控股、企業(yè)運(yùn)營(yíng)”的原則,旨在通過互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等新一代信息技術(shù)和平臺(tái)的連接,充分釋放健康醫(yī)療數(shù)據(jù)要素的價(jià)值,支撐健康醫(yī)療服務(wù)產(chǎn)業(yè)數(shù)字化和數(shù)字產(chǎn)業(yè)化進(jìn)程,催生相關(guān)產(chǎn)業(yè)新經(jīng)濟(jì)形態(tài)。

    標(biāo)簽:
    軟件開發(fā)
  • 超150萬生態(tài)支撐,麒麟軟件推動(dòng)重點(diǎn)行業(yè)解決方案落地

    2022年10月,黨的二十大報(bào)告多次提及信息安全問題,強(qiáng)調(diào)健全新型舉國(guó)體制,強(qiáng)化國(guó)家戰(zhàn)略科技力量,提升國(guó)家創(chuàng)新體系整體效能。不久前發(fā)布的“數(shù)據(jù)二十條”探索并構(gòu)建了數(shù)據(jù)產(chǎn)權(quán)、流通交易、收益分配、安全治理等四項(xiàng)制度。

    標(biāo)簽:
    軟件開發(fā)

熱門排行

信息推薦