天天看點

純OC實作iOS DLNA投屏功能了解一下

  • 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];
}
複制代碼
           

轉載于:https://juejin.im/post/5aeff0af518825672033fb12

下一篇: Linux DLNA

繼續閱讀