
image.png
- iOS上實(shí)現(xiàn)DLNA功能Github上搜一下大多是基于C++的Platinum,于是就想能不能靠OC實(shí)現(xiàn)一套方便iOS開發(fā)者.于是就有了MRDLNA這個(gè)庫.
- DLNA投屏的相關(guān)的介紹,協(xié)議,具體XML內(nèi)容就不細(xì)說了. 這里介紹一下 MRDLNA這個(gè)庫的投屏使用.
支持Pod安裝MRDLNA

image.png
一.搜索設(shè)備

image.png
設(shè)置好代理
self.dlnaManager = [MRDLNA sharedMRDLNAManager];
self.dlnaManager.delegate = self;
調(diào)用開始搜索后就會(huì)搜索整個(gè)局域網(wǎng)中支持投視頻的設(shè)備
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.dlnaManager startSearch];
}
二.發(fā)現(xiàn)設(shè)備后的回調(diào)
發(fā)現(xiàn)設(shè)備后在代理中可以拿到
- (void)searchDLNAResult:(NSArray *)devicesArray{
NSLog(@"發(fā)現(xiàn)設(shè)備");
self.deviceArr = devicesArray;
[self.dlnaTable reloadData];
}
//devicesArray中拿到的是CLUPnPDevice類型的對(duì)象
- Demo中將搜索頁面和投屏控制頁面分開來的,所以在搜索頁面搜索到設(shè)備后就把目標(biāo)設(shè)備和播放Url設(shè)置給了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;
}
/**
進(jìn)度條seek單位是秒
*/
- (IBAction)seekChanged:(UISlider *)sender{
NSInteger sec = sender.value * 60 * 60;
NSLog(@"播放進(jìn)度條======>: %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];
}