【目錄】
- 如何開發出一款仿映客直播APP專案實踐篇 -【原理篇】
- 如何開發出一款仿映客直播APP專案實踐篇 -【採集篇 】
- 如何開發出一款仿映客直播APP專案實踐篇 -【伺服器搭建+推流】
- 如何開發出一款仿映客直播APP專案實踐篇 -【播放篇】
本篇主要講解的是直播app中,需要用到的一個很重要的開源框架ijkplayer)的使用,開發一款直播app,整合ijkplayer成功後,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦
1.推薦自己把IJKMediaPlayer打包成靜態庫,在匯入到自己的專案中。
整合對於初學者很麻煩 想自己整合的請看這個部落格:iOS中整合ijkplayer視訊直播框架
我自己打包了ijkplayer一個庫,用於除錯和釋出(DEBUG和Release),點選下載;
(另外有分開的兩個版本庫,分別用於除錯和釋出(DEBUG和Release),點選下載)
2.直接把下載好的ijkplayer靜態庫拖入到自己的工程中,
除錯的話,拖入ijkplayer靜態庫
3.匯入ijkplayer依賴的庫,具體可以檢視ijkplayer的README
新增庫
【使用ijkplayer直播】
1.ijkplayer用法簡介
ijkplayer用法比較簡單,其實只要有直播地址,就能直播了
注意:最好真機測試,模擬器測試比較卡,不流暢,真機就沒有問題了
2.抓取資料
映客直播地址:
#define URL @"http://116.211.167.106/api/live/aggregation?uid=133825214&interest=1"
在ViewListViewController.h中載入tableView資料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
-(void)loadData{ self.manager = [AFHTTPSessionManager manager]; self.manager.responseSerializer = [AFHTTPResponseSerializer serializer]; self.manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", nil]; [self.manager POST:URL parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { id obj =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSLog(@"viewListData:%@",obj); _dataArry = [YZLiveItem mj_objectArrayWithKeyValuesArray:obj[@"lives"]]; [_tableView reloadData]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"error:%@",error); }]; } |
3.獲取拉流url,直播介面LiveViewController.h
1 2 3 4 5 6 7 8 |
// 拉流地址 NSURL *url = [NSURL URLWithString:_item.stream_addr]; _ijkLiveVeiw = [[IJKFFMoviePlayerController alloc]initWithContentURL:url withOptions:nil]; _ijkLiveVeiw.view.frame = SCREEN; [_ijkLiveVeiw prepareToPlay]; [self.view addSubview:_ijkLiveVeiw.view]; |
4.結束播放
LiveViewController.h介面消失不播放,一定要記得結束播放,否則會報記憶體溢位
1 2 3 4 5 6 7 8 |
-(void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:YES]; if (_ijkLiveVeiw) { [_ijkLiveVeiw pause]; [_ijkLiveVeiw stop]; [_ijkLiveVeiw shutdown]; } } |
效果圖:
程式碼地址:
Object-C版:gitHub : https://github.com/one-tea/ZKKLiveDemo
Swift版: GitHub地址:https://github.com/one-tea/ZKKLiveAPP_Swift3.0