精品国产亚洲一区二区三区|亚洲国产精彩中文乱码AV|久久久久亚洲AV综合波多野结衣|漂亮少妇各种调教玩弄在线

<blockquote id="ixlwe"><option id="ixlwe"></option></blockquote>
  • <span id="ixlwe"></span>

  • <abbr id="ixlwe"></abbr>

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

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

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

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

      (1)AVCaptureSession%20+%20AVCaptureMovieFileOutput

    1.%20創(chuàng)建%20AVCaptureSession

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

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

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

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

    5.開(kāi)始采集

    6.開(kāi)始錄制

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

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

    7.停止錄制

    8.停止采集

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

      (2)AVCaptureSession + AVAssetWriter

    1.創(chuàng)建 AVCaptureSession

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

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

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

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

    5.開(kāi)始采集

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

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

    6.開(kāi)始錄制

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

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

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

    8.停止錄制

    9.停止采集

    兩種方案對(duì)比:

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

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

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

    1.聚焦處理

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

    2.攝像頭切換

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

    極客網(wǎng)企業(yè)會(huì)員

    免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

    2020-04-28
    【融云分析】基于 AVFoundation 框架開(kāi)發(fā)小視頻功能的方案解析
    開(kāi)發(fā)視頻錄制功能最簡(jiǎn)單的就是使用系統(tǒng)封裝的 UIImagePickerController,但是這種方式比較封閉,可自定義東西比較少,所以就需要基于 AVFou

    長(zhǎng)按掃碼 閱讀全文