音視頻開發(fā)相關(guān)資料

編碼就是按照一定的格式記錄采樣和量化后的數(shù)據(jù).

編碼中軟編碼和硬編碼的區(qū)別?

硬編碼,就是使用GPU計(jì)算,獲取數(shù)據(jù)結(jié)果,優(yōu)點(diǎn)速度快,效率高.

軟編碼,就是通過CPU來(lái)計(jì)算,獲取數(shù)據(jù)結(jié)果.

壓縮算法分為2種,有損壓縮與無(wú)損壓縮.

解碼:將壓縮的數(shù)據(jù)還原

. 直播APP需求剖析

2.1 直播項(xiàng)目流程

在直播項(xiàng)目中,一般常見有8個(gè)步驟.

  • 音視頻采集
  • 視頻濾鏡
  • 音視頻編碼
  • 推流
  • 流媒體服務(wù)器處理
  • 拉流
  • 音視頻解碼
  • 音視頻播放
屏幕快照 2019-04-24 下午3.25.52.png
  • 采集視頻,音頻

  • 使用iOS原生框架 AVFoundation.framework

  • 視頻濾鏡處理

  • 使用iOS原生框架 CoreImage.framework

  • 使用第三方框架 GPUImage.framework

CoreImageGPUImage 框架比較: 在實(shí)際項(xiàng)目開發(fā)中,開發(fā)者更加傾向使用于GPUImage框架. 首先它在使用性能上與iOS提供的原生框架,并沒有差別;其次它的使用便利性高于iOS原生框架,最后也是最重要的GPUImage框架是開源的.而大家如果想要學(xué)習(xí)GPUImage框架,建議學(xué)習(xí)OpenGL ES,其實(shí)GPUImage的封裝和思維都是基于OpenGL ES.

視頻和音頻分開編碼的

視頻**音頻編碼壓縮

  • 硬編碼

  • 視頻: VideoToolBox框架

  • 音頻: AudioToolBox 框架

  • 軟編碼

  • 視頻: 使用FFmpeg,X264算法把視頻原數(shù)據(jù)YUV/RGB編碼成H264

  • 音頻: 使用fdk_aac 將音頻數(shù)據(jù)PCM轉(zhuǎn)換成AAC

推流

  • 推流: 將采集的音頻.視頻數(shù)據(jù)通過流媒體協(xié)議發(fā)送到流媒體服務(wù)器

  • 推流技術(shù)

  • 流媒體協(xié)議: RTMP\RTSP\HLS\FLV

  • 視頻封裝格式: TS\FLV

  • 音頻封裝格式: Mp3\AAC

流媒體服務(wù)器

  • 數(shù)據(jù)分發(fā)
  • 截屏
  • 實(shí)時(shí)轉(zhuǎn)碼
  • 內(nèi)容檢測(cè)

拉流

  • 拉流: 從流媒體服務(wù)器中獲取音頻\視頻數(shù)據(jù)
  • 流媒體協(xié)議: RTMP\RTSP\HLS\FLV

音視頻解碼

  • 硬解碼

  • 視頻: VideoToolBox框架

  • 音頻: AudioToolBox 框架

  • 軟解碼

  • 視頻: 使用FFmpeg,X264算法解碼

  • 音頻: 使用fdk_aac 解碼

播放

  • ijkplayer 播放框架
  • kxmovie 播放框架

ijkplayer,kxmovie 都是基于FFmpeg框架封裝的

H264壓縮的視頻文件。vlc可以播放、先解碼再播放

視頻、和音頻怎么同步的?

根據(jù)時(shí)間戳來(lái)實(shí)現(xiàn)同步

1秒播放16張圖片 fps 播放速度

視頻壓縮的原理:IPB

  • I幀: 保留了一張完整視頻幀. 解碼關(guān)鍵!(幀內(nèi)預(yù)測(cè)壓縮)
  • P幀: 先前參考幀.差異數(shù)據(jù).解碼需要依賴于I幀
  • B幀: 雙向參考幀,解碼時(shí)既需要I幀,也需要P幀!

花屏:解碼出現(xiàn)錯(cuò)誤就是花屏問題、解決:當(dāng)出現(xiàn)錯(cuò)誤就不去顯示、等待下一段視頻出來(lái)接顯示、出來(lái)的問題是卡頓;

幀:圖片

幀間預(yù)測(cè)壓縮:一組圖片壓縮

幀內(nèi)預(yù)測(cè)壓縮:一張圖片壓縮

H.264碼流在網(wǎng)絡(luò)中傳輸時(shí)實(shí)際是以NALU的形式進(jìn)行傳輸?shù)?

1、SPS :序列參數(shù)集、PPS:圖像參數(shù)集

2、寫入文件

3、NSLU

大端:讀取內(nèi)存的方式、

小端:

大端 轉(zhuǎn)小端 CFSwapInt32HostToBig

iOS 系統(tǒng)默認(rèn)的是小端模式

參考與:老師

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。