iOS DLNA投屏功能了解一下

作者: MccReeee | 来源:发表于2018-05-07 14:20 被阅读4146次
image.png
  • iOS上实现DLNA功能Github上搜一下大多是基于C++的Platinum,于是就想能不能靠OC实现一套方便iOS开发者.于是就有了MRDLNA这个库.
  • DLNA投屏的相关的介绍,协议,具体XML内容就不细说了. 这里介绍一下 MRDLNA这个库的投屏使用.

支持Pod安装MRDLNA

image.png

一.搜索设备

image.png
设置好代理
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];
}

相关文章

  • iOS DLNA投屏功能了解一下

    iOS上实现DLNA功能Github上搜一下大多是基于C++的Platinum,于是就想能不能靠OC实现一套方便i...

  • 投屏协议 DLNA ---UPnP

    投屏协议 DLNA ---UPnP 投屏的应用场景视频投屏 AirPlay(苹果私有的协议) 无线投屏DLNA(...

  • 投屏相关资料

    参考 1.Android DLNA投屏-基本原理 2.Android DLNA投屏-基于CyberGarage开发...

  • iOS DLNA投屏Demo

    功能 搜索设备 播放/暂停、退出投屏 切集 音量加减 进度条控制 投屏后的控制页面 注意 搜索设备如果没有结果,检...

  • 产品设计-无线DLAN投屏原理及应用

    无线投屏是在相同WIFI环境环境下,通过手机将音/视/图等信息投射至智能电视上。下面以DLNA为例讲解投屏功能。 ...

  • PhotoKit初用

    前言 我们公司做了一个DLNA的投屏软件,但是iOS是不能跨应用访问数据的,所以对于局域网投屏视频和图片需要把图片...

  • Android DLNA投屏-基于CyberGarage开发投屏

    在上一篇博客《Android DLNA投屏-基本原理》中,讲到了DLNA的一些基本原理。了解这些基本原理,对开发是...

  • DLNA投屏失败时添加<DIDL-Lite>标签

    在使用DLNA_UPnP 进行iOS投屏时发现失败失败信息是 解决办法是要加一个DIDL-Lite标签

  • B站镜像投屏教程

    B站镜像投屏教程 B站的视频大多数是不支持DLNA投屏的,因此我们只能使用镜像投屏的方式,将B站视频投屏大屏幕。常...

  • 对电视投屏的一点了解

    我发现很多人还不知道电视投屏是怎么一回事,就在此做个小科普。投屏一般分为DLNA投屏协议和Miracast镜像投屏...

网友评论

    本文标题:iOS DLNA投屏功能了解一下

    本文链接:https://www.haomeiwen.com/subject/qnlmrftx.html