视屏播放(直播)

来源:互联网 发布:招聘数据统计分析表 编辑:程序博客网 时间:2024/05/18 05:50

本文主要是用B站开源播放框架ijkplayer实现的,对ijkplayer不了解的同学可以自己百度下,本文只讲使用,不讲原理。

首先得把ijkplayer打包成framework.静态库,然后托到项目中去使用。

项目主要是基于ijkplayer 的. 最好是打包成framework. 原本我准备写一个打包教程, 不过后来在简书上发现了一篇特别详细的打包blog, 分享给大家: http://www.jianshu.com/p/1f06b27b3ac0.

如果你不想打包,请在IJKMediaFramework.framework处下载

1.加载播放

- (IJKFFMoviePlayerController *)player{    if (!_player) {        // 播放视频        NSString *path = @"login_video";//播放地址,也可以是网络地址        IJKFFMoviePlayerController *player = [[IJKFFMoviePlayerController alloc] initWithContentURLString:[[NSBundle mainBundle] pathForResource:path ofType:@"mp4"] withOptions:[IJKFFOptions optionsByDefault]];        // 设计player        player.view.frame = self.view.bounds;        // 填充fill        player.scalingMode = IJKMPMovieScalingModeAspectFill;        [self.view addSubview:player.view];        // 设置自动播放        player.shouldAutoplay = NO;        // 准备播放        [player prepareToPlay];                _player = player;    }    return _player;}
监听播放状态
- (void)initObserver{    // 监听视频是否播放完成    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinish) name:IJKMPMoviePlayerPlaybackDidFinishNotification object:nil];    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stateDidChange) name:IJKMPMoviePlayerLoadStateDidChangeNotification object:nil];}

播放完之后, 继续重播

- (void)didFinish{    // 播放完之后, 继续重播    [self.player play];}

播放状态改变

- (void)stateDidChange{    if ((self.player.loadState & IJKMPMovieLoadStatePlaythroughOK) != 0) {        if (!self.player.isPlaying) {            self.coverView.frame = self.view.bounds;            [self.view insertSubview:self.coverView atIndex:0];            [self.player play];            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{                self.thirdView.hidden = NO;                self.quickBtn.hidden = NO;            });        }    }}
如果要跳转到其它页面,请先闭播放

[self.playerstop];

[self.player.viewremoveFromSuperview];

 self.player =nil;

如果有更好的开源直播框架欢迎猿友指出来。

0 0
原创粉丝点击