diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKAVMoviePlayerController.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKAVMoviePlayerController.h new file mode 100644 index 0000000..39465c9 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKAVMoviePlayerController.h @@ -0,0 +1,79 @@ +/* + * IJKAVMoviePlayerController.h + * + * Copyright (c) 2014 Bilibili + * Copyright (c) 2014 Zhang Rui + * + * 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 + +- (id)initWithContentURL:(NSURL *)aUrl; +- (id)initWithContentURLString:(NSString *)aUrl; ++ (id)getInstance:(NSString *)aUrl; + +@end diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFMonitor.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFMonitor.h new file mode 100644 index 0000000..0e70d39 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFMonitor.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016 Bilibili + * Copyright (c) 2016 Zhang Rui + * + * 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 + +@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 diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFMoviePlayerController.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFMoviePlayerController.h new file mode 100644 index 0000000..004c123 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFMoviePlayerController.h @@ -0,0 +1,155 @@ +/* + * IJKFFMoviePlayerController.h + * + * Copyright (c) 2013 Bilibili + * Copyright (c) 2013 Zhang Rui + * + * 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 + +- (id)initWithContentURL:(NSURL *)aUrl + withOptions:(IJKFFOptions *)options; + +- (id)initWithContentURLString:(NSString *)aUrlString + withOptions:(IJKFFOptions *)options; + +- (id)initWithMoreContent:(NSURL *)aUrl + withOptions:(IJKFFOptions *)options + withGLView:(UIView *)glView; + +- (id)initWithMoreContentString:(NSString *)aUrlString + withOptions:(IJKFFOptions *)options + withGLView:(UIView *)glView; + +- (void)prepareToPlay; +- (void)play; +- (void)pause; +- (void)stop; +- (BOOL)isPlaying; +- (int64_t)trafficStatistic; +- (float)dropFrameRate; + +- (void)setPauseInBackground:(BOOL)pause; +- (BOOL)isVideoToolboxOpen; + +- (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 segmentOpenDelegate; +@property (nonatomic, retain) id tcpOpenDelegate; +@property (nonatomic, retain) id httpOpenDelegate; +@property (nonatomic, retain) id liveOpenDelegate; + +@property (nonatomic, retain) id 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)); diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFOptions.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFOptions.h new file mode 100644 index 0000000..cc03847 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKFFOptions.h @@ -0,0 +1,75 @@ +/* + * IJKFFOptions.h + * + * Copyright (c) 2013-2015 Bilibili + * Copyright (c) 2013-2015 Zhang Rui + * + * 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 + +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 diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKKVOController.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKKVOController.h new file mode 100644 index 0000000..3a6bf15 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKKVOController.h @@ -0,0 +1,39 @@ +/* + * IJKKVOController.h + * + * Copyright (c) 2014 Bilibili + * Copyright (c) 2014 Zhang Rui + * + * 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 + +@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 diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMPMoviePlayerController.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMPMoviePlayerController.h new file mode 100644 index 0000000..b17f175 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMPMoviePlayerController.h @@ -0,0 +1,32 @@ +/* + * IJKMPMoviePlayerController.h + * + * Copyright (c) 2013 Bilibili + * Copyright (c) 2013 Zhang Rui + * + * 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 + +@interface IJKMPMoviePlayerController : MPMoviePlayerController + +- (id)initWithContentURL:(NSURL *)aUrl; +- (id)initWithContentURLString:(NSString *)aUrl; + +@end diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaFrameworkWithSSL.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaFrameworkWithSSL.h new file mode 100644 index 0000000..5680be2 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaFrameworkWithSSL.h @@ -0,0 +1,46 @@ +// +// IJKMediaFrameworkWithSSL.h +// IJKMediaFrameworkWithSSL +// +// Created by zhangxinzheng on 27/02/2017. +// Copyright © 2017 bilibili. All rights reserved. +// + +#import + +//! Project version number for IJKMediaFrameworkWithSSL. +FOUNDATION_EXPORT double IJKMediaFrameworkWithSSLVersionNumber; + +//! Project version string for IJKMediaFrameworkWithSSL. +FOUNDATION_EXPORT const unsigned char IJKMediaFrameworkWithSSLVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +// 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 diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaModule.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaModule.h new file mode 100644 index 0000000..c0e23f9 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaModule.h @@ -0,0 +1,33 @@ +/* + * IJKMediaModule.h + * + * Copyright (c) 2013 Bilibili + * Copyright (c) 2013 Zhang Rui + * + * 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 + +@interface IJKMediaModule : NSObject + ++ (IJKMediaModule *)sharedModule; + +@property(atomic, getter=isAppIdleTimerDisabled) BOOL appIdleTimerDisabled; +@property(atomic, getter=isMediaModuleIdleTimerDisabled) BOOL mediaModuleIdleTimerDisabled; + +@end diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaPlayback.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaPlayback.h new file mode 100644 index 0000000..8f3530d --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaPlayback.h @@ -0,0 +1,230 @@ +/* + * IJKMediaPlayback.h + * + * Copyright (c) 2013 Bilibili + * Copyright (c) 2013 Zhang Rui + * + * 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 +#import + +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 + +- (void)prepareToPlay; +- (void)play; +- (void)pause; +- (void)stop; +- (BOOL)isPlaying; +- (void)shutdown; +- (void)setPauseInBackground:(BOOL)pause; +//录像 +- (void)stopRecord; +- (void)startRecordWithFileName:(NSString *)fileName; + +@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 + +- (void)willOpenUrl:(IJKMediaUrlOpenData*) urlOpenData; + +@end + +@protocol IJKMediaNativeInvokeDelegate + +- (int)invoke:(IJKMediaEvent)event attributes:(NSDictionary *)attributes; + +@end diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaPlayer.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaPlayer.h new file mode 100644 index 0000000..28c8bab --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKMediaPlayer.h @@ -0,0 +1,32 @@ +/* + * IJKMediaPlayer.h + * + * Copyright (c) 2013 Bilibili + * Copyright (c) 2013 Zhang Rui + * + * 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" diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKNotificationManager.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKNotificationManager.h new file mode 100644 index 0000000..6190049 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKNotificationManager.h @@ -0,0 +1,37 @@ +/* + * IJKNotificationManager.h + * + * Copyright (c) 2016 Bilibili + * Copyright (c) 2016 Zhang Rui + * + * 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 + +@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 diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKSDLGLViewProtocol.h b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKSDLGLViewProtocol.h new file mode 100644 index 0000000..0f27f26 --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Headers/IJKSDLGLViewProtocol.h @@ -0,0 +1,50 @@ +/* + * IJKSDLGLViewProtocol.h + * + * Copyright (c) 2017 Bilibili + * Copyright (c) 2017 raymond + * + * 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 + +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 +- (UIImage*) snapshot; +@property(nonatomic, readonly) CGFloat fps; +@property(nonatomic) CGFloat scaleFactor; +@property(nonatomic) BOOL isThirdGLView; +- (void) display_pixels: (IJKOverlay *) overlay; +@end + +#endif /* IJKSDLGLViewProtocol_h */ diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL new file mode 100644 index 0000000..b4f0049 Binary files /dev/null and b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL differ diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Info.plist b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Info.plist new file mode 100644 index 0000000..e0404d1 Binary files /dev/null and b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Info.plist differ diff --git a/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Modules/module.modulemap b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Modules/module.modulemap new file mode 100644 index 0000000..916bdde --- /dev/null +++ b/Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module IJKMediaFrameworkWithSSL { + umbrella header "IJKMediaFrameworkWithSSL.h" + + export * + module * { export * } +} diff --git a/TIoTLinkThirdPartyKit.podspec b/TIoTLinkThirdPartyKit.podspec index 3729c2b..2399888 100644 --- a/TIoTLinkThirdPartyKit.podspec +++ b/TIoTLinkThirdPartyKit.podspec @@ -64,4 +64,12 @@ Pod::Spec.new do |s| ss.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } end + s.subspec 'IJKPlayerSSL-iOS' do |ss| + ss.vendored_frameworks = 'Source/IJKPlayer-iOS/IJKMediaFrameworkWithSSL.framework' + ss.frameworks = "AudioToolbox", "AVFoundation", "CoreGraphics", "CoreMedia", "CoreVideo", "MobileCoreServices", "OpenGLES", "QuartzCore", "VideoToolbox", "Foundation", "UIKit", "MediaPlayer" + ss.libraries = "bz2", "z", "stdc++" + ss.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + ss.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + end + end