關(guān)于iOS錄屏功能躺過的坑,給有需要的人

? ? ? ?最近因?yàn)閳F(tuán)隊(duì)需要,所以抽空研究了一下iOS的錄屏功能,找到的資料很少,但是還是挺有用的,需要感謝大家的分享精神。我在這里就只想說一下需要注意的幾點(diǎn)問題。

1、由于我自建的項(xiàng)目是ARC模式的,所以在引入別人的“畫板”是MRC的相關(guān)代碼時(shí),編譯不過,因?yàn)榧嫒輪栴},所以需要在Cocoapods的配置文件里面使用代碼更改,或者也可以在"Build Phases"設(shè)置中引入相關(guān)的文件(這種方式請(qǐng)百度)。下面是我配置的相關(guān)代碼截圖:

這是一些手動(dòng)釋放的類,把相關(guān)路徑添加進(jìn)來

2、在音頻和視頻合成的方法里面,根據(jù)本地路徑讀取到文件后,需要先哪array判斷下,不然在某一個(gè)條件為空的情況下會(huì)引起崩潰。如下:

視頻的數(shù)組也一樣這樣判斷

3、錄制成功后合成的文件大小決定關(guān)鍵presetName參數(shù),我設(shè)置AVAssetExportPreset1280x720就已經(jīng)足夠,因?yàn)楹罄m(xù)要做成SDK給別人使用,所以我提供變量給別人傳遞,但是必須要用系統(tǒng)定義的,否則后果自負(fù)。

合成成功后把輸入地址傳遞出去

4、錄制音頻的格式要跟配置的參數(shù)一一對(duì)應(yīng),否則錄制失敗。比如wav格式的文件設(shè)置格式是kAudioFormatLinearPCM,caf的采樣頻率必須為kAudioFormatMPEG4AAC。當(dāng)然這兩種音頻格式都可以合成MP4或者M(jìn)OV文件。

一定要跟音頻擴(kuò)展名是對(duì)應(yīng)關(guān)系

5、錄制畫面幀傳遞的size=self.captureLayer.bounds.size很關(guān)鍵,創(chuàng)建畫布的時(shí)候取size的大小,但是設(shè)置視頻參數(shù)用 videoSize = CGSizeMake(tmpsize.width*scaleFactor, tmpsize.height*scaleFactor);其中float scaleFactor = [[UIScreen mainScreen] scale]; ?如下:

視頻參數(shù)配置
畫布大小
每一幀的畫面的大小

如果這些地方不設(shè)置對(duì)的話會(huì)導(dǎo)致播放的畫面發(fā)送拉扯擠壓,或者是后面CFDataGetBytes(image, CFRangeMake(0, CFDataGetLength(image)), destPixels)方法發(fā)生崩潰。

6、就是真機(jī)播放MP4文件的問題,如果平板或者手機(jī)上有下載“王者榮耀”的游戲,請(qǐng)先關(guān)掉再重啟系統(tǒng),不然沒法播放你錄制的視頻文件。

就寫到這里,放假了,有不對(duì)的地方歡迎指正。

錄屏Demo? 這是錄屏Demo,聲明非我原創(chuàng),我只是做了調(diào)整和修改,給有需要的童鞋!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容