JXAVPlayer.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. //
  2. // JXAVPlayer.h
  3. // AICity
  4. //
  5. // Feature: 003-ios-api-https
  6. // 剧星AVPlayer封装类 - 头文件
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <AVFoundation/AVFoundation.h>
  10. NS_ASSUME_NONNULL_BEGIN
  11. /**
  12. * 播放监听器协议
  13. */
  14. @protocol JXAVPlayerDelegate <NSObject>
  15. @optional
  16. /// 播放器准备就绪
  17. - (void)playerDidReady;
  18. /// 开始播放
  19. - (void)playerDidStartPlaying;
  20. /// 暂停播放
  21. - (void)playerDidPause;
  22. /// 缓冲中
  23. - (void)playerDidBuffering;
  24. /// 播放结束
  25. - (void)playerDidFinishPlaying;
  26. /// 播放错误
  27. /// @param error 错误信息
  28. - (void)playerDidFailWithError:(NSError *)error;
  29. @end
  30. /**
  31. * 进度监听器协议
  32. */
  33. @protocol JXAVPlayerProgressDelegate <NSObject>
  34. /// 进度更新
  35. /// @param episodeId 剧集ID
  36. /// @param positionMs 当前位置(毫秒)
  37. /// @param durationMs 总时长(毫秒)
  38. /// @param progress 播放进度(0.0 - 1.0)
  39. /// @param isCompleted 是否已完成(progress >= 95%)
  40. - (void)playerDidUpdateProgress:(NSString *)episodeId
  41. positionMs:(NSTimeInterval)positionMs
  42. durationMs:(NSTimeInterval)durationMs
  43. progress:(CGFloat)progress
  44. isCompleted:(BOOL)isCompleted;
  45. @end
  46. /**
  47. * 剧星AVPlayer封装类
  48. *
  49. * 功能:
  50. * - AVPlayer初始化和配置
  51. * - 播放控制(播放、暂停、停止、seek)
  52. * - 播放进度跟踪和上报
  53. * - 播放状态监听
  54. * - 自动播放下一集
  55. */
  56. @interface JXAVPlayer : NSObject
  57. /// 播放器代理
  58. @property (nonatomic, weak, nullable) id<JXAVPlayerDelegate> delegate;
  59. /// 进度代理
  60. @property (nonatomic, weak, nullable) id<JXAVPlayerProgressDelegate> progressDelegate;
  61. /// AVPlayer实例
  62. @property (nonatomic, strong, readonly) AVPlayer *player;
  63. /// 当前剧集ID
  64. @property (nonatomic, strong, nullable) NSString *currentEpisodeId;
  65. /// 初始化
  66. - (instancetype)init;
  67. /// 播放视频
  68. /// @param url 播放地址
  69. /// @param episodeId 剧集ID
  70. /// @param startPosition 起始位置(秒)
  71. - (void)playVideoWithURL:(NSString *)url
  72. episodeId:(NSString *)episodeId
  73. startPosition:(NSTimeInterval)startPosition;
  74. /// 播放
  75. - (void)play;
  76. /// 暂停
  77. - (void)pause;
  78. /// 停止
  79. - (void)stop;
  80. /// 跳转到指定位置
  81. /// @param position 位置(秒)
  82. - (void)seekToPosition:(NSTimeInterval)position;
  83. /// 获取当前播放位置(秒)
  84. - (NSTimeInterval)getCurrentPosition;
  85. /// 获取视频总时长(秒)
  86. - (NSTimeInterval)getDuration;
  87. /// 获取当前播放进度(0.0 - 1.0)
  88. - (CGFloat)getProgress;
  89. /// 判断是否正在播放
  90. - (BOOL)isPlaying;
  91. /// 判断播放是否完成(播放进度 >= 95%)
  92. - (BOOL)isPlaybackCompleted;
  93. /// 手动上报当前进度(用于暂停、退出等场景)
  94. - (void)reportCurrentProgress;
  95. /// 释放资源
  96. - (void)releasePlayer;
  97. @end
  98. NS_ASSUME_NONNULL_END