├── README
└── 1.png
├── ijkplayer
└── README.md
├── SRPPlayerViewController.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
├── SRPPlayerViewController
├── SRPPlayerTVConnectViewController.h
├── SRPPlayerTVConnectViewController.m
├── Info.plist
├── SRPPlayerViewController.h
└── SRPPlayerViewController.m
├── .gitignore
├── LICENSE
├── README_TW.md
└── README.md
/README/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinrenpan/SRPPlayerViewController/HEAD/README/1.png
--------------------------------------------------------------------------------
/ijkplayer/README.md:
--------------------------------------------------------------------------------
1 |
2 | Follow [ijkplayer-builder] to build (ijkplayer k0.7.4) IJKMediaFramework.framework, libssl.a, libcrypto.a, then drag them into this folder.
3 |
4 |
5 |
6 |
7 | [ijkplayer-builder]: https://github.com/shinrenpan/ijkplayer-builder
8 |
--------------------------------------------------------------------------------
/SRPPlayerViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SRPPlayerViewController/SRPPlayerTVConnectViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017年 shinren.pan@gmail.com All rights reserved.
3 | //
4 |
5 | #import
6 |
7 | /**
8 | * SRPPlayerViewController TV connected UIViewController.
9 | */
10 | @interface SRPPlayerTVConnectViewController : UIViewController
11 |
12 | @end
13 |
--------------------------------------------------------------------------------
/SRPPlayerViewController/SRPPlayerTVConnectViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017年 shinren.pan@gmail.com All rights reserved.
3 | //
4 |
5 | #import "SRPPlayerTVConnectViewController.h"
6 |
7 |
8 | @implementation SRPPlayerTVConnectViewController
9 |
10 | #pragma mark - rotation
11 | - (BOOL)shouldAutorotate
12 | {
13 | return NO;
14 | }
15 |
16 | - (UIInterfaceOrientationMask)supportedInterfaceOrientations
17 | {
18 | return ~UIInterfaceOrientationMaskAll;
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### OSX ###
2 | .DS_Store
3 |
4 | ### Xcode ###
5 | build/
6 | *.pbxuser
7 | !default.pbxuser
8 | *.mode1v3
9 | !default.mode1v3
10 | *.mode2v3
11 | !default.mode2v3
12 | *.perspectivev3
13 | !default.perspectivev3
14 | xcuserdata
15 | *.xccheckout
16 | *.moved-aside
17 | DerivedData
18 | *.hmap
19 | *.ipa
20 | *.xcuserstate
21 |
22 | ### CocoaPods ###
23 | Pods/
24 |
25 | ### Carthage ###
26 | Carthage/
27 |
28 | ### Other framework ###
29 | *.framework
30 | *.a
31 |
32 | ### Vendor folder ###
33 | Vendor/
34 |
35 |
--------------------------------------------------------------------------------
/SRPPlayerViewController/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 20180104
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015 Shinren Pan
2 |
3 | MIT License
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | "Software"), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
24 |
--------------------------------------------------------------------------------
/README_TW.md:
--------------------------------------------------------------------------------
1 | [](LICENSE)
2 | [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LC58N7VZUST5N)
3 |
4 |
5 | 基於 [ijkplayer k0.7.4][1] 的播放器 UIViewController.
6 |
7 |
8 | ## 特色
9 | - 支援外接設備全螢幕.
10 | - Media Format: 參考 [ijkplayer][4].
11 | - URL Protocol: 參考 [ijkplayer][4].
12 |
13 |
14 | ## 編譯
15 | - 依照 [ijkplayer-builder][2] 先編譯 (ijkplayer k0.7.4) 出 **IJKMediaFramework.framework, libssl.a, libcrypto.a**, 再拖到 ijkplayer 目錄.
16 |
17 | 
18 |
19 | - 執行 build.sh
20 |
21 |
22 | ## 使用
23 | - 將 **IJKMediaFramework.framework, libssl.a, libcrypto.a, SRPPlayerViewController.framework** 拖到你的 Project.
24 | - 在你的 Project 加入 **libz.tbd** 到 `Linked Frameworks and Libraries`.
25 | - 使用 SRPPlayerViewController 或是 subclass 它, 參考 [IPTV]
26 |
27 | ```objC
28 | SRPPlayerViewController *mvc = [[SRPPlayerViewController alloc]init];
29 | mvc.mediaURL = ...
30 | ```
31 |
32 |
33 |
34 |
35 |
36 | [1]: https://github.com/Bilibili/ijkplayer/releases/tag/k0.7.4 "k0.7.4"
37 | [2]: https://github.com/shinrenpan/ijkplayer-builder
38 | [3]: README_TW.md
39 | [4]: https://github.com/Bilibili/ijkplayer "ijkplayer"
40 | [IPTV]: https://github.com/shinrenpan/IPTV
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](LICENSE)
2 | [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LC58N7VZUST5N)
3 |
4 |
5 | A simply media play UIViewController base on [ijkplayer k0.7.4][1] without control panel.
6 |
7 | [中文說明][3].
8 |
9 |
10 | ## Feature
11 | - TV connected support.
12 | - Media Format: please see [ijkplayer][4].
13 | - URL Protocol: please see [ijkplayer][4].
14 |
15 |
16 | ## Compile
17 | - Follow [ijkplayer-builder][2] to build (ijkplayer k0.7.4) **IJKMediaFramework.framework, libssl.a, libcrypto.a**, then drag them into ijkplayer folder.
18 |
19 | 
20 |
21 | - Run build.sh
22 |
23 |
24 | ## Usage
25 | - Drag **IJKMediaFramework.framework, libssl.a, libcrypto.a, SRPPlayerViewController.framework** into your project.
26 | - In your project add **libz.tbd** into `Linked Frameworks and Libraries`.
27 | - Use SRPPlayerViewController or subclass, see [IPTV].
28 |
29 | ```objc
30 | SRPPlayerViewController *mvc = [[SRPPlayerViewController alloc]init];
31 | mvc.mediaURL = ...
32 | ```
33 |
34 |
35 |
36 |
37 |
38 | [1]: https://github.com/Bilibili/ijkplayer/releases/tag/k0.7.4 "k0.7.4"
39 | [2]: https://github.com/shinrenpan/ijkplayer-builder
40 | [3]: README_TW.md
41 | [4]: https://github.com/Bilibili/ijkplayer "ijkplayer"
42 | [IPTV]: https://github.com/shinrenpan/IPTV
43 |
--------------------------------------------------------------------------------
/SRPPlayerViewController/SRPPlayerViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017年 shinren.pan@gmail.com All rights reserved.
3 | //
4 |
5 | #import
6 | #import
7 |
8 | NS_ASSUME_NONNULL_BEGIN
9 |
10 | @class SRPPlayerViewController;
11 |
12 | /**
13 | * SRPPlayerViewController protocol
14 | */
15 | @protocol SRPPlayerViewControllerDelegate
16 | @optional
17 |
18 |
19 | ///-----------------------------------------------------------------------------
20 | /// @name SRPPlayerViewControllerDelegate optional methods
21 | ///-----------------------------------------------------------------------------
22 |
23 | /**
24 | * SRPPlayerViewController playback state change.
25 | *
26 | * @param playerController SRPPlayerViewController object.
27 | * @param state Changed playback state.
28 | */
29 | - (void)playerController:(SRPPlayerViewController *)playerController
30 | playbackStateChanged:(IJKMPMoviePlaybackState)state;
31 |
32 | /**
33 | * SRPPlayerViewController
34 | *
35 | * @param playerController SRPPlayerViewController object.
36 | * @param state Changed load state.
37 | */
38 | - (void)playerController:(SRPPlayerViewController *)playerController
39 | loadStateChanged:(IJKMPMovieLoadState)state;
40 |
41 | /**
42 | * SRPPlayerViewController finished.
43 | *
44 | * @param playerController SRPPlayerViewController object.
45 | * @param reason Finish reason.
46 | */
47 | - (void)playerController:(SRPPlayerViewController *)playerController
48 | finishReason:(IJKMPMovieFinishReason)reason;
49 |
50 | /**
51 | * SRPPlayerViewController TV connected.
52 | */
53 | - (void)playerControllerTVConnected;
54 |
55 | /**
56 | * SRPPlayerViewController TV disconnected.
57 | */
58 | - (void)playerControllerTVDisconnected;
59 |
60 | @end
61 |
62 |
63 | /**
64 | * A simply media play UIViewController.
65 | */
66 | @interface SRPPlayerViewController : UIViewController
67 |
68 |
69 | ///-----------------------------------------------------------------------------
70 | /// @name Properties
71 | ///-----------------------------------------------------------------------------
72 |
73 | /**
74 | * Media URL.
75 | */
76 | @property (nonatomic, strong) NSURL *mediaURL;
77 |
78 | /**
79 | * Delegation.
80 | */
81 | @property (nonatomic, weak, nullable) iddelegate;
82 |
83 | /**
84 | * Current time.
85 | */
86 | @property (nonatomic, assign) NSTimeInterval currentPlaybackTime;
87 |
88 | /**
89 | * Scale mode.
90 | */
91 | @property (nonatomic, assign) IJKMPMovieScalingMode scalingMode;
92 |
93 | /**
94 | * Duration.
95 | */
96 | @property (nonatomic, readonly) NSTimeInterval duration;
97 |
98 | /**
99 | * Playble duration.
100 | */
101 | @property (nonatomic, readonly) NSTimeInterval playableDuration;
102 |
103 | /**
104 | * Buffer progress.
105 | */
106 | @property (nonatomic, readonly) NSInteger bufferingProgress;
107 |
108 | /**
109 | * TV Connected.
110 | */
111 | @property (nonatomic, readonly) BOOL isTVConnected;
112 |
113 | /**
114 | * Is playing.
115 | */
116 | @property (nonatomic, readonly) BOOL isPlaying;
117 |
118 |
119 | ///-----------------------------------------------------------------------------
120 | /// @name Public methods
121 | ///-----------------------------------------------------------------------------
122 |
123 | /**
124 | * Play media.
125 | */
126 | - (void)play;
127 |
128 | /**
129 | * Pause media.
130 | */
131 | - (void)pause;
132 |
133 | /**
134 | * Stop media.
135 | */
136 | - (void)stop;
137 |
138 | @end
139 |
140 | NS_ASSUME_NONNULL_END
141 |
--------------------------------------------------------------------------------
/SRPPlayerViewController/SRPPlayerViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017年 shinren.pan@gmail.com All rights reserved.
3 | //
4 |
5 | #import "SRPPlayerViewController.h"
6 | #import "SRPPlayerTVConnectViewController.h"
7 |
8 |
9 | @interface SRPPlayerViewController ()
10 |
11 | @property (nonatomic, strong) UIWindow *tvConnectWindow;
12 | @property (nonatomic, strong) idplayer;
13 |
14 | @end
15 |
16 |
17 | @implementation SRPPlayerViewController
18 |
19 | #pragma mark - LifeCycle
20 | - (void)dealloc
21 | {
22 | [self __removeObserver];
23 | [_player shutdown];
24 | }
25 |
26 | - (void)viewDidLoad
27 | {
28 | [super viewDidLoad];
29 | [self __setup];
30 | }
31 |
32 | #pragma mark - Properties getter
33 | - (NSTimeInterval)currentPlaybackTime
34 | {
35 | return [_player currentPlaybackTime];
36 | }
37 |
38 | - (IJKMPMovieScalingMode)scalingMode
39 | {
40 | return [_player scalingMode];
41 | }
42 |
43 | - (NSTimeInterval)duration
44 | {
45 | return [_player duration];
46 | }
47 |
48 | - (NSTimeInterval)playableDuration
49 | {
50 | return [_player playableDuration];
51 | }
52 |
53 | - (BOOL)isTVConnected
54 | {
55 | return [UIScreen screens].count > 1;
56 | }
57 |
58 | - (BOOL)isPlaying
59 | {
60 | return [_player isPlaying];
61 | }
62 |
63 | #pragma mark - Properties setter
64 | - (void)setCurrentPlaybackTime:(NSTimeInterval)currentPlaybackTime
65 | {
66 | [_player setCurrentPlaybackTime:currentPlaybackTime];
67 | }
68 |
69 | - (void)setScalingMode:(IJKMPMovieScalingMode)scalingMode
70 | {
71 | if(scalingMode < 0)
72 | {
73 | scalingMode = IJKMPMovieScalingModeFill;
74 | }
75 |
76 | if(scalingMode > IJKMPMovieScalingModeFill)
77 | {
78 | scalingMode = IJKMPMovieScalingModeNone;
79 | }
80 |
81 | [_player setScalingMode:scalingMode];
82 | }
83 |
84 | #pragma mark - Public
85 | - (void)play
86 | {
87 | [_player play];
88 | }
89 |
90 | - (void)pause
91 | {
92 | [_player pause];
93 | }
94 |
95 | - (void)stop
96 | {
97 | [_player stop];
98 | }
99 |
100 | #pragma mark - Private
101 | #pragma mark setup
102 | - (void)__setup
103 | {
104 | if(!_mediaURL)
105 | {
106 | return;
107 | }
108 |
109 | [IJKFFMoviePlayerController setLogReport:NO];
110 |
111 | _tvConnectWindow = [[UIWindow alloc]init];
112 |
113 | IJKFFOptions *options = [IJKFFOptions optionsByDefault];
114 | _player = [[IJKFFMoviePlayerController alloc]initWithContentURL:_mediaURL withOptions:options];
115 |
116 | UIView *playerView = [_player view];
117 | playerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
118 | playerView.frame = self.view.bounds;
119 | playerView.backgroundColor = [UIColor blackColor];
120 |
121 | [self.view insertSubview:playerView atIndex:0];
122 | [_player setShouldAutoplay:YES];
123 | [_player setScalingMode:IJKMPMovieScalingModeAspectFit];
124 | [self __addObserver];
125 | }
126 |
127 | #pragma mark Observer handle
128 | - (void)__addObserver
129 | {
130 | NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
131 |
132 | [center addObserver:self selector:@selector(__playerPlaybackDidFinishNotification:)
133 | name:IJKMPMoviePlayerPlaybackDidFinishNotification object:nil];
134 |
135 | [center addObserver:self selector:@selector(__playerPlaybackStateDidChangeNotification:)
136 | name:IJKMPMoviePlayerPlaybackStateDidChangeNotification object:nil];
137 |
138 | [center addObserver:self selector:@selector(__playerLoadStateDidChangeNotification:)
139 | name:IJKMPMoviePlayerLoadStateDidChangeNotification object:nil];
140 |
141 | [center addObserver:self selector:@selector(__screenDidConnectNotification:)
142 | name:UIScreenDidConnectNotification object:nil];
143 |
144 | [center addObserver:self selector:@selector(__screenDidDisconnectNotification:)
145 | name:UIScreenDidDisconnectNotification object:nil];
146 |
147 | [_player prepareToPlay];
148 |
149 | if(self.isTVConnected)
150 | {
151 | [self __screenDidConnectNotification:nil];
152 | }
153 | }
154 |
155 | - (void)__removeObserver
156 | {
157 | [[NSNotificationCenter defaultCenter]removeObserver:self];
158 | }
159 |
160 | #pragma mark player handle
161 | - (void)__playerPlaybackDidFinishNotification:(NSNotification *)sender
162 | {
163 | [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
164 |
165 | if(_delegate && [_delegate respondsToSelector:@selector(playerController:finishReason:)])
166 | {
167 | NSInteger reason =
168 | [sender.userInfo[IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
169 |
170 | [_delegate playerController:self finishReason:reason];
171 | }
172 | }
173 |
174 | - (void)__playerPlaybackStateDidChangeNotification:(NSNotification *)sender
175 | {
176 | [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
177 |
178 | if(_delegate && [_delegate respondsToSelector:@selector(playerController:playbackStateChanged:)])
179 | {
180 | NSInteger state = [@([_player playbackState]) integerValue];
181 |
182 | [_delegate playerController:self playbackStateChanged:state];
183 | }
184 | }
185 |
186 | - (void)__playerLoadStateDidChangeNotification:(NSNotification *)sender
187 | {
188 | [UIApplication sharedApplication].networkActivityIndicatorVisible =
189 | ([_player loadState] == IJKMPMovieLoadStateStalled) ? YES : NO;
190 |
191 | if(_delegate && [_delegate respondsToSelector:@selector(playerController:loadStateChanged:)])
192 | {
193 | NSInteger state = [@([_player loadState]) integerValue];
194 |
195 | [_delegate playerController:self loadStateChanged:state];
196 | }
197 | }
198 |
199 | #pragma mark TV connect handle
200 | - (void)__screenDidConnectNotification:(NSNotification *)sender
201 | {
202 | UIView *playerView = [_player view];
203 | UIScreen *screen = (sender.object) ? sender.object : [UIScreen screens].lastObject;
204 | screen.overscanCompensation = UIScreenOverscanCompensationNone;
205 | SRPPlayerTVConnectViewController *mvc = [[SRPPlayerTVConnectViewController alloc]init];
206 | _tvConnectWindow.rootViewController = mvc;
207 | _tvConnectWindow.screen = screen;
208 | _tvConnectWindow.hidden = NO;
209 | mvc.view.frame = screen.bounds;
210 | playerView.frame = screen.bounds;
211 |
212 | [mvc.view addSubview:playerView];
213 |
214 | if(_delegate && [_delegate respondsToSelector:@selector(playerControllerTVConnected)])
215 | {
216 | [_delegate playerControllerTVConnected];
217 | }
218 | }
219 |
220 | - (void)__screenDidDisconnectNotification:(NSNotification *)sender
221 | {
222 | UIView *playerView = [_player view];
223 | _tvConnectWindow.hidden = YES;
224 | _tvConnectWindow.rootViewController = nil;
225 | playerView.frame = self.view.bounds;
226 |
227 | [self.view insertSubview:playerView atIndex:0];
228 |
229 | if(_delegate && [_delegate respondsToSelector:@selector(playerControllerTVDisconnected)])
230 | {
231 | [_delegate playerControllerTVDisconnected];
232 | }
233 | }
234 |
235 | @end
236 |
--------------------------------------------------------------------------------
/SRPPlayerViewController.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 136BD04DC7790EB3F9763FE03D42828D /* SRPPlayerTVConnectViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 082CB648E80176E8C0BF58C114D8F2C8 /* SRPPlayerTVConnectViewController.h */; settings = {ATTRIBUTES = (Private, ); }; };
11 | 5AB3F5D61FFF325700CE22F6 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AB3F5D31FFF325500CE22F6 /* libssl.a */; };
12 | 5AB3F5D71FFF325700CE22F6 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AB3F5D41FFF325600CE22F6 /* libcrypto.a */; };
13 | 5AB3F5D81FFF325700CE22F6 /* IJKMediaFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AB3F5D51FFF325700CE22F6 /* IJKMediaFramework.framework */; };
14 | 87F96EB1DB365D64137AC08630EB7E20 /* SRPPlayerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C48D2371C8318131A702A9135BC9E57 /* SRPPlayerViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
15 | 8C40DD1677DD6F5DA4DA96FAF10ECFC5 /* SRPPlayerTVConnectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A49CD9758901DB0E02150D330A2A75C6 /* SRPPlayerTVConnectViewController.m */; };
16 | BAEE1BA0D91D5E932B3F5B3BA5063F40 /* SRPPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DFA8AF47448B9261645769FE40AF4B74 /* SRPPlayerViewController.m */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXFileReference section */
20 | 082CB648E80176E8C0BF58C114D8F2C8 /* SRPPlayerTVConnectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRPPlayerTVConnectViewController.h; sourceTree = ""; };
21 | 5AB3F5D31FFF325500CE22F6 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libssl.a; sourceTree = ""; };
22 | 5AB3F5D41FFF325600CE22F6 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcrypto.a; sourceTree = ""; };
23 | 5AB3F5D51FFF325700CE22F6 /* IJKMediaFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = IJKMediaFramework.framework; sourceTree = ""; };
24 | 6BDE078F6AEDEB77D711F1F4ECB58987 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
25 | 6F27FA55F9BE1AE5AE52021E86D1649A /* SRPPlayerViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SRPPlayerViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
26 | 7C48D2371C8318131A702A9135BC9E57 /* SRPPlayerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRPPlayerViewController.h; sourceTree = ""; };
27 | A49CD9758901DB0E02150D330A2A75C6 /* SRPPlayerTVConnectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SRPPlayerTVConnectViewController.m; sourceTree = ""; };
28 | DFA8AF47448B9261645769FE40AF4B74 /* SRPPlayerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SRPPlayerViewController.m; sourceTree = ""; };
29 | /* End PBXFileReference section */
30 |
31 | /* Begin PBXFrameworksBuildPhase section */
32 | 4481344802717EC175E0DCDE0E2A4475 /* Frameworks */ = {
33 | isa = PBXFrameworksBuildPhase;
34 | buildActionMask = 2147483647;
35 | files = (
36 | 5AB3F5D81FFF325700CE22F6 /* IJKMediaFramework.framework in Frameworks */,
37 | 5AB3F5D71FFF325700CE22F6 /* libcrypto.a in Frameworks */,
38 | 5AB3F5D61FFF325700CE22F6 /* libssl.a in Frameworks */,
39 | );
40 | runOnlyForDeploymentPostprocessing = 0;
41 | };
42 | /* End PBXFrameworksBuildPhase section */
43 |
44 | /* Begin PBXGroup section */
45 | 2FEAFCE0F89BC946E27B50B21ECF5210 /* Products */ = {
46 | isa = PBXGroup;
47 | children = (
48 | 6F27FA55F9BE1AE5AE52021E86D1649A /* SRPPlayerViewController.framework */,
49 | );
50 | name = Products;
51 | sourceTree = "";
52 | };
53 | 5AB3F5D21FFF321600CE22F6 /* ijkplayer */ = {
54 | isa = PBXGroup;
55 | children = (
56 | 5AB3F5D51FFF325700CE22F6 /* IJKMediaFramework.framework */,
57 | 5AB3F5D41FFF325600CE22F6 /* libcrypto.a */,
58 | 5AB3F5D31FFF325500CE22F6 /* libssl.a */,
59 | );
60 | path = ijkplayer;
61 | sourceTree = "";
62 | };
63 | F7849BB4A2FD89D5A9FD02E28A664C05 /* SRPPlayerViewController */ = {
64 | isa = PBXGroup;
65 | children = (
66 | 6BDE078F6AEDEB77D711F1F4ECB58987 /* Info.plist */,
67 | 082CB648E80176E8C0BF58C114D8F2C8 /* SRPPlayerTVConnectViewController.h */,
68 | A49CD9758901DB0E02150D330A2A75C6 /* SRPPlayerTVConnectViewController.m */,
69 | 7C48D2371C8318131A702A9135BC9E57 /* SRPPlayerViewController.h */,
70 | DFA8AF47448B9261645769FE40AF4B74 /* SRPPlayerViewController.m */,
71 | );
72 | path = SRPPlayerViewController;
73 | sourceTree = "";
74 | };
75 | FDA804660B35894C597CA63D99105680 = {
76 | isa = PBXGroup;
77 | children = (
78 | 5AB3F5D21FFF321600CE22F6 /* ijkplayer */,
79 | 2FEAFCE0F89BC946E27B50B21ECF5210 /* Products */,
80 | F7849BB4A2FD89D5A9FD02E28A664C05 /* SRPPlayerViewController */,
81 | );
82 | sourceTree = "";
83 | };
84 | /* End PBXGroup section */
85 |
86 | /* Begin PBXHeadersBuildPhase section */
87 | C261C3FDCB27BD7E9FBA6086ED68E563 /* Headers */ = {
88 | isa = PBXHeadersBuildPhase;
89 | buildActionMask = 2147483647;
90 | files = (
91 | 136BD04DC7790EB3F9763FE03D42828D /* SRPPlayerTVConnectViewController.h in Headers */,
92 | 87F96EB1DB365D64137AC08630EB7E20 /* SRPPlayerViewController.h in Headers */,
93 | );
94 | runOnlyForDeploymentPostprocessing = 0;
95 | };
96 | /* End PBXHeadersBuildPhase section */
97 |
98 | /* Begin PBXNativeTarget section */
99 | 510DEB2A067F5A0F2C612FE0D67516A5 /* SRPPlayerViewController */ = {
100 | isa = PBXNativeTarget;
101 | buildConfigurationList = 7B51A881C68384C178D63B3F8B46ADC9 /* Build configuration list for PBXNativeTarget "SRPPlayerViewController" */;
102 | buildPhases = (
103 | 29B0C20EE1CDCB0D50EB50F1BF5C4914 /* Sources */,
104 | 4481344802717EC175E0DCDE0E2A4475 /* Frameworks */,
105 | C261C3FDCB27BD7E9FBA6086ED68E563 /* Headers */,
106 | 26CC44E04C2B7FAC554644FB5400D64C /* Resources */,
107 | );
108 | buildRules = (
109 | );
110 | dependencies = (
111 | );
112 | name = SRPPlayerViewController;
113 | productName = SRPPlayerViewController;
114 | productReference = 6F27FA55F9BE1AE5AE52021E86D1649A /* SRPPlayerViewController.framework */;
115 | productType = "com.apple.product-type.framework";
116 | };
117 | /* End PBXNativeTarget section */
118 |
119 | /* Begin PBXProject section */
120 | 45643D7E6B58ADB97C9BC30C7F17E34B /* Project object */ = {
121 | isa = PBXProject;
122 | attributes = {
123 | LastUpgradeCheck = 0800;
124 | ORGANIZATIONNAME = "Shinren Pan";
125 | TargetAttributes = {
126 | 510DEB2A067F5A0F2C612FE0D67516A5 = {
127 | CreatedOnToolsVersion = 7.2.1;
128 | };
129 | };
130 | };
131 | buildConfigurationList = E2E3E2D4686BF75A7E9D70EA338DB7FD /* Build configuration list for PBXProject "SRPPlayerViewController" */;
132 | compatibilityVersion = "Xcode 3.2";
133 | developmentRegion = English;
134 | hasScannedForEncodings = 0;
135 | knownRegions = (
136 | en,
137 | Base,
138 | );
139 | mainGroup = FDA804660B35894C597CA63D99105680;
140 | productRefGroup = 2FEAFCE0F89BC946E27B50B21ECF5210 /* Products */;
141 | projectDirPath = "";
142 | projectRoot = "";
143 | targets = (
144 | 510DEB2A067F5A0F2C612FE0D67516A5 /* SRPPlayerViewController */,
145 | );
146 | };
147 | /* End PBXProject section */
148 |
149 | /* Begin PBXResourcesBuildPhase section */
150 | 26CC44E04C2B7FAC554644FB5400D64C /* Resources */ = {
151 | isa = PBXResourcesBuildPhase;
152 | buildActionMask = 2147483647;
153 | files = (
154 | );
155 | runOnlyForDeploymentPostprocessing = 0;
156 | };
157 | /* End PBXResourcesBuildPhase section */
158 |
159 | /* Begin PBXSourcesBuildPhase section */
160 | 29B0C20EE1CDCB0D50EB50F1BF5C4914 /* Sources */ = {
161 | isa = PBXSourcesBuildPhase;
162 | buildActionMask = 2147483647;
163 | files = (
164 | 8C40DD1677DD6F5DA4DA96FAF10ECFC5 /* SRPPlayerTVConnectViewController.m in Sources */,
165 | BAEE1BA0D91D5E932B3F5B3BA5063F40 /* SRPPlayerViewController.m in Sources */,
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXSourcesBuildPhase section */
170 |
171 | /* Begin XCBuildConfiguration section */
172 | 26693EDE2D6FEF137AA45A3BBC15A98B /* Release */ = {
173 | isa = XCBuildConfiguration;
174 | buildSettings = {
175 | ALWAYS_SEARCH_USER_PATHS = NO;
176 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
177 | CLANG_CXX_LIBRARY = "libc++";
178 | CLANG_ENABLE_MODULES = YES;
179 | CLANG_ENABLE_OBJC_ARC = YES;
180 | CLANG_WARN_BOOL_CONVERSION = YES;
181 | CLANG_WARN_CONSTANT_CONVERSION = YES;
182 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
183 | CLANG_WARN_EMPTY_BODY = YES;
184 | CLANG_WARN_ENUM_CONVERSION = YES;
185 | CLANG_WARN_INFINITE_RECURSION = YES;
186 | CLANG_WARN_INT_CONVERSION = YES;
187 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
188 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
189 | CLANG_WARN_UNREACHABLE_CODE = YES;
190 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
191 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
192 | COPY_PHASE_STRIP = NO;
193 | CURRENT_PROJECT_VERSION = 1;
194 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
195 | ENABLE_NS_ASSERTIONS = NO;
196 | ENABLE_STRICT_OBJC_MSGSEND = YES;
197 | GCC_C_LANGUAGE_STANDARD = gnu99;
198 | GCC_NO_COMMON_BLOCKS = YES;
199 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
200 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
201 | GCC_WARN_UNDECLARED_SELECTOR = YES;
202 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
203 | GCC_WARN_UNUSED_FUNCTION = YES;
204 | GCC_WARN_UNUSED_VARIABLE = YES;
205 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
206 | MTL_ENABLE_DEBUG_INFO = NO;
207 | OTHER_CFLAGS = "-fembed-bitcode";
208 | SDKROOT = iphoneos;
209 | TARGETED_DEVICE_FAMILY = "1,2";
210 | VALIDATE_PRODUCT = YES;
211 | VERSIONING_SYSTEM = "apple-generic";
212 | VERSION_INFO_PREFIX = "";
213 | };
214 | name = Release;
215 | };
216 | BD7AE8EF2687BE990E4F06914B41DB6E /* Debug */ = {
217 | isa = XCBuildConfiguration;
218 | buildSettings = {
219 | BITCODE_GENERATION_MODE = marker;
220 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
221 | DEFINES_MODULE = YES;
222 | DYLIB_COMPATIBILITY_VERSION = 1;
223 | DYLIB_CURRENT_VERSION = 1;
224 | DYLIB_INSTALL_NAME_BASE = "@rpath";
225 | FRAMEWORK_SEARCH_PATHS = (
226 | "$(inherited)",
227 | "$(PROJECT_DIR)",
228 | "$(PROJECT_DIR)/ijkplayer",
229 | );
230 | INFOPLIST_FILE = SRPPlayerViewController/Info.plist;
231 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
232 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
233 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
234 | LIBRARY_SEARCH_PATHS = (
235 | "$(inherited)",
236 | "$(PROJECT_DIR)/ijkplayer",
237 | );
238 | MACH_O_TYPE = staticlib;
239 | PRODUCT_BUNDLE_IDENTIFIER = com.shinrenpan.SRPPlayerViewController;
240 | PRODUCT_NAME = "$(TARGET_NAME)";
241 | SKIP_INSTALL = YES;
242 | VALID_ARCHS = "arm64 armv7 armv7s";
243 | };
244 | name = Debug;
245 | };
246 | D7780A99DEAA84ED7F99B57E35DCBC97 /* Debug */ = {
247 | isa = XCBuildConfiguration;
248 | buildSettings = {
249 | ALWAYS_SEARCH_USER_PATHS = NO;
250 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
251 | CLANG_CXX_LIBRARY = "libc++";
252 | CLANG_ENABLE_MODULES = YES;
253 | CLANG_ENABLE_OBJC_ARC = YES;
254 | CLANG_WARN_BOOL_CONVERSION = YES;
255 | CLANG_WARN_CONSTANT_CONVERSION = YES;
256 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
257 | CLANG_WARN_EMPTY_BODY = YES;
258 | CLANG_WARN_ENUM_CONVERSION = YES;
259 | CLANG_WARN_INFINITE_RECURSION = YES;
260 | CLANG_WARN_INT_CONVERSION = YES;
261 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
262 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
263 | CLANG_WARN_UNREACHABLE_CODE = YES;
264 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
265 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
266 | COPY_PHASE_STRIP = NO;
267 | CURRENT_PROJECT_VERSION = 1;
268 | DEBUG_INFORMATION_FORMAT = dwarf;
269 | ENABLE_STRICT_OBJC_MSGSEND = YES;
270 | ENABLE_TESTABILITY = YES;
271 | GCC_C_LANGUAGE_STANDARD = gnu99;
272 | GCC_DYNAMIC_NO_PIC = NO;
273 | GCC_NO_COMMON_BLOCKS = YES;
274 | GCC_OPTIMIZATION_LEVEL = 0;
275 | GCC_PREPROCESSOR_DEFINITIONS = (
276 | "DEBUG=1",
277 | "$(inherited)",
278 | );
279 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
280 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
281 | GCC_WARN_UNDECLARED_SELECTOR = YES;
282 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
283 | GCC_WARN_UNUSED_FUNCTION = YES;
284 | GCC_WARN_UNUSED_VARIABLE = YES;
285 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
286 | MTL_ENABLE_DEBUG_INFO = YES;
287 | ONLY_ACTIVE_ARCH = YES;
288 | OTHER_CFLAGS = "-fembed-bitcode-marker";
289 | SDKROOT = iphoneos;
290 | TARGETED_DEVICE_FAMILY = "1,2";
291 | VERSIONING_SYSTEM = "apple-generic";
292 | VERSION_INFO_PREFIX = "";
293 | };
294 | name = Debug;
295 | };
296 | F3F94FAA361581E5C9EBFEC28B18ACBE /* Release */ = {
297 | isa = XCBuildConfiguration;
298 | buildSettings = {
299 | BITCODE_GENERATION_MODE = bitcode;
300 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
301 | DEFINES_MODULE = YES;
302 | DYLIB_COMPATIBILITY_VERSION = 1;
303 | DYLIB_CURRENT_VERSION = 1;
304 | DYLIB_INSTALL_NAME_BASE = "@rpath";
305 | FRAMEWORK_SEARCH_PATHS = (
306 | "$(inherited)",
307 | "$(PROJECT_DIR)",
308 | "$(PROJECT_DIR)/ijkplayer",
309 | );
310 | INFOPLIST_FILE = SRPPlayerViewController/Info.plist;
311 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
312 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
313 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
314 | LIBRARY_SEARCH_PATHS = (
315 | "$(inherited)",
316 | "$(PROJECT_DIR)/ijkplayer",
317 | );
318 | MACH_O_TYPE = staticlib;
319 | PRODUCT_BUNDLE_IDENTIFIER = com.shinrenpan.SRPPlayerViewController;
320 | PRODUCT_NAME = "$(TARGET_NAME)";
321 | SKIP_INSTALL = YES;
322 | VALID_ARCHS = "arm64 armv7 armv7s";
323 | };
324 | name = Release;
325 | };
326 | /* End XCBuildConfiguration section */
327 |
328 | /* Begin XCConfigurationList section */
329 | 7B51A881C68384C178D63B3F8B46ADC9 /* Build configuration list for PBXNativeTarget "SRPPlayerViewController" */ = {
330 | isa = XCConfigurationList;
331 | buildConfigurations = (
332 | BD7AE8EF2687BE990E4F06914B41DB6E /* Debug */,
333 | F3F94FAA361581E5C9EBFEC28B18ACBE /* Release */,
334 | );
335 | defaultConfigurationIsVisible = 0;
336 | defaultConfigurationName = Release;
337 | };
338 | E2E3E2D4686BF75A7E9D70EA338DB7FD /* Build configuration list for PBXProject "SRPPlayerViewController" */ = {
339 | isa = XCConfigurationList;
340 | buildConfigurations = (
341 | D7780A99DEAA84ED7F99B57E35DCBC97 /* Debug */,
342 | 26693EDE2D6FEF137AA45A3BBC15A98B /* Release */,
343 | );
344 | defaultConfigurationIsVisible = 0;
345 | defaultConfigurationName = Release;
346 | };
347 | /* End XCConfigurationList section */
348 | };
349 | rootObject = 45643D7E6B58ADB97C9BC30C7F17E34B /* Project object */;
350 | }
351 |
--------------------------------------------------------------------------------