接下來優(yōu)匠科技給大家分享一下ios端的開發(fā)經(jīng)驗。
視頻編碼
短視頻app中如果不進(jìn)行視頻編碼的話,數(shù)據(jù)量就會非常大,造成存儲和傳輸困難,所以視頻文件通常都需要在錄制完成之后進(jìn)行編碼。視頻編碼主要從兩個維度進(jìn)行數(shù)據(jù)壓縮:
單張圖像某一區(qū)域相鄰像素相似,比如一片紅色只記錄紅色色值和區(qū)域,不用記錄這個區(qū)域的每一個像素點。
相鄰圖像之間內(nèi)容相似,因為相鄰兩幀要制造連續(xù)的效果,所以兩幀之間的內(nèi)容一般非常接近,目前主流的視頻編碼技術(shù)都是用圖像編碼方法對第一幀進(jìn)行編碼。
視頻格式
視頻的封裝格式主要有MP4、MOV、AVI、RMVB等,除了RMVB以外,其它格式內(nèi)封裝的視頻編碼格式都是采取H.264的編碼標(biāo)準(zhǔn),這也是最常用的編碼標(biāo)準(zhǔn),壓縮效率比MPEG-2提升了一倍多。但是相反,H.264的解碼難度提高了3倍。
視頻碼率
通常,視頻文件的大小/視頻的時長即定義為碼率。碼率和分辨率與視頻質(zhì)量之間的關(guān)系可以理解為以下幾點:
1.碼率可以理解為取樣率,單位時間內(nèi)取樣率越大,精度就越高,同時體積也越大。
2.當(dāng)視頻沒有經(jīng)過編碼時,如果分辨率越高,那么視頻圖像的細(xì)節(jié)越清晰。
3.但如果視頻經(jīng)過編碼,被限制在一定碼率內(nèi),編碼器就必須舍棄掉一部分細(xì)節(jié)。
所以分辨率和碼率都與視頻的清晰度有關(guān)。
視頻質(zhì)量
純粹的視頻(不包括音頻)實質(zhì)上就是一組幀圖片,經(jīng)過視頻編碼成為視頻文件再把音頻文件和字幕文件組裝在一起成為我們看到的視頻文件。1秒內(nèi)出現(xiàn)的圖片數(shù)就是幀率,圖片間隔越小畫面就越流暢,所以幀率越高效果就越好,需要的存儲空間也就越多。
軟解碼和硬解碼
H.264的視頻解碼給CPU造成了很大負(fù)擔(dān),所以通常會把這部分工作交給更善于進(jìn)行處理簡單工作但是數(shù)據(jù)量較大的GPU。
1.GPU解碼就是所謂的硬解碼
2.CPU解碼就是軟解碼。
3.iOS提供的播放器類使用的是硬解碼,所以視頻播放對CPU不會有很大的壓力,但是支持的播放格式比較單一。
以上就是在短視頻app開發(fā)過程中,ios端的相關(guān)經(jīng)驗分享。希望能給正在開發(fā)的朋友們提供一定的參考和幫助。