美文网首页iOS音频、视频、直播相关iOS 视频直播视频直播
ios在线直播-->基于ijkplayer框架的进一步学习

ios在线直播-->基于ijkplayer框架的进一步学习

作者: Hither | 来源:发表于2016-06-18 17:14 被阅读1953次

在上一片文章中简单介绍了ijkplayer这个框架以及给出了一个例子。今天是继续深入学习ijkplayer这个框架的一天。😀😀😀

大家看看效果:

这个框架还是用的上一篇文章的 ,直接顺手拿过来。

看看整体的项目结构:

(1)还是按照习惯的做法,将UITableView的dataSource和delegate分离出来,方便自己写代码和以后的维护。

在delegate里面实现了列表滚动的3D动画效果:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.layer.transform = CATransform3DMakeScale(0.1, 0.1, 1);
    [UIView animateWithDuration:1 animations:^{
        cell.layer.transform = CATransform3DMakeScale(1, 1, 1);
    }];
}

(2)屏幕滚动 导航栏若隐若现

这里我使用KVO实现这个效果:

注册:
[_dataTableView addObserver: self forKeyPath: @"contentOffset" options: NSKeyValueObservingOptionNew context: nil];

实现的方法:
//KVO监听屏幕滚动
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
    UIPanGestureRecognizer* pan = _dataTableView.panGestureRecognizer;
    //获取到拖拽的速度 >0 向下拖动 <0 向上拖动
    CGFloat velocity = [pan velocityInView:_dataTableView].y;
    
    if (velocity<-5) {
        //向上拖动,隐藏导航栏
        [self.navigationController setNavigationBarHidden:true animated:true];
    }
    else if (velocity>5) {
        //向下拖动,显示导航栏
        [self.navigationController setNavigationBarHidden:false animated:true];
    }
    else if(velocity==0){
        //停止拖拽
    }
}

(3)讲讲播放

初始化player对象,并完成相关的设置

self.url = [NSURL URLWithString:_liveUrl];
_player = [[IJKFFMoviePlayerController alloc] initWithContentURL:self.url withOptions:nil];

注册通知&&移除通知

注册:
- (void)installMovieNotificationObservers {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(loadStateDidChange:)
                                                 name:IJKMPMoviePlayerLoadStateDidChangeNotification
                                               object:_player];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackFinish:)
                                                 name:IJKMPMoviePlayerPlaybackDidFinishNotification
                                               object:_player];
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(mediaIsPreparedToPlayDidChange:)
                                                 name:IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
                                               object:_player];
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackStateDidChange:)
                                                 name:IJKMPMoviePlayerPlaybackStateDidChangeNotification
                                               object:_player];
    
}
移除:
- (void)removeMovieNotificationObservers {
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:IJKMPMoviePlayerLoadStateDidChangeNotification
                                                  object:_player];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:IJKMPMoviePlayerPlaybackDidFinishNotification
                                                  object:_player];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
                                                  object:_player];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:IJKMPMoviePlayerPlaybackStateDidChangeNotification
                                                  object:_player];
}

Demo地址:https://github.com/hejintaochenxin/blue

注意下:因为git上传单个文件不能超过100M~ 所以我把这个从项目中剥离了出来 大家可以参考本文最上面的链接自己生成,或者可以私我,我直接发给你~你只需要把这个直接拖入项目就可以了~

在这里给大家推荐一个现在很牛叉的框架:SmarterStreaming

https://github.com/daniulive/SmarterStreaming

- 集成的时候需要注意:
(1)真机测试
(2)
1. 编译时找不到 libSmartPlayerSDK.a 时,请先到 SmartiOSPlayer/SmartiOSPlayer 目录, 解压libSmartPlayerSDK.zip.
2. 编译时找不到 libSmartPublisherSDK.a 时,请先到 SmartiOSPublisher/SmartiOSPublisher/libs 目录, 解压libSmartPublisherSDK.zip.

相关文章

网友评论

  • yx_yang:大神 我发现用你的这个demo播放的url是http://pul......这样的 可以正常播放,为什么我的rtmp://live-stream.......这样的就不能正常播放
  • Geeks_Chen:18519191125@163.com 感谢楼主的分享
  • developer_eric:有劳楼主,发一份 过来 357818547@qq.com
    还有请问一下我自己打包的IJKMediaFramework 拖到你的demo里怎么不能用啊
  • 简枫i:273001892@qq.com,麻烦楼主,非常感谢。
  • Schorem:975450858@qq.com 麻烦楼主
  • 唐岭云:楼主345684180@qq.com 麻烦了。谢谢
    Hither:@老司机丶 没事
    唐岭云:@PokerDady 谢谢 收到
    Hither:@老司机丶 注意查收
  • 我想走走:15936527501@163.com
    Hither:@峰峰爱码 才看到 不好意思 已经发了 注意查收
  • 我想走走:楼主,给我一份,我也想看看,谢谢楼主
  • c96ca2a17d23:博主,你的数据哪里来的啊,还有只可以看别人直播,假如我自己想直播呢 :smile:
    Hither:@老倌子 我这里只放了拉流的部分。没有放推流的部分。 数据是找的一个接口拿到的
  • 084e9f830d06:楼主,求demo,jiangchuanc@gmail.com ,谢谢 :relaxed:
    Hither:@orioChen 注意查收
  • 木阿哈哈哈:谢谢楼主,麻烦也给我发一份 2609719705@qq.com
    Hither:@木阿哈哈哈 注意查收
  • c3d44b02ea10:楼主辛苦了,给你一个爱的抱抱,1009105480@qq.com 麻烦 射一发 3q
    Hither:@闲石 注意查收
  • dengxf:有劳楼主,发一份 过来 178057869@qq.com
    Hither:@dengxf 注意查收
  • Qinz:麻烦楼主发一份:719263987@qq.com 感谢~
    Hither:@Qinz 没事的
    Qinz:@一个不放弃的人 收到了,感谢楼主
    Hither:@Qinz 注意查收
  • bd1ea43aac11:楼主470505348@qq.com 麻烦发一份, 最近正打算做直播这一方面谢谢
    Hither:@bd1ea43aac11 不好意思 才看到 已经发给你了
  • 你家毕老师:楼主,麻烦发我一份,1986721955@qq.com谢谢
    Hither:@骗人的孩纸 不好意思 才看到 已经发给你了
  • Ryan文濤:博主,好像只有播放,没有直播耶。什么时候弄一个直播的相关教程呀??
    Hither:@Ryan文濤 推的那部分没有弄上去。是我的失误
    Ryan文濤:@写代码我负责帅 只有播放端啊,没有采集端呀
    Hither:@Ryan文濤 这就是直播啊
  • Miu七七:楼主发我!好人一生平安!
    3185946965@qq.com
    Hither:@Miu七七 没事
    Miu七七:@写代码我负责帅 谢谢你
    Hither:@Miu七七 注意查收
  • 07ea6f318b75:楼主很帅,好人一生平安491956826@qq.com
    Hither:@看流星砸死你 注意查收
  • Civel_Xu:985515495@qq.com
    Hither:@Civel_Xu 没事
    Civel_Xu:@写代码我负责帅 谢谢
    Hither:@Civel_Xu 注意查收
  • Ryan文濤:有劳楼主,发一份 过来 234515201@qq.com
    谢谢楼主
    Hither:@Ryan文濤 没事
    Ryan文濤:@写代码我负责帅 好,谢谢。已经收到。
    Hither:@Ryan文濤 注意查收
  • 唯美帅哥集中营:有劳楼主,发一份 过来 1273892992@qq.com

    有劳楼主压缩分享一个连接可以让我们下载

  • a933a89d49a2:楼主597414708@qq.com 麻烦发一份, 现在我正好需要这方面得知识,xiexie
    a933a89d49a2:@写代码我负责帅 谢谢楼主, 已收到
    Hither:@简简简树树 注意查收
  • 2b1ed5b649ed:谢谢楼主,麻烦给我发一份 1776549643@qq.com
  • 王文广JustDoIt:楼主,592999374@qq.com 麻烦发一份,谢谢
    王文广JustDoIt:@王文广JustDoIt 不用了,自己集成了,谢谢楼主
  • Metoo33:楼主,能发一份过来嘛? 谢谢 1192157487@qq.com
  • 一抹果茶:楼主33745072@qq.com 麻烦发一份,现在我正好需要这方面得知识,谢谢楼主:kissing_heart:
    一抹果茶:@写代码我只负责帅 OK,谢谢
    Hither:@一抹果茶 注意查收
  • cad57841b896:楼楼,麻烦给我发一份674273581@qq.com 这几天想做关于解码器方面的东西头大..希望共同提高 = =
    cad57841b896:@写代码我只负责帅 谢谢 :kissing_heart:
    Hither:@漠漠漠漠漠颜 注意查收
  • 红尘困年少:谢谢楼主,请给我发一份 1029660589@qq.com
    红尘困年少:@写代码我只负责帅 收到了,感谢
    Hither:@红尘困年少 注意查收
  • 峰子1994:发一份给我可以不358244144@qq.com
    峰子1994: @写代码我只负责帅 好的
    Hither:@Claudlit 没事
    Hither:@峰子1994 注意查收
  • JHA:谢谢楼主344378540@qq.com
    Hither:@矫鸿安 注意查收
  • Claudlit:zhaohongbin_c@163.com 麻烦楼主发一份 谢谢楼主
    Claudlit:@写代码我只负责帅 已收到 谢谢楼主
    Hither:@Claudlit 注意查收
  • 买了否冷_:谢楼主 2514538850@qq.com
    Hither:@偷偷学很多东西 注意查收
    Hither:@偷偷学很多东西 明天给你发。今天下班了
  • 小小希奇幻记:楼主 757964954@qq.com 麻烦发一份给我!谢谢楼主!
    Hither:@370e705f738e 注意查收
  • xxttw:不错
    Hither:@Unc1eWang 共同学习

本文标题:ios在线直播-->基于ijkplayer框架的进一步学习

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