فهرست منبع

add framework

Caijinglong 6 سال پیش
والد
کامیت
ae740e288f

+ 1 - 0
.gitattributes

@@ -0,0 +1 @@
+ios/IJKMediaFramework.framework filter=lfs diff=lfs merge=lfs -text

+ 79 - 0
ios/IJKMediaFramework.framework/Headers/IJKAVMoviePlayerController.h

@@ -0,0 +1,79 @@
+/*
+ * IJKAVMoviePlayerController.h
+ *
+ * Copyright (c) 2014 Bilibili
+ * Copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/*
+ File: AVPlayerDemoPlaybackViewController.h
+ Abstract: UIViewController managing a playback view, thumbnail view, and associated playback UI.
+ Version: 1.3
+
+ Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
+ Inc. ("Apple") in consideration of your agreement to the following
+ terms, and your use, installation, modification or redistribution of
+ this Apple software constitutes acceptance of these terms.  If you do
+ not agree with these terms, please do not use, install, modify or
+ redistribute this Apple software.
+
+ In consideration of your agreement to abide by the following terms, and
+ subject to these terms, Apple grants you a personal, non-exclusive
+ license, under Apple's copyrights in this original Apple software (the
+ "Apple Software"), to use, reproduce, modify and redistribute the Apple
+ Software, with or without modifications, in source and/or binary forms;
+ provided that if you redistribute the Apple Software in its entirety and
+ without modifications, you must retain this notice and the following
+ text and disclaimers in all such redistributions of the Apple Software.
+ Neither the name, trademarks, service marks or logos of Apple Inc. may
+ be used to endorse or promote products derived from the Apple Software
+ without specific prior written permission from Apple.  Except as
+ expressly stated in this notice, no other rights or licenses, express or
+ implied, are granted by Apple herein, including but not limited to any
+ patent rights that may be infringed by your derivative works or by other
+ works in which the Apple Software may be incorporated.
+
+ The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
+ MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
+ THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
+ OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+ IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
+ MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
+ AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
+ STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Copyright (C) 2014 Apple Inc. All Rights Reserved.
+
+ */
+
+#import "IJKMediaPlayback.h"
+
+@interface IJKAVMoviePlayerController : NSObject <IJKMediaPlayback>
+
+- (id)initWithContentURL:(NSURL *)aUrl;
+- (id)initWithContentURLString:(NSString *)aUrl;
++ (id)getInstance:(NSString *)aUrl;
+
+@end

+ 65 - 0
ios/IJKMediaFramework.framework/Headers/IJKFFMonitor.h

@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016 Bilibili
+ * Copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <Foundation/Foundation.h>
+
+@interface IJKFFMonitor : NSObject
+
+- (instancetype)init;
+
+@property(nonatomic) NSDictionary *mediaMeta;
+@property(nonatomic) NSDictionary *videoMeta;
+@property(nonatomic) NSDictionary *audioMeta;
+
+@property(nonatomic, readonly) int64_t   duration;   // milliseconds
+@property(nonatomic, readonly) int64_t   bitrate;    // bit / sec
+@property(nonatomic, readonly) float     fps;        // frame / sec
+@property(nonatomic, readonly) int       width;      // width
+@property(nonatomic, readonly) int       height;     // height
+@property(nonatomic, readonly) NSString *vcodec;     // video codec
+@property(nonatomic, readonly) NSString *acodec;     // audio codec
+@property(nonatomic, readonly) int       sampleRate;
+@property(nonatomic, readonly) int64_t   channelLayout;
+
+@property(nonatomic) NSString *vdecoder;
+
+@property(nonatomic) int       tcpError;
+@property(nonatomic) NSString *remoteIp;
+
+@property(nonatomic) int       httpError;
+@property(nonatomic) NSString *httpUrl;
+@property(nonatomic) NSString *httpHost;
+@property(nonatomic) int       httpCode;
+@property(nonatomic) int64_t   httpOpenTick;
+@property(nonatomic) int64_t   httpSeekTick;
+@property(nonatomic) int       httpOpenCount;
+@property(nonatomic) int       httpSeekCount;
+@property(nonatomic) int64_t   lastHttpOpenDuration;
+@property(nonatomic) int64_t   lastHttpSeekDuration;
+@property(nonatomic) int64_t   filesize;
+
+@property(nonatomic) int64_t   prepareStartTick;
+@property(nonatomic) int64_t   prepareDuration;
+@property(nonatomic) int64_t   firstVideoFrameLatency;
+@property(nonatomic) int64_t   lastPrerollStartTick;
+@property(nonatomic) int64_t   lastPrerollDuration;
+
+@end

+ 160 - 0
ios/IJKMediaFramework.framework/Headers/IJKFFMoviePlayerController.h

@@ -0,0 +1,160 @@
+/*
+ * IJKFFMoviePlayerController.h
+ *
+ * Copyright (c) 2013 Bilibili
+ * Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import "IJKMediaPlayback.h"
+#import "IJKFFMonitor.h"
+#import "IJKFFOptions.h"
+#import "IJKSDLGLViewProtocol.h"
+
+// media meta
+#define k_IJKM_KEY_FORMAT         @"format"
+#define k_IJKM_KEY_DURATION_US    @"duration_us"
+#define k_IJKM_KEY_START_US       @"start_us"
+#define k_IJKM_KEY_BITRATE        @"bitrate"
+
+// stream meta
+#define k_IJKM_KEY_TYPE           @"type"
+#define k_IJKM_VAL_TYPE__VIDEO    @"video"
+#define k_IJKM_VAL_TYPE__AUDIO    @"audio"
+#define k_IJKM_VAL_TYPE__UNKNOWN  @"unknown"
+
+#define k_IJKM_KEY_CODEC_NAME      @"codec_name"
+#define k_IJKM_KEY_CODEC_PROFILE   @"codec_profile"
+#define k_IJKM_KEY_CODEC_LONG_NAME @"codec_long_name"
+
+// stream: video
+#define k_IJKM_KEY_WIDTH          @"width"
+#define k_IJKM_KEY_HEIGHT         @"height"
+#define k_IJKM_KEY_FPS_NUM        @"fps_num"
+#define k_IJKM_KEY_FPS_DEN        @"fps_den"
+#define k_IJKM_KEY_TBR_NUM        @"tbr_num"
+#define k_IJKM_KEY_TBR_DEN        @"tbr_den"
+#define k_IJKM_KEY_SAR_NUM        @"sar_num"
+#define k_IJKM_KEY_SAR_DEN        @"sar_den"
+// stream: audio
+#define k_IJKM_KEY_SAMPLE_RATE    @"sample_rate"
+#define k_IJKM_KEY_CHANNEL_LAYOUT @"channel_layout"
+
+#define kk_IJKM_KEY_STREAMS       @"streams"
+
+typedef enum IJKLogLevel {
+    k_IJK_LOG_UNKNOWN = 0,
+    k_IJK_LOG_DEFAULT = 1,
+
+    k_IJK_LOG_VERBOSE = 2,
+    k_IJK_LOG_DEBUG   = 3,
+    k_IJK_LOG_INFO    = 4,
+    k_IJK_LOG_WARN    = 5,
+    k_IJK_LOG_ERROR   = 6,
+    k_IJK_LOG_FATAL   = 7,
+    k_IJK_LOG_SILENT  = 8,
+} IJKLogLevel;
+
+@interface IJKFFMoviePlayerController : NSObject <IJKMediaPlayback>
+
+- (id)initWithContentURL:(NSURL *)aUrl
+             withOptions:(IJKFFOptions *)options;
+
+- (id)initWithContentURLString:(NSString *)aUrlString
+                   withOptions:(IJKFFOptions *)options;
+
+- (id)initWithMoreContent:(NSURL *)aUrl
+             withOptions:(IJKFFOptions *)options
+              withGLView:(UIView<IJKSDLGLViewProtocol> *)glView;
+
+- (id)initWithMoreContentString:(NSString *)aUrlString
+                 withOptions:(IJKFFOptions *)options
+                  withGLView:(UIView<IJKSDLGLViewProtocol> *)glView;
+
+- (void)prepareToPlay;
+- (void)play;
+- (void)pause;
+- (void)stop;
+- (BOOL)isPlaying;
+- (int64_t)trafficStatistic;
+- (float)dropFrameRate;
+
+- (void)setPauseInBackground:(BOOL)pause;
+- (BOOL)isVideoToolboxOpen;
+
+#pragma mark for flutter
+- (CVPixelBufferRef)framePixelbuffer;
+- (void)framePixelbufferLock;
+- (void)framePixelbufferUnlock;
+
+- (void)setHudValue:(NSString *)value forKey:(NSString *)key;
+
++ (void)setLogReport:(BOOL)preferLogReport;
++ (void)setLogLevel:(IJKLogLevel)logLevel;
++ (BOOL)checkIfFFmpegVersionMatch:(BOOL)showAlert;
++ (BOOL)checkIfPlayerVersionMatch:(BOOL)showAlert
+                            version:(NSString *)version;
+
+@property(nonatomic, readonly) CGFloat fpsInMeta;
+@property(nonatomic, readonly) CGFloat fpsAtOutput;
+@property(nonatomic) BOOL shouldShowHudView;
+
+- (void)setOptionValue:(NSString *)value
+                forKey:(NSString *)key
+            ofCategory:(IJKFFOptionCategory)category;
+
+- (void)setOptionIntValue:(int64_t)value
+                   forKey:(NSString *)key
+               ofCategory:(IJKFFOptionCategory)category;
+
+
+
+- (void)setFormatOptionValue:       (NSString *)value forKey:(NSString *)key;
+- (void)setCodecOptionValue:        (NSString *)value forKey:(NSString *)key;
+- (void)setSwsOptionValue:          (NSString *)value forKey:(NSString *)key;
+- (void)setPlayerOptionValue:       (NSString *)value forKey:(NSString *)key;
+
+- (void)setFormatOptionIntValue:    (int64_t)value forKey:(NSString *)key;
+- (void)setCodecOptionIntValue:     (int64_t)value forKey:(NSString *)key;
+- (void)setSwsOptionIntValue:       (int64_t)value forKey:(NSString *)key;
+- (void)setPlayerOptionIntValue:    (int64_t)value forKey:(NSString *)key;
+
+@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> segmentOpenDelegate;
+@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> tcpOpenDelegate;
+@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> httpOpenDelegate;
+@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> liveOpenDelegate;
+
+@property (nonatomic, retain) id<IJKMediaNativeInvokeDelegate> nativeInvokeDelegate;
+
+- (void)didShutdown;
+
+#pragma mark KVO properties
+@property (nonatomic, readonly) IJKFFMonitor *monitor;
+
+@end
+
+#define IJK_FF_IO_TYPE_READ (1)
+void IJKFFIOStatDebugCallback(const char *url, int type, int bytes);
+void IJKFFIOStatRegister(void (*cb)(const char *url, int type, int bytes));
+
+void IJKFFIOStatCompleteDebugCallback(const char *url,
+                                      int64_t read_bytes, int64_t total_size,
+                                      int64_t elpased_time, int64_t total_duration);
+void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
+                                            int64_t read_bytes, int64_t total_size,
+                                            int64_t elpased_time, int64_t total_duration));

+ 75 - 0
ios/IJKMediaFramework.framework/Headers/IJKFFOptions.h

@@ -0,0 +1,75 @@
+/*
+ * IJKFFOptions.h
+ *
+ * Copyright (c) 2013-2015 Bilibili
+ * Copyright (c) 2013-2015 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <Foundation/Foundation.h>
+
+typedef enum IJKFFOptionCategory {
+    kIJKFFOptionCategoryFormat = 1,
+    kIJKFFOptionCategoryCodec  = 2,
+    kIJKFFOptionCategorySws    = 3,
+    kIJKFFOptionCategoryPlayer = 4,
+    kIJKFFOptionCategorySwr    = 5,
+} IJKFFOptionCategory;
+
+// for codec option 'skip_loop_filter' and 'skip_frame'
+typedef enum IJKAVDiscard {
+    /* We leave some space between them for extensions (drop some
+     * keyframes for intra-only or drop just some bidir frames). */
+    IJK_AVDISCARD_NONE    =-16, ///< discard nothing
+    IJK_AVDISCARD_DEFAULT =  0, ///< discard useless packets like 0 size packets in avi
+    IJK_AVDISCARD_NONREF  =  8, ///< discard all non reference
+    IJK_AVDISCARD_BIDIR   = 16, ///< discard all bidirectional frames
+    IJK_AVDISCARD_NONKEY  = 32, ///< discard all frames except keyframes
+    IJK_AVDISCARD_ALL     = 48, ///< discard all
+} IJKAVDiscard;
+
+struct IjkMediaPlayer;
+
+@interface IJKFFOptions : NSObject
+
++(IJKFFOptions *)optionsByDefault;
+
+-(void)applyTo:(struct IjkMediaPlayer *)mediaPlayer;
+
+- (void)setOptionValue:(NSString *)value
+                forKey:(NSString *)key
+            ofCategory:(IJKFFOptionCategory)category;
+
+- (void)setOptionIntValue:(int64_t)value
+                   forKey:(NSString *)key
+               ofCategory:(IJKFFOptionCategory)category;
+
+
+-(void)setFormatOptionValue:       (NSString *)value forKey:(NSString *)key;
+-(void)setCodecOptionValue:        (NSString *)value forKey:(NSString *)key;
+-(void)setSwsOptionValue:          (NSString *)value forKey:(NSString *)key;
+-(void)setPlayerOptionValue:       (NSString *)value forKey:(NSString *)key;
+
+-(void)setFormatOptionIntValue:    (int64_t)value forKey:(NSString *)key;
+-(void)setCodecOptionIntValue:     (int64_t)value forKey:(NSString *)key;
+-(void)setSwsOptionIntValue:       (int64_t)value forKey:(NSString *)key;
+-(void)setPlayerOptionIntValue:    (int64_t)value forKey:(NSString *)key;
+
+@property(nonatomic) BOOL showHudView;
+
+@end

+ 39 - 0
ios/IJKMediaFramework.framework/Headers/IJKKVOController.h

@@ -0,0 +1,39 @@
+/*
+ * IJKKVOController.h
+ *
+ * Copyright (c) 2014 Bilibili
+ * Copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <Foundation/Foundation.h>
+
+@interface IJKKVOController : NSObject
+
+- (id)initWithTarget:(NSObject *)target;
+
+- (void)safelyAddObserver:(NSObject *)observer
+               forKeyPath:(NSString *)keyPath
+                  options:(NSKeyValueObservingOptions)options
+                  context:(void *)context;
+- (void)safelyRemoveObserver:(NSObject *)observer
+                  forKeyPath:(NSString *)keyPath;
+
+- (void)safelyRemoveAllObservers;
+
+@end

+ 32 - 0
ios/IJKMediaFramework.framework/Headers/IJKMPMoviePlayerController.h

@@ -0,0 +1,32 @@
+/*
+ * IJKMPMoviePlayerController.h
+ *
+ * Copyright (c) 2013 Bilibili
+ * Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import "IJKMediaPlayback.h"
+#import <MediaPlayer/MediaPlayer.h>
+
+@interface IJKMPMoviePlayerController : MPMoviePlayerController <IJKMediaPlayback>
+
+- (id)initWithContentURL:(NSURL *)aUrl;
+- (id)initWithContentURLString:(NSString *)aUrl;
+
+@end

+ 63 - 0
ios/IJKMediaFramework.framework/Headers/IJKMediaFramework.h

@@ -0,0 +1,63 @@
+/*
+ * IJKMediaFramework.h
+ *
+ * Copyright (c) 2013 Bilibili
+ * Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for IJKMediaFramework.
+FOUNDATION_EXPORT double IJKMediaFrameworkVersionNumber;
+
+//! Project version string for IJKMediaFramework.
+FOUNDATION_EXPORT const unsigned char IJKMediaFrameworkVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <IJKMediaFrameworkWithSSL/PublicHeader.h>
+#import <IJKMediaFramework/IJKMediaPlayback.h>
+#import <IJKMediaFramework/IJKMPMoviePlayerController.h>
+#import <IJKMediaFramework/IJKFFOptions.h>
+#import <IJKMediaFramework/IJKFFMoviePlayerController.h>
+#import <IJKMediaFramework/IJKAVMoviePlayerController.h>
+#import <IJKMediaFramework/IJKMediaModule.h>
+#import <IJKMediaFramework/IJKMediaPlayer.h>
+#import <IJKMediaFramework/IJKNotificationManager.h>
+#import <IJKMediaFramework/IJKKVOController.h>
+#import <IJKMediaFramework/IJKSDLGLViewProtocol.h>
+
+// backward compatible for old names
+#define IJKMediaPlaybackIsPreparedToPlayDidChangeNotification IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
+#define IJKMoviePlayerLoadStateDidChangeNotification IJKMPMoviePlayerLoadStateDidChangeNotification
+#define IJKMoviePlayerPlaybackDidFinishNotification IJKMPMoviePlayerPlaybackDidFinishNotification
+#define IJKMoviePlayerPlaybackDidFinishReasonUserInfoKey IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey
+#define IJKMoviePlayerPlaybackStateDidChangeNotification IJKMPMoviePlayerPlaybackStateDidChangeNotification
+#define IJKMoviePlayerIsAirPlayVideoActiveDidChangeNotification IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification
+#define IJKMoviePlayerVideoDecoderOpenNotification IJKMPMoviePlayerVideoDecoderOpenNotification
+#define IJKMoviePlayerFirstVideoFrameRenderedNotification IJKMPMoviePlayerFirstVideoFrameRenderedNotification
+#define IJKMoviePlayerFirstAudioFrameRenderedNotification IJKMPMoviePlayerFirstAudioFrameRenderedNotification
+#define IJKMoviePlayerFirstAudioFrameDecodedNotification IJKMPMoviePlayerFirstAudioFrameDecodedNotification
+#define IJKMoviePlayerFirstVideoFrameDecodedNotification IJKMPMoviePlayerFirstVideoFrameDecodedNotification
+#define IJKMoviePlayerOpenInputNotification IJKMPMoviePlayerOpenInputNotification
+#define IJKMoviePlayerFindStreamInfoNotification IJKMPMoviePlayerFindStreamInfoNotification
+#define IJKMoviePlayerComponentOpenNotification IJKMPMoviePlayerComponentOpenNotification
+
+#define IJKMPMoviePlayerAccurateSeekCompleteNotification IJKMPMoviePlayerAccurateSeekCompleteNotification
+#define IJKMoviePlayerSeekAudioStartNotification IJKMPMoviePlayerSeekAudioStartNotification
+#define IJKMoviePlayerSeekVideoStartNotification IJKMPMoviePlayerSeekVideoStartNotification
+

+ 33 - 0
ios/IJKMediaFramework.framework/Headers/IJKMediaModule.h

@@ -0,0 +1,33 @@
+/*
+ * IJKMediaModule.h
+ *
+ * Copyright (c) 2013 Bilibili
+ * Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <Foundation/Foundation.h>
+
+@interface IJKMediaModule : NSObject
+
++ (IJKMediaModule *)sharedModule;
+
+@property(atomic, getter=isAppIdleTimerDisabled)            BOOL appIdleTimerDisabled;
+@property(atomic, getter=isMediaModuleIdleTimerDisabled)    BOOL mediaModuleIdleTimerDisabled;
+
+@end

+ 232 - 0
ios/IJKMediaFramework.framework/Headers/IJKMediaPlayback.h

@@ -0,0 +1,232 @@
+/*
+ * IJKMediaPlayback.h
+ *
+ * Copyright (c) 2013 Bilibili
+ * Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, IJKMPMovieScalingMode) {
+    IJKMPMovieScalingModeNone,       // No scaling
+    IJKMPMovieScalingModeAspectFit,  // Uniform scale until one dimension fits
+    IJKMPMovieScalingModeAspectFill, // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
+    IJKMPMovieScalingModeFill        // Non-uniform scale. Both render dimensions will exactly match the visible bounds
+};
+
+typedef NS_ENUM(NSInteger, IJKMPMoviePlaybackState) {
+    IJKMPMoviePlaybackStateStopped,
+    IJKMPMoviePlaybackStatePlaying,
+    IJKMPMoviePlaybackStatePaused,
+    IJKMPMoviePlaybackStateInterrupted,
+    IJKMPMoviePlaybackStateSeekingForward,
+    IJKMPMoviePlaybackStateSeekingBackward
+};
+
+typedef NS_OPTIONS(NSUInteger, IJKMPMovieLoadState) {
+    IJKMPMovieLoadStateUnknown        = 0,
+    IJKMPMovieLoadStatePlayable       = 1 << 0,
+    IJKMPMovieLoadStatePlaythroughOK  = 1 << 1, // Playback will be automatically started in this state when shouldAutoplay is YES
+    IJKMPMovieLoadStateStalled        = 1 << 2, // Playback will be automatically paused in this state, if started
+};
+
+typedef NS_ENUM(NSInteger, IJKMPMovieFinishReason) {
+    IJKMPMovieFinishReasonPlaybackEnded,
+    IJKMPMovieFinishReasonPlaybackError,
+    IJKMPMovieFinishReasonUserExited
+};
+
+// -----------------------------------------------------------------------------
+// Thumbnails
+
+typedef NS_ENUM(NSInteger, IJKMPMovieTimeOption) {
+    IJKMPMovieTimeOptionNearestKeyFrame,
+    IJKMPMovieTimeOptionExact
+};
+
+@protocol IJKMediaPlayback;
+
+#pragma mark IJKMediaPlayback
+
+@protocol IJKMediaPlayback <NSObject>
+
+- (void)prepareToPlay;
+- (void)play;
+- (void)pause;
+- (void)stop;
+- (BOOL)isPlaying;
+- (void)shutdown;
+- (void)setPauseInBackground:(BOOL)pause;
+
+#pragma mark for flutter
+- (CVPixelBufferRef)framePixelbuffer;
+- (void)framePixelbufferLock;
+- (void)framePixelbufferUnlock;
+
+@property(nonatomic, readonly)  UIView *view;
+@property(nonatomic)            NSTimeInterval currentPlaybackTime;
+@property(nonatomic, readonly)  NSTimeInterval duration;
+@property(nonatomic, readonly)  NSTimeInterval playableDuration;
+@property(nonatomic, readonly)  NSInteger bufferingProgress;
+
+@property(nonatomic, readonly)  BOOL isPreparedToPlay;
+@property(nonatomic, readonly)  IJKMPMoviePlaybackState playbackState;
+@property(nonatomic, readonly)  IJKMPMovieLoadState loadState;
+@property(nonatomic, readonly) int isSeekBuffering;
+@property(nonatomic, readonly) int isAudioSync;
+@property(nonatomic, readonly) int isVideoSync;
+
+@property(nonatomic, readonly) int64_t numberOfBytesTransferred;
+
+@property(nonatomic, readonly) CGSize naturalSize;
+@property(nonatomic) IJKMPMovieScalingMode scalingMode;
+@property(nonatomic) BOOL shouldAutoplay;
+
+@property (nonatomic) BOOL allowsMediaAirPlay;
+@property (nonatomic) BOOL isDanmakuMediaAirPlay;
+@property (nonatomic, readonly) BOOL airPlayMediaActive;
+
+@property (nonatomic) float playbackRate;
+@property (nonatomic) float playbackVolume;
+
+- (UIImage *)thumbnailImageAtCurrentTime;
+
+#pragma mark Notifications
+
+#ifdef __cplusplus
+#define IJK_EXTERN extern "C" __attribute__((visibility ("default")))
+#else
+#define IJK_EXTERN extern __attribute__((visibility ("default")))
+#endif
+
+// -----------------------------------------------------------------------------
+//  MPMediaPlayback.h
+
+// Posted when the prepared state changes of an object conforming to the MPMediaPlayback protocol changes.
+// This supersedes MPMoviePlayerContentPreloadDidFinishNotification.
+IJK_EXTERN NSString *const IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification;
+
+// -----------------------------------------------------------------------------
+//  MPMoviePlayerController.h
+//  Movie Player Notifications
+
+// Posted when the scaling mode changes.
+IJK_EXTERN NSString* const IJKMPMoviePlayerScalingModeDidChangeNotification;
+
+// Posted when movie playback ends or a user exits playback.
+IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackDidFinishNotification;
+IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey; // NSNumber (IJKMPMovieFinishReason)
+
+// Posted when the playback state changes, either programatically or by the user.
+IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackStateDidChangeNotification;
+
+// Posted when the network load state changes.
+IJK_EXTERN NSString* const IJKMPMoviePlayerLoadStateDidChangeNotification;
+
+// Posted when the movie player begins or ends playing video via AirPlay.
+IJK_EXTERN NSString* const IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification;
+
+// -----------------------------------------------------------------------------
+// Movie Property Notifications
+
+// Calling -prepareToPlay on the movie player will begin determining movie properties asynchronously.
+// These notifications are posted when the associated movie property becomes available.
+IJK_EXTERN NSString* const IJKMPMovieNaturalSizeAvailableNotification;
+
+// -----------------------------------------------------------------------------
+//  Extend Notifications
+
+IJK_EXTERN NSString *const IJKMPMoviePlayerVideoDecoderOpenNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerFirstVideoFrameRenderedNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerFirstAudioFrameRenderedNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerFirstAudioFrameDecodedNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerFirstVideoFrameDecodedNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerOpenInputNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerFindStreamInfoNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerComponentOpenNotification;
+
+IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteTargetKey;
+IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteErrorKey;
+IJK_EXTERN NSString *const IJKMPMoviePlayerDidAccurateSeekCompleteCurPos;
+IJK_EXTERN NSString *const IJKMPMoviePlayerAccurateSeekCompleteNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerSeekAudioStartNotification;
+IJK_EXTERN NSString *const IJKMPMoviePlayerSeekVideoStartNotification;
+
+@end
+
+#pragma mark IJKMediaUrlOpenDelegate
+
+// Must equal to the defination in ijkavformat/ijkavformat.h
+typedef NS_ENUM(NSInteger, IJKMediaEvent) {
+
+    // Notify Events
+    IJKMediaEvent_WillHttpOpen         = 1,       // attr: url
+    IJKMediaEvent_DidHttpOpen          = 2,       // attr: url, error, http_code
+    IJKMediaEvent_WillHttpSeek         = 3,       // attr: url, offset
+    IJKMediaEvent_DidHttpSeek          = 4,       // attr: url, offset, error, http_code
+    // Control Message
+    IJKMediaCtrl_WillTcpOpen           = 0x20001, // IJKMediaUrlOpenData: no args
+    IJKMediaCtrl_DidTcpOpen            = 0x20002, // IJKMediaUrlOpenData: error, family, ip, port, fd
+    IJKMediaCtrl_WillHttpOpen          = 0x20003, // IJKMediaUrlOpenData: url, segmentIndex, retryCounter
+    IJKMediaCtrl_WillLiveOpen          = 0x20005, // IJKMediaUrlOpenData: url, retryCounter
+    IJKMediaCtrl_WillConcatSegmentOpen = 0x20007, // IJKMediaUrlOpenData: url, segmentIndex, retryCounter
+};
+
+#define IJKMediaEventAttrKey_url            @"url"
+#define IJKMediaEventAttrKey_host           @"host"
+#define IJKMediaEventAttrKey_error          @"error"
+#define IJKMediaEventAttrKey_time_of_event  @"time_of_event"
+#define IJKMediaEventAttrKey_http_code      @"http_code"
+#define IJKMediaEventAttrKey_offset         @"offset"
+#define IJKMediaEventAttrKey_file_size      @"file_size"
+
+// event of IJKMediaUrlOpenEvent_xxx
+@interface IJKMediaUrlOpenData: NSObject
+
+- (id)initWithUrl:(NSString *)url
+            event:(IJKMediaEvent)event
+     segmentIndex:(int)segmentIndex
+     retryCounter:(int)retryCounter;
+
+@property(nonatomic, readonly) IJKMediaEvent event;
+@property(nonatomic, readonly) int segmentIndex;
+@property(nonatomic, readonly) int retryCounter;
+
+@property(nonatomic, retain) NSString *url;
+@property(nonatomic, assign) int fd;
+@property(nonatomic, strong) NSString *msg;
+@property(nonatomic) int error; // set a negative value to indicate an error has occured.
+@property(nonatomic, getter=isHandled)    BOOL handled;     // auto set to YES if url changed
+@property(nonatomic, getter=isUrlChanged) BOOL urlChanged;  // auto set to YES by url changed
+
+@end
+
+@protocol IJKMediaUrlOpenDelegate <NSObject>
+
+- (void)willOpenUrl:(IJKMediaUrlOpenData*) urlOpenData;
+
+@end
+
+@protocol IJKMediaNativeInvokeDelegate <NSObject>
+
+- (int)invoke:(IJKMediaEvent)event attributes:(NSDictionary *)attributes;
+
+@end

+ 32 - 0
ios/IJKMediaFramework.framework/Headers/IJKMediaPlayer.h

@@ -0,0 +1,32 @@
+/*
+ * IJKMediaPlayer.h
+ *
+ * Copyright (c) 2013 Bilibili
+ * Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import "IJKMediaPlayback.h"
+#import "IJKMPMoviePlayerController.h"
+
+#import "IJKFFOptions.h"
+#import "IJKFFMoviePlayerController.h"
+
+#import "IJKAVMoviePlayerController.h"
+
+#import "IJKMediaModule.h"

+ 37 - 0
ios/IJKMediaFramework.framework/Headers/IJKNotificationManager.h

@@ -0,0 +1,37 @@
+/*
+ * IJKNotificationManager.h
+ *
+ * Copyright (c) 2016 Bilibili
+ * Copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#import <Foundation/Foundation.h>
+
+@interface IJKNotificationManager : NSObject
+
+- (nullable instancetype)init;
+
+- (void)addObserver:(nonnull id)observer
+           selector:(nonnull SEL)aSelector
+               name:(nullable NSString *)aName
+             object:(nullable id)anObject;
+
+- (void)removeAllObservers:(nonnull id)observer;
+
+@end

+ 50 - 0
ios/IJKMediaFramework.framework/Headers/IJKSDLGLViewProtocol.h

@@ -0,0 +1,50 @@
+/*
+ * IJKSDLGLViewProtocol.h
+ *
+ * Copyright (c) 2017 Bilibili
+ * Copyright (c) 2017 raymond <raymondzheng1412@gmail.com>
+ *
+ * This file is part of ijkPlayer.
+ *
+ * ijkPlayer is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * ijkPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ijkPlayer; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef IJKSDLGLViewProtocol_h
+#define IJKSDLGLViewProtocol_h
+
+#import <UIKit/UIKit.h>
+
+typedef struct IJKOverlay IJKOverlay;
+struct IJKOverlay {
+    int w;
+    int h;
+    UInt32 format;
+    int planes;
+    UInt16 *pitches;
+    UInt8 **pixels;
+    int sar_num;
+    int sar_den;
+    CVPixelBufferRef pixel_buffer;
+};
+
+@protocol IJKSDLGLViewProtocol <NSObject>
+- (UIImage*) snapshot;
+@property(nonatomic, readonly) CGFloat  fps;
+@property(nonatomic)        CGFloat  scaleFactor;
+@property(nonatomic)        BOOL  isThirdGLView;
+- (void) display_pixels: (IJKOverlay *) overlay;
+@end
+
+#endif /* IJKSDLGLViewProtocol_h */

+ 3 - 0
ios/IJKMediaFramework.framework/IJKMediaFramework

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c747646e0262e9ba37fffa235b3db5dfde205fd09f4d35dd88abaf795c63a10
+size 140213392

BIN
ios/IJKMediaFramework.framework/Info.plist


+ 6 - 0
ios/IJKMediaFramework.framework/Modules/module.modulemap

@@ -0,0 +1,6 @@
+framework module IJKMediaFramework {
+  umbrella header "IJKMediaFramework.h"
+
+  export *
+  module * { export * }
+}

+ 7 - 2
ios/flutter_ijkplayer.podspec

@@ -12,12 +12,17 @@ A new flutter plugin project.
   s.license          = { :file => '../LICENSE' }
   s.author           = { 'Your Company' => 'email@example.com' }
   s.source           = { :path => '.' }
-  s.source_files = 'Classes/**/*'
+  s.source_files = 'Classes/**/*' , 'IJKMediaFramework.framework'
   s.public_header_files = 'Classes/**/*.h'
   s.dependency 'Flutter'
 
   s.ios.deployment_target = '8.0'
 
-  s.dependency 'ijkplayer', '~> 1.1.3'
+  # s.dependency 'ijkplayer', '~> 1.1.3'
+  s.vendored_frameworks = "IJKMediaFramework.framework"
+  s.frameworks  = "AudioToolbox", "AVFoundation", "CoreGraphics", "CoreMedia", "CoreVideo", "MobileCoreServices", "OpenGLES", "QuartzCore", "VideoToolbox", "Foundation", "UIKit", "MediaPlayer"
+  s.libraries   = "bz2", "z", "stdc++"
+
+
 end