最近做iOS開(kāi)發(fā)的時(shí)候,用的一個(gè)ZFPlayer(基于AVPlayer)突然有的視頻不能播放,但是Android可以播放。
后端開(kāi)發(fā)也不能解決,就開(kāi)始了換播放器的思路。
接下來(lái)就開(kāi)始講述我的踩坑之旅:
1.首先嘗試用B站的ijkplayer(Android用的就是這個(gè)),在各種踩坑(主要是動(dòng)態(tài)庫(kù)的集成)后,集成后(其實(shí)讓視頻能播放),發(fā)現(xiàn)那些播放暫停UI和橫豎屏貌似不好使。
2.看到ZFPlayer里面有 Test Version?可以用,結(jié)果他也是集成的IJK,完美解決。
完成線上bug后,開(kāi)始研究竟什么原因:
寫的有些天馬行空,有時(shí)間慢慢整理,不懂請(qǐng)自行Google并且腦補(bǔ)
漸進(jìn)式下載和實(shí)時(shí)流媒體
常見(jiàn)的流媒體協(xié)議: HLS(蘋果基于HTTP開(kāi)發(fā)的流媒體協(xié)議),RTMP(Adobe的私有協(xié)議),MMS(微軟).
1 HLS的流媒體通過(guò)AVPlayer(h265不支持)/AVPlayerViewController和MPMviePlayerController/MPMoviePlayerViewController來(lái)實(shí)現(xiàn).
2 RTMP的流媒體要用第三方框架實(shí)現(xiàn)如FFMpeg,IJKPlayer和VLC等
3常用的流媒體框架:百度/阿里/騰訊/網(wǎng)易/斗魚(yú)直播伴侶/七牛云等
參考鏈接
http://blog.csdn.net/zhonggaorong/article/details/52174981
https://tieba.baidu.com/p/5171120382
阿里云視頻存儲(chǔ)使用時(shí)可以根據(jù)不同的推流端或播放端能,使用如下組合:
l推流進(jìn)行H.265編碼,并使用擴(kuò)展的RTMP協(xié)議,上傳H.265直播流,云端轉(zhuǎn)成不同碼率的H.265和H.264,并輸出HLS,標(biāo)準(zhǔn)RTMP,擴(kuò)展RTMP,標(biāo)準(zhǔn)HTTPFLV,擴(kuò)展HTTPFLV,供不同解碼能能力和網(wǎng)絡(luò)帶寬的終端觀看。
l推流使用H.264編碼,云端將H.264轉(zhuǎn)碼成不同碼率的H.264和H.265碼流,輸出HLS,標(biāo)準(zhǔn)RTMP,擴(kuò)展RTMP,標(biāo)準(zhǔn)HTTPFLV,擴(kuò)展HTTPFLV,供不同解碼能力和網(wǎng)絡(luò)帶寬的終端觀看。
1同樣的畫(huà)質(zhì)和同樣的碼率,H.265比H2.64占用的存儲(chǔ)空間要少理論50%。
2如果存儲(chǔ)空間一樣大,那么意味著,在一樣的碼率下H.265會(huì)比H2.64畫(huà)質(zhì)要高一些理論值是30%~40%
據(jù)說(shuō)H.265能節(jié)省一半帶寬,但需要機(jī)器更強(qiáng)的運(yùn)算能力。有興趣看一下erightsoft公司的super Media Converter Encoder軟件,可以轉(zhuǎn)換視頻文件到H.265
1、PCM形成原理以及過(guò)程
2、AAC編碼原理
3、iOS音頻硬編碼
4、FFmpeg將H264以及AAC合成MP4文件過(guò)程