零基礎(chǔ)學(xué)習(xí)iOS直播之播放
對(duì)于直播來說,客戶端主要做兩件事情,推流和播放。今天先講播放。
播放流程
- 拉流:服務(wù)器已有直播內(nèi)容,從指定地址進(jìn)行拉取的過程。其實(shí)就是向服務(wù)器請(qǐng)求數(shù)據(jù)。
- 解碼:對(duì)視屏數(shù)據(jù)進(jìn)行解壓縮。
- 渲染:生成圖片的過程。視屏其實(shí)就是一張張連續(xù)的圖片進(jìn)行切換,一張圖片就是一幀。幀率顧名思義就是每秒顯示的圖片數(shù),當(dāng)幀率達(dá)到16時(shí),人眼就會(huì)認(rèn)為是流暢的。是不是很神奇。
這里的每個(gè)步驟能弄明白都可以成為人才了,如果還能解決其中的不足,那你就是尖端人才了。弄懂這些需要耗費(fèi)大量的時(shí)間,還好有ijkplayer視屏直播框架,有了它,即時(shí)你不懂這些過程,也可以進(jìn)行直播播放,大神真多。
ijkplayer視屏直播框架
ijkplayer視屏直播框架下載地址,這是開源的,喜歡研究源碼的同學(xué)可以去下載,,基于ffmpeg,同時(shí)支持iOS和Android,非常強(qiáng)大。上述的三個(gè)過程它全給你做好了,只要你集成到自己工程里,就能實(shí)現(xiàn)播放直播了。
&emsp ;集成到自己的工程中,最好先打包,我這里用打包好的debug模式下的,可以去http://xiazai.jb51.net/201612/yuanma/IJKMediaFramework.framework_jb51.rar下載。怎么集成的,同學(xué)們可以去看這篇文章《詳解iOS中集成ijkplayer視頻直播框架》。和導(dǎo)入第三方庫一樣,導(dǎo)入到自己工程中,同時(shí)還要添加依賴的動(dòng)態(tài)庫。

直播

#import "FHLiveViewController.h"
#import <IJKMediaFramework/IJKMediaFramework.h>
#import <UIImageView+WebCache.h>
// ijk下載地址: https://pan.baidu.com/s/1c2p9D0s
@interface FHLiveViewController ()
// 播放器
@property (nonatomic, strong) IJKFFMoviePlayerController *playerVC;
@end
@implementation FHLiveViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 隱藏導(dǎo)航欄
[self.navigationController.navigationBar setHidden:YES];
// 設(shè)置背景色
[self.view setBackgroundColor:[UIColor whiteColor]];
// 拉流地址
NSURL *url = [NSURL URLWithString:self.liveUrl];
// 實(shí)例化播放器,傳入拉流地址即可
_playerVC = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:nil];
// 準(zhǔn)備播放 準(zhǔn)備好了自動(dòng)播放
[_playerVC prepareToPlay];
// 設(shè)置播放器尺寸
_playerVC.view.frame = [[UIScreen mainScreen] bounds];
[self.view addSubview:_playerVC.view];
// 設(shè)置填充模式:鋪滿
[_playerVC setScalingMode:IJKMPMovieScalingModeAspectFill];
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
// 關(guān)閉播放時(shí),要停止播放器,否則會(huì)崩潰
[_playerVC pause];
[_playerVC stop];
}
就這么幾行代碼,播放就實(shí)現(xiàn)了我們僅僅是傳了一個(gè)拉流地址。這個(gè)框架簡直是太強(qiáng)大了,自動(dòng)幫我們完成了拉流、解碼、渲染,我們什么都不用做,B站的工程師真是很🐂,剩下的送禮物、聊天室慢慢集成。
demo下載
demo下載地址。下載下來運(yùn)行,發(fā)現(xiàn)報(bào)錯(cuò)。

那是因?yàn)槲覜]有在工程里上傳ijkplayer視屏直播框架,我能上傳上去,但下載太慢了,什么原因大家都懂得。我把ijkplayer視屏直播框架放到http://xiazai.jb51.net/201612/yuanma/IJKMediaFramework.framework_jb51.rar上了,下載下來之后,放到LiveAppDemo-master文件夾里,重新打開就可以運(yùn)行了。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
iOS之點(diǎn)擊通知欄的通知進(jìn)入程序的觸發(fā)事件
本文主要介紹了iOS中點(diǎn)擊通知欄的通知進(jìn)入程序的觸發(fā)事件的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
IOS 上架后出現(xiàn)90034代碼錯(cuò)誤問題解決
這篇文章主要介紹了IOS 上架后出現(xiàn)90034代碼錯(cuò)誤問題解決的相關(guān)資料,需要的朋友可以參考下2016-11-11

