SailorHub

iOS-音视频(二十七) : 基于ijkplayer 视频流播放

之前开始使用ijk进行了一些简单的播放器实现,不过因为项目需要,所以又重新花了一些时间完善了一个demo

主要是对工具栏的逻辑进行了优化,顺便封装了一下,不过第一次做播放器,难免在一些地方有所疏漏,而且时间仓促,一些细节部分暂时还未完善。 

主要的一些文件:(参考ijk自带demo) 

 

首先在工具栏部分主要是以下的一些东西 

包含了工具栏的自动消失以及工具栏上面的button的初始化(这部分还没有做autolayout,全屏后工具栏暂时未优化)

 

#import <UIKit/UIKit.h>

 

@protocol IJKMediaPlayback;

 

@interface PlayerViewControl : UIControl

@property (weak, nonatomic) id<IJKMediaPlayback> delegatePlayer;

 

@property (strong, nonatomic) UIButton* switchBut;

@property (strong, nonatomic) UISlider* slider;

@property (strong, nonatomic) UILabel * timer;

@property (strong, nonatomic) UIButton* danmakuBut;

@property (strong, nonatomic) UIButton* fullScreenBut;

@property (strong, nonatomic) UIButton* playBut;

@property (strong, nonatomic) UIView* overlay;

@property (strong, nonatomic) UIView* buttomlay;

 

@property (strong, nonatomic) UIActivityIndicatorView* indicator;

– (void)refreshPlayerContrl;

– (void)showNoFade;

– (void)showAndFade;

– (void)hide;

 

– (void)beginDragMediaSlider;

– (void)endDragMediaSlider;

– (void)continueDragMediaSlider;

 

@end

 

因为要像bilibili那样能过最小化播放,于是在之前的基础上进行了修改,把ijkplayer封装成了一个uiview类型,之前的demo里面是一个controller:主要实现的还是播放器加载,以及全屏、切换源等逻辑(那个滑动调节音量和亮度的需要真机测试。。。没试过行不行)

 

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

#import <IJKMediaFramework/IJKMediaFramework.h>

#import “PlayerViewControl.h”

@class PlayerViewControl;

 

@interface PlayerViewController : UIView

@property (atomic, strong) NSURL *url;

@property (atomic, retain) id <IJKMediaPlayback> player;

@property (strong, nonatomic) PlayerViewControl *playerControl;

@property (strong, nonatomic) UIView *playerView;

 

– (instancetype)initWithURL:(NSURL*)url withFrame:(CGRect)frame;

 

@end

 

另外,我把ijk必要notification部分分离了出来,方便维护和增加功能

 

#import “PlayerViewController.h”

 

@interface PlayerViewController (Notification)

 

– (void)setupNotification;

 

– (void)removeNotification;

 

 

@end

 

需要调用的时候就只需要:

 

PlayerViewController *vc = [[PlayerViewController alloc] initWithURL:[NSURL URLWithString:@”http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8] withFrame:CGRectMake(0, 64, self.view.frame.size.width, 200)];

 

[self.view addSubview:vc];

就可以了。当然,这只是简单的封装,更多需求自然要自己增加

 

详细的代码可以下载我的demo进行参考:

demo链接:http://download.csdn.net/detail/atomic123/9414750

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注