零基礎(chǔ)學(xué)習(xí)iOS直播之播放
對于直播來說,客戶端主要做兩件事情,推流和播放。今天先講播放。
播放流程
- 拉流:服務(wù)器已有直播內(nèi)容,從指定地址進行拉取的過程。其實就是向服務(wù)器請求數(shù)據(jù)。
- 解碼:對視屏數(shù)據(jù)進行解壓縮。
- 渲染:生成圖片的過程。視屏其實就是一張張連續(xù)的圖片進行切換,一張圖片就是一幀。幀率顧名思義就是每秒顯示的圖片數(shù),當(dāng)幀率達到16時,人眼就會認為是流暢的。是不是很神奇。
這里的每個步驟能弄明白都可以成為人才了,如果還能解決其中的不足,那你就是尖端人才了。弄懂這些需要耗費大量的時間,還好有ijkplayer視屏直播框架,有了它,即時你不懂這些過程,也可以進行直播播放,大神真多。
ijkplayer視屏直播框架
ijkplayer視屏直播框架下載地址,這是開源的,喜歡研究源碼的同學(xué)可以去下載,,基于ffmpeg,同時支持iOS和Android,非常強大。上述的三個過程它全給你做好了,只要你集成到自己工程里,就能實現(xiàn)播放直播了。
&emsp ;集成到自己的工程中,最好先打包,我這里用打包好的debug模式下的,可以去http://xiazai.jb51.net/201612/yuanma/IJKMediaFramework.framework_jb51.rar下載。怎么集成的,同學(xué)們可以去看這篇文章《詳解iOS中集成ijkplayer視頻直播框架》。和導(dǎo)入第三方庫一樣,導(dǎo)入到自己工程中,同時還要添加依賴的動態(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]; // 實例化播放器,傳入拉流地址即可 _playerVC = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:nil]; // 準備播放 準備好了自動播放 [_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)閉播放時,要停止播放器,否則會崩潰 [_playerVC pause]; [_playerVC stop]; }
就這么幾行代碼,播放就實現(xiàn)了我們僅僅是傳了一個拉流地址。這個框架簡直是太強大了,自動幫我們完成了拉流、解碼、渲染,我們什么都不用做,B站的工程師真是很🐂,剩下的送禮物、聊天室慢慢集成。
demo下載
demo下載地址。下載下來運行,發(fā)現(xiàn)報錯。
那是因為我沒有在工程里上傳ijkplayer視屏直播框架,我能上傳上去,但下載太慢了,什么原因大家都懂得。我把ijkplayer視屏直播框架放到http://xiazai.jb51.net/201612/yuanma/IJKMediaFramework.framework_jb51.rar上了,下載下來之后,放到LiveAppDemo-master文件夾里,重新打開就可以運行了。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!