ZQPlayer.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //
  2. // ZQPlayer.h
  3. // ZQPlayer
  4. //
  5. // Created by wang on 2018/3/30.
  6. // Copyright © 2018年 qigge. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <AVFoundation/AVFoundation.h>
  10. #import <UIKit/UIKit.h>
  11. typedef NS_ENUM(NSUInteger, ZQPlayerState) {
  12. ZQPlayerStateReadyToPlay, // 播放器准备完毕
  13. ZQPlayerStatePlaying, // 正在播放
  14. ZQPlayerStatePause, // 暂停
  15. ZQPlayerStateStop, // 播放完毕
  16. ZQPlayerStateBufferEmpty, // 缓冲中
  17. ZQPlayerStateKeepUp, // 缓冲完成
  18. ZQPlayerStateFailed, // 播放器准备失败、网络原因,格式原因
  19. };
  20. @class ZQPlayer;
  21. @protocol ZQPlayerDelegate <NSObject>
  22. @optional
  23. /**
  24. 播放器状态变化
  25. @param player 播放器
  26. @param state 状态
  27. */
  28. - (void)ZQPlayerStateChange:(ZQPlayer *)player state:(ZQPlayerState)state;
  29. /**
  30. 视频源开始加载后调用 ,返回视频的长度
  31. @param player 播放器
  32. @param time 长度(秒)
  33. */
  34. - (void)ZQPlayerTotalTime:(ZQPlayer *)player totalTime:(CGFloat)time;
  35. /**
  36. 视频源加载时调用 ,返回视频的缓冲长度
  37. @param player 播放器
  38. @param time 长度(秒)
  39. */
  40. - (void)ZQPlayerLoadTime:(ZQPlayer *)player loadTime:(CGFloat)time;
  41. /**
  42. 播放时调用,返回当前时间
  43. @param player 播放器
  44. @param time 播放到当前的时间(秒)
  45. */
  46. - (void)ZQPlayerCurrentTime:(ZQPlayer *)player currentTime:(CGFloat)time;
  47. @end
  48. @interface ZQPlayer : NSObject
  49. /** 使用播放源进行初始化 */
  50. - (instancetype)initWithUrl:(NSString *)url;
  51. /** 下一首 */
  52. - (void)nextWithUrl:(NSString *)url;
  53. /** 播放 */
  54. - (void)play;
  55. /** 暂停 */
  56. - (void)pause;
  57. /** 停止 */
  58. - (void)stop;
  59. @property (nonatomic, copy) NSString *playUrl;
  60. // 是否正在播放
  61. @property (nonatomic, assign, readonly) BOOL isPlaying;
  62. // 是否在缓冲
  63. @property (nonatomic, assign, readonly) BOOL isBuffering;
  64. /** 视频音频长度 */
  65. @property (nonatomic, assign) CGFloat timeInterval;
  66. /** 代理 */
  67. @property (nonatomic, weak) id<ZQPlayerDelegate> delegate;
  68. // 播放器
  69. @property (nonatomic, strong) AVPlayer *player;
  70. @property (nonatomic, strong) AVPlayerItem *playerItme;
  71. @property (nonatomic, strong) AVPlayerLayer *playerLayer;
  72. @end