SJIJKMediaPlaybackController.m 2.8 KB

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