前段時(shí)間在github偶然看到了一個(gè)推流的的工程,出于興趣拜讀了一下源碼;
其中也發(fā)現(xiàn)了一些問(wèn)題; 不知道作者是出于什么樣的目的沒(méi)有修復(fù)這些問(wèn)題,在這里我羅列了一下并修復(fù)相關(guān)問(wèn)題 ;
修復(fù)后的倉(cāng)庫(kù)地址
https://github.com/hunter858/PushStreamSDK
視頻問(wèn)題:
1.視頻在AWAVCaptureTypeSystem + 軟編碼模式下, 視頻條狀馬賽克
2.視頻在AWAVCaptureTypeSystem + 硬編碼模式下,畫面底部出現(xiàn)綠邊
3.視頻在AWAVCaptureTypeGPUImage + 軟編碼模式下,畫面卡住不動(dòng)
4.視頻在AWAVCaptureTypeGPUImage + 硬編碼模式下,畫面條狀馬賽克
音頻問(wèn)題:
- 音頻在
AWAudioEncoderTypeHWAACLC模式下,聲音不連續(xù) - 音頻在
AWAudioEncoderTypeSWFAAC模式下,聲音有雜言和顫音
問(wèn)題1:視頻在AWAVCaptureTypeSystem + 軟編碼 模式下,視頻條狀馬賽克

問(wèn)題原因:
出現(xiàn)該問(wèn)題的原因是,項(xiàng)目中采集到的視頻幀率為720x1280;
但是在送入軟編碼器的實(shí)際數(shù)據(jù)是 768x1280,768 是Y分量 BytesPerRow的長(zhǎng)度;
問(wèn)題2: 視頻在AWAVCaptureTypeSystem +硬編碼 模式下,畫面底部出現(xiàn)綠邊

問(wèn)題原因:
出現(xiàn)該問(wèn)題的原因是,pixeBuffer轉(zhuǎn)NSData 然后NSData再轉(zhuǎn)回YUV類型的pixeBuffer的過(guò)程中,Y分量的數(shù)據(jù)拷貝的實(shí)際長(zhǎng)度是768,代碼邏輯中配置的為videoConfig的寬度720導(dǎo)致的;
問(wèn)題3: 視頻在AWAVCaptureTypeGPUImage + 軟編碼模式下,畫面卡住不動(dòng)
問(wèn)題原因:
原有代碼在AudioToolBox音頻編碼的過(guò)程中,創(chuàng)建的aw_flv_audio_tag對(duì)象實(shí)際不包含音頻數(shù)據(jù),所以導(dǎo)致推的視頻流實(shí)際沒(méi)有音頻流,從而導(dǎo)致畫面卡住,修復(fù)該編碼邏輯或渠道正確的PCM數(shù)據(jù)即可;

問(wèn)題4: 視頻在AWAVCaptureTypeGPUImage + 硬編碼模式下,畫面花屏

問(wèn)題原因:
問(wèn)題的原因是在使用 GPUImage框架,獲取的到的ARGB數(shù)據(jù)在轉(zhuǎn)YUV數(shù)據(jù)的過(guò)程中 數(shù)據(jù)拷貝有問(wèn)題 ,且libYUV框架的使用ARGBToNV12() 參數(shù)設(shè)置也有問(wèn)題,和上面的問(wèn)題屬于同一類型的bug,y_stride不是正確的值導(dǎo)致的,修復(fù)該問(wèn)題即可正常顯示 美顏后視頻幀;
問(wèn)題5: 音頻在AWAudioEncoderTypeHWAACLC 模式下,聲音不連續(xù)
問(wèn)題原因:
在送入編碼器的PCM數(shù)據(jù)未控制在 1024的樣點(diǎn)的整數(shù)倍;應(yīng)該在轉(zhuǎn)碼輸入之前開(kāi)辟一個(gè)PCM的buffer緩沖區(qū),將傳入數(shù)據(jù)控制在1024個(gè)樣點(diǎn)即可解決問(wèn)題
問(wèn)題6: 音頻在 AWAudioEncoderTypeSWFAAC 模式下,顫音
該問(wèn)題還在修復(fù)中....
該問(wèn)題還在修復(fù)中....
該問(wèn)題還在修復(fù)中....
其它關(guān)于項(xiàng)目的一些關(guān)鍵技術(shù)講解可以看原作者的文章,這里不贅述了
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(一)項(xiàng)目介紹
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(二)代碼架構(gòu)概述
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(三)使用系統(tǒng)接口捕獲音視頻
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(四)如何使用GPUImage,如何美顏
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(五)yuv、pcm數(shù)據(jù)的介紹和獲取
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(六)h264、aac、flv介紹
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(七)h264/aac 硬編碼
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(八)h264/aac 軟編碼* 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(九)flv 編碼與音視頻時(shí)間戳同步
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(十)librtmp使用介紹
- 1小時(shí)學(xué)會(huì):最簡(jiǎn)單的iOS直播推流(十一)sps&pps和AudioSpecificConfig介紹(完結(jié))