純OC實現iOS DLNA投屏功能瞭解一下

千里桑發表於2019-03-04
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];
}
複製程式碼

相關文章