軟編碼:實(shí)現(xiàn)直接、簡單拧额,參數(shù)調(diào)整方便碑诉,升級易,但CPU負(fù)載重势腮,性能較硬編碼低
性能高联贩,對CPU沒有壓力,但是對其他硬件要求較高(如GPU等)
硬編碼 Gpu等非cpu編碼 ? 用 VideoToolBox框架
編碼流程: 采集--> 獲取到視頻幀--> 對視頻幀進(jìn)行編碼 --> 獲取到視頻幀信息 --> 將編碼后的數(shù)據(jù)以NALU方式寫入到文件
編碼方式:H.264編碼
幀率:每秒鐘多少幀畫面
碼率:單位時(shí)間內(nèi)保存的數(shù)據(jù)量
關(guān)鍵幀(GOPsize)間隔:多少幀為一個GOP
當(dāng)編碼成功后捎拯,將編碼后的碼流寫入文件
編碼成功后會回調(diào)之前輸入的函數(shù)
1> 先判斷是否是關(guān)鍵幀:
如果是關(guān)鍵幀,則需要在寫入關(guān)鍵幀之前,先寫入PPS署照、SPS的NALU
取出PPS祸泪、SPS數(shù)據(jù),并且封裝成NALU單元建芙,寫入文件
2> 將I幀没隘、P幀、B幀分別封裝成NALU單元寫入文件
寫入后禁荸,數(shù)據(jù)存儲方式:
硬解碼
軟編碼?
軟編碼主要是利用CPU進(jìn)行編碼的過程, 具體的編碼通常會用FFmpeg+x264
iOS項(xiàng)目中集成FFmpeg
將編譯好的文件夾拖入到工程中添加依賴庫: libiconv.dylib/libz.dylib/libbz2.dylib/CoreMedia.framework/AVFoundation.framework
FFmpeg編碼兩個重要的類
AVFormat
保存的是解碼后和原始的音視頻信息
AVPacket
解碼完成的數(shù)據(jù)及附加信息(解碼時(shí)間戳右蒲、顯示時(shí)間戳、時(shí)長等
軟解碼---用到openGl? 把解碼的數(shù)據(jù)用openGl渲染出來
01-(掌握)FFmpeg介紹和Mac下使用
07-(掌握)服務(wù)器-購買
08-(掌握)服務(wù)器-搭建配置
09-(掌握)服務(wù)器-HLS支持
04-LFLiveKit-----推流框架(直接能獲取到相機(jī))----推到服務(wù)器(服務(wù)器地址)
05-kxMovie的使用(1.服務(wù)器推流? ? 2.kxMovie獲取地址進(jìn)行播放 3.基于FFmpeg)
06-IJKPlayer的使用(1.服務(wù)器推流? ? 2.IJKPlayer獲取地址進(jìn)行播放)
07-HelloOpenGL-----渲染畫面用的