-
iOS上實現DLNA功能Github上搜一下大多是基於C++的Platinum,於是就想能不能靠OC實現一套方便iOS開發者.於是就有了MRDLNA這個庫.
-
DLNA投屏的相關的介紹,協議,具體XML內容就不細說了. 這裡介紹一下 MRDLNA這個庫的投屏使用.
支援Pod安裝MRDLNA
一.搜尋裝置
設定好代理
self.dlnaManager = [MRDLNA sharedMRDLNAManager];
self.dlnaManager.delegate = self;
複製程式碼
呼叫開始搜尋後就會搜尋整個區域網中支援投視訊的裝置
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.dlnaManager startSearch];
}
複製程式碼
二.發現裝置後的回撥
發現裝置後在代理中可以拿到
- (void)searchDLNAResult:(NSArray *)devicesArray{
NSLog(@"發現裝置");
self.deviceArr = devicesArray;
[self.dlnaTable reloadData];
}
//devicesArray中拿到的是CLUPnPDevice型別的物件
複製程式碼
- Demo中將搜尋頁面和投屏控制頁面分開來的,所以在搜尋頁面搜尋到裝置後就把目標裝置和播放Url設定給了dlnaManager
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *testUrl = @"http://223.110.239.40:6060/cntvmobile/vod/p_cntvmobile00000000000020150518/m_cntvmobile00000000000659727681";
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if (indexPath.row < self.deviceArr.count) {
CLUPnPDevice *model = self.deviceArr[indexPath.row];
self.dlnaManager.device = model;
self.dlnaManager.playUrl = testUrl;
DLNAControlVC *controlVC = [[DLNAControlVC alloc] init];
controlVC.model = model;
[self.navigationController pushViewController:controlVC animated:YES];
}
}
複製程式碼
三.投屏
- (void)viewDidLoad {
[super viewDidLoad];
self.dlnaManager = [MRDLNA sharedMRDLNAManager];
[self.dlnaManager startDLNA];
}
複製程式碼
四.投屏後的播放控制
/**
退出
*/
- (IBAction)closeAction:(id)sender {
[self.dlnaManager endDLNA];
}
/**
播放/暫停
*/
- (IBAction)playOrPause:(id)sender {
if (_isPlaying) {
[self.dlnaManager dlnaPause];
}else{
[self.dlnaManager dlnaPlay];
}
_isPlaying = !_isPlaying;
}
/**
進度條seek單位是秒
*/
- (IBAction)seekChanged:(UISlider *)sender{
NSInteger sec = sender.value * 60 * 60;
NSLog(@"播放進度條======>: %zd",sec);
[self.dlnaManager seekChanged:sec];
}
/**
音量volume建議傳0-100之間字串
*/
- (IBAction)volumeChange:(UISlider *)sender {
NSString *vol = [NSString stringWithFormat:@"%.f",sender.value * 100];
NSLog(@"音量========>: %@",vol);
[self.dlnaManager volumeChanged:vol];
}
/**
切集
*/
- (IBAction)playNext:(id)sender {
NSString *testVideo = @"http://wvideo.spriteapp.cn/video/2016/0328/56f8ec01d9bfe_wpd.mp4";
[self.dlnaManager playTheURL:testVideo];
}
複製程式碼