關于iOS錄屏功能躺過的坑,給有需要的人

? ? ? ?最近因為團隊需要,所以抽空研究了一下iOS的錄屏功能,找到的資料很少,但是還是挺有用的,需要感謝大家的分享精神。我在這里就只想說一下需要注意的幾點問題。

1、由于我自建的項目是ARC模式的,所以在引入別人的“畫板”是MRC的相關代碼時,編譯不過,因為兼容問題,所以需要在Cocoapods的配置文件里面使用代碼更改,或者也可以在"Build Phases"設置中引入相關的文件(這種方式請百度)。下面是我配置的相關代碼截圖:

這是一些手動釋放的類,把相關路徑添加進來

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

視頻的數組也一樣這樣判斷

3、錄制成功后合成的文件大小決定關鍵presetName參數,我設置AVAssetExportPreset1280x720就已經足夠,因為后續要做成SDK給別人使用,所以我提供變量給別人傳遞,但是必須要用系統定義的,否則后果自負。

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

4、錄制音頻的格式要跟配置的參數一一對應,否則錄制失敗。比如wav格式的文件設置格式是kAudioFormatLinearPCM,caf的采樣頻率必須為kAudioFormatMPEG4AAC。當然這兩種音頻格式都可以合成MP4或者MOV文件。

一定要跟音頻擴展名是對應關系

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

視頻參數配置
畫布大小
每一幀的畫面的大小

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

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容