SJIJKMediaPlaybackController.m 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // SJIJKMediaPlaybackController.m
  3. // SJVideoPlayer_Example
  4. //
  5. // Created by BlueDancer on 2019/10/12.
  6. // Copyright © 2019 changsanjiang. All rights reserved.
  7. //
  8. #import "SJIJKMediaPlaybackController.h"
  9. #import "SJIJKMediaPlayerLayerView.h"
  10. #import "IJKMediaFramework/IJKMediaPlayer.h"
  11. #if __has_include(<SJUIKit/SJRunLoopTaskQueue.h>)
  12. #import <SJUIKit/SJRunLoopTaskQueue.h>
  13. #else
  14. #import "SJRunLoopTaskQueue.h"
  15. #endif
  16. NS_ASSUME_NONNULL_BEGIN
  17. @interface SJIJKMediaPlaybackController ()
  18. @end
  19. @implementation SJIJKMediaPlaybackController
  20. @dynamic currentPlayer;
  21. - (IJKFFOptions *)options {
  22. if (_options == nil) {
  23. _options = IJKFFOptions.optionsByDefault;
  24. // 可选设置:开启重连
  25. [_options setOptionIntValue:0 forKey:@"reconnect" ofCategory:kIJKFFOptionCategoryPlayer];
  26. [_options setOptionIntValue:0 forKey:@"reconnect" ofCategory:kIJKFFOptionCategoryFormat];
  27. [_options setOptionIntValue:1 forKey:@"loglevel" ofCategory:kIJKFFOptionCategoryPlayer];
  28. }
  29. return _options;
  30. }
  31. - (void)playerWithMedia:(SJVideoPlayerURLAsset *)media completionHandler:(void (^)(id<SJMediaPlayer> _Nullable))completionHandler {
  32. __weak typeof(self) _self = self;
  33. SJRunLoopTaskQueue.main.enqueue(^{
  34. __strong typeof(_self) self = _self;
  35. if (!self) {
  36. return;
  37. }
  38. SJIJKMediaPlayer *player = [SJIJKMediaPlayer.alloc initWithURL:media.mediaURL startPosition:media.startPosition options:self.options];
  39. player.pauseWhenAppDidEnterBackground = self.pauseWhenAppDidEnterBackground;
  40. if (completionHandler) {
  41. completionHandler(player);
  42. }
  43. });
  44. }
  45. - (UIView<SJMediaPlayerView> *)playerViewWithPlayer:(SJIJKMediaPlayer *)player {
  46. return [SJIJKMediaPlayerLayerView.alloc initWithPlayer:player];
  47. }
  48. - (void)setPauseWhenAppDidEnterBackground:(BOOL)pauseWhenAppDidEnterBackground {
  49. [super setPauseWhenAppDidEnterBackground:pauseWhenAppDidEnterBackground];
  50. self.currentPlayer.pauseWhenAppDidEnterBackground = pauseWhenAppDidEnterBackground;
  51. }
  52. #pragma mark -
  53. - (void)setMinBufferedDuration:(NSTimeInterval)minBufferedDuration {
  54. #ifdef DEBUG
  55. NSLog(@"%d \t %s \t 未实现该方法!", (int)__LINE__, __func__);
  56. #endif
  57. }
  58. - (NSTimeInterval)durationWatched {
  59. #ifdef DEBUG
  60. NSLog(@"%d \t %s \t 未实现该方法!", (int)__LINE__, __func__);
  61. #endif
  62. return 0;
  63. }
  64. - (SJPlaybackType)playbackType {
  65. #ifdef DEBUG
  66. NSLog(@"%d \t %s \t 未实现该方法!", (int)__LINE__, __func__);
  67. #endif
  68. return SJPlaybackTypeUnknown;
  69. }
  70. @end
  71. NS_ASSUME_NONNULL_END