This commit is contained in:
DDIsFriend
2023-08-28 18:29:21 +08:00
parent c73a6ff1d4
commit 8d563860f1
290 changed files with 9542 additions and 9626 deletions

View File

@@ -7,7 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
2AA95CD2BA7A94CC2237B3B8 /* libPods-OrderSchedulingNotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C3211D21873B481A21262ED /* libPods-OrderSchedulingNotificationService.a */; };
484E98B33009439007606B9D /* libPods-OrderSchedulingNotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AC8946386773D3E9F510BE6 /* libPods-OrderSchedulingNotificationService.a */; };
791887422A7CCCCD007EA0C1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887402A7CCCCD007EA0C1 /* AppDelegate.swift */; };
791887432A7CCCCD007EA0C1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */; };
791887452A7CD05B007EA0C1 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887442A7CD05B007EA0C1 /* MainTabBarController.swift */; };
@@ -91,8 +91,7 @@
/* Begin PBXFileReference section */
09A2779565B8D8C9A3C1A302 /* Pods-OrderScheduling.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderScheduling.debug.xcconfig"; path = "Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling.debug.xcconfig"; sourceTree = "<group>"; };
0F3D6463BE04DB3A3BC4B265 /* Pods-OrderSchedulingNotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.debug.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.debug.xcconfig"; sourceTree = "<group>"; };
5C3211D21873B481A21262ED /* libPods-OrderSchedulingNotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderSchedulingNotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
0AC8946386773D3E9F510BE6 /* libPods-OrderSchedulingNotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderSchedulingNotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
791887402A7CCCCD007EA0C1 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
791887442A7CD05B007EA0C1 /* MainTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = "<group>"; };
@@ -170,9 +169,10 @@
79FB76052A9C606100DB00A4 /* OrderSchedulingNotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OrderSchedulingNotificationService.entitlements; sourceTree = "<group>"; };
79FB760E2A9C6CAF00DB00A4 /* newJuheOrderAudio.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = newJuheOrderAudio.wav; sourceTree = "<group>"; };
79FB76122A9C6CC100DB00A4 /* newOrderAudio.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = newOrderAudio.wav; sourceTree = "<group>"; };
9758FDE3BEDA5A983CAE2DED /* Pods-OrderSchedulingNotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.debug.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.debug.xcconfig"; sourceTree = "<group>"; };
98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderScheduling.a"; sourceTree = BUILT_PRODUCTS_DIR; };
A6F7A8FEBD23498BABF3BD58 /* Pods-OrderSchedulingNotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.release.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.release.xcconfig"; sourceTree = "<group>"; };
BD034FA1DD7C17CCBA6B0E5D /* Pods-OrderScheduling.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderScheduling.release.xcconfig"; path = "Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling.release.xcconfig"; sourceTree = "<group>"; };
F76C33D505526F14E541D0A7 /* Pods-OrderSchedulingNotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.release.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -188,7 +188,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2AA95CD2BA7A94CC2237B3B8 /* libPods-OrderSchedulingNotificationService.a in Frameworks */,
484E98B33009439007606B9D /* libPods-OrderSchedulingNotificationService.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -686,8 +686,8 @@
children = (
09A2779565B8D8C9A3C1A302 /* Pods-OrderScheduling.debug.xcconfig */,
BD034FA1DD7C17CCBA6B0E5D /* Pods-OrderScheduling.release.xcconfig */,
0F3D6463BE04DB3A3BC4B265 /* Pods-OrderSchedulingNotificationService.debug.xcconfig */,
A6F7A8FEBD23498BABF3BD58 /* Pods-OrderSchedulingNotificationService.release.xcconfig */,
9758FDE3BEDA5A983CAE2DED /* Pods-OrderSchedulingNotificationService.debug.xcconfig */,
F76C33D505526F14E541D0A7 /* Pods-OrderSchedulingNotificationService.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
@@ -711,7 +711,7 @@
79CECC9F2A8E03CF00B95D8B /* AVFoundation.framework */,
79CECC9D2A8E03C200B95D8B /* MediaPlayer.framework */,
98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */,
5C3211D21873B481A21262ED /* libPods-OrderSchedulingNotificationService.a */,
0AC8946386773D3E9F510BE6 /* libPods-OrderSchedulingNotificationService.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -744,7 +744,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 79FB75FD2A9C3BEE00DB00A4 /* Build configuration list for PBXNativeTarget "OrderSchedulingNotificationService" */;
buildPhases = (
DFA879CCBC9CAB845D24416A /* [CP] Check Pods Manifest.lock */,
6EB5BBCDE56F555DA13D87D9 /* [CP] Check Pods Manifest.lock */,
79FB75F12A9C3BEE00DB00A4 /* Sources */,
79FB75F22A9C3BEE00DB00A4 /* Frameworks */,
79FB75F32A9C3BEE00DB00A4 /* Resources */,
@@ -836,6 +836,28 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling-resources.sh\"\n";
showEnvVarsInLog = 0;
};
6EB5BBCDE56F555DA13D87D9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-OrderSchedulingNotificationService-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
BB88446118A3830B05D88DEC /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -858,28 +880,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
DFA879CCBC9CAB845D24416A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-OrderSchedulingNotificationService-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -1182,7 +1182,7 @@
};
79FB75FE2A9C3BEE00DB00A4 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 0F3D6463BE04DB3A3BC4B265 /* Pods-OrderSchedulingNotificationService.debug.xcconfig */;
baseConfigurationReference = 9758FDE3BEDA5A983CAE2DED /* Pods-OrderSchedulingNotificationService.debug.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = OrderSchedulingNotificationService/OrderSchedulingNotificationService.entitlements;
@@ -1214,7 +1214,7 @@
};
79FB75FF2A9C3BEE00DB00A4 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A6F7A8FEBD23498BABF3BD58 /* Pods-OrderSchedulingNotificationService.release.xcconfig */;
baseConfigurationReference = F76C33D505526F14E541D0A7 /* Pods-OrderSchedulingNotificationService.release.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = OrderSchedulingNotificationService/OrderSchedulingNotificationService.entitlements;

View File

@@ -12,7 +12,7 @@
<key>OrderSchedulingNotificationService.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>40</integer>
<integer>41</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>

View File

@@ -317,8 +317,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "549"
endingLineNumber = "549"
startingLineNumber = "551"
endingLineNumber = "551"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
</BreakpointContent>
@@ -333,8 +333,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "550"
endingLineNumber = "550"
startingLineNumber = "552"
endingLineNumber = "552"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
</BreakpointContent>
@@ -507,8 +507,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "631"
endingLineNumber = "631"
startingLineNumber = "633"
endingLineNumber = "633"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
</BreakpointContent>
@@ -523,8 +523,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "632"
endingLineNumber = "632"
startingLineNumber = "634"
endingLineNumber = "634"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
</BreakpointContent>
@@ -533,7 +533,7 @@
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F60CEE6A-AA19-4BDA-96D1-8F3B46A87FF5"
shouldBeEnabled = "No"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Pods/DDCategoryKit_Private/DDCategoryKit_Private/Classes/UIImage+DDCategory/UIImage+DDCategory.m"
@@ -555,8 +555,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "777"
endingLineNumber = "777"
startingLineNumber = "779"
endingLineNumber = "779"
landmarkName = "collectionView(_:cellForItemAt:)"
landmarkType = "7">
</BreakpointContent>
@@ -571,8 +571,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "778"
endingLineNumber = "778"
startingLineNumber = "780"
endingLineNumber = "780"
landmarkName = "collectionView(_:cellForItemAt:)"
landmarkType = "7">
</BreakpointContent>
@@ -2905,5 +2905,85 @@
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7EFC41FE-B60A-49CB-B9EA-B5807B0B16BA"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "776"
endingLineNumber = "776"
landmarkName = "collectionView(_:cellForItemAt:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F3E4045E-F870-4AFA-B669-3BA74CE4A944"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "774"
endingLineNumber = "774"
landmarkName = "collectionView(_:cellForItemAt:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "1FB991B7-D6C8-4379-BE42-64E92BFC5115"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "775"
endingLineNumber = "775"
landmarkName = "collectionView(_:cellForItemAt:)"
landmarkType = "7">
<Locations>
<Location
uuid = "1FB991B7-D6C8-4379-BE42-64E92BFC5115 - f2a3ff53cb33940d"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #1 () -&gt; () in OrderScheduling.RescuePendingDispatchController.collectionView(_: __C.UICollectionView, cellForItemAt: Foundation.IndexPath) -&gt; __C.UICollectionViewCell"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "773"
endingLineNumber = "773"
offsetFromSymbolStart = "566">
</Location>
<Location
uuid = "1FB991B7-D6C8-4379-BE42-64E92BFC5115 - ec723f9f922c6918"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #1 @Swift.MainActor () -&gt; () in closure #1 () -&gt; () in OrderScheduling.RescuePendingDispatchController.collectionView(_: __C.UICollectionView, cellForItemAt: Foundation.IndexPath) -&gt; __C.UICollectionViewCell"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "774"
endingLineNumber = "774"
offsetFromSymbolStart = "64">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@@ -40,7 +40,7 @@ class WebViewController : DDViewController {
open override func viewDidLoad() {
super.viewDidLoad()
webView.scrollView.contentInset = UIEdgeInsets(top: -view.safeAreaInsets.top, left: 0, bottom: 0, right: 0)
webView.scrollView.contentInsetAdjustmentBehavior = .never
webView.backgroundColor = .white
webView.navigationDelegate = self
webView.uiDelegate = self
@@ -68,12 +68,12 @@ class WebViewController : DDViewController {
if showNavBar == false {
statusBarBackgroundView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame))
make.height.equalTo(view.safeAreaInsets.top)
}
webView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame) - view.safeAreaInsets.top)
make.top.equalTo(view.safeAreaInsets.top)
make.bottom.equalTo(-view.safeAreaInsets.bottom)
}
}else{

View File

@@ -374,12 +374,14 @@ extension RescueIsIngController {
// MARK: JXCategoryViewDelegate,JXCategoryListContainerViewDelegate
extension RescueController : JXCategoryViewDelegate,JXCategoryListContainerViewDelegate {
func categoryView(_ categoryView: JXCategoryBaseView!, didSelectedItemAt index: Int) {
DispatchQueue.main.async { [weak self] in
if index == 0 {
pendingTableView?.mj_header?.beginRefreshing()
self?.pendingTableView?.mj_header?.beginRefreshing()
}else if index == 1 {
dispatchTableView?.mj_header?.beginRefreshing()
self?.dispatchTableView?.mj_header?.beginRefreshing()
}else if index == 2 {
isRescueTableView?.mj_header?.beginRefreshing()
self?.isRescueTableView?.mj_header?.beginRefreshing()
}
}
}

View File

@@ -10,7 +10,7 @@ import DDControlsKit_Private
import DDCategoryKit_Private
import DDAutoUIKit_Private
import SnapKit
import ZFPlayer
import DDZFPlayerKit_Private
open class VehicleMonitoringVideoDetailController : DDViewController {
private let player : ZFPlayerController

19
Podfile
View File

@@ -7,10 +7,9 @@ target 'OrderScheduling' do
# Comment the next line if you don't want to use dynamic frameworks
use_modular_headers!
# pod 'CocoaDebug', :configurations => ['Debug']
pod 'CocoaDebug'
pod 'CocoaDebug', :configurations => ['Debug']
pod 'ESTabBarController-swift'
pod 'DDCategoryKit_Private'
pod 'DDCategoryKit_Private',:path => '/Users/zd/Desktop/PodRepository/DDCategoryKit_Private'
pod 'DDBasicControlsKit_Private'
pod 'DDColorKit_Private'
pod 'DDFontKit_Private'
@@ -31,16 +30,8 @@ target 'OrderScheduling' do
pod 'MJRefresh'
pod 'DDWebImageKit_Private'
pod 'ZLPhotoBrowser'
pod 'ZFPlayer',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master'
pod 'ZFPlayer/ControlView',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master'
pod 'ZFPlayer/ijkplayer',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master'
pod 'JPush'
# pod 'JPushExtension'
# pod 'ZFPlayer', '~> 4.0'
# pod 'ZFPlayer/ControlView'
# pod 'ZFPlayer/ijkplayer'
# pod 'ZFPlayer/AVPlayer'
pod 'DDZFPlayerKit_Private',:subspecs => ['ControlView','ijkplayer']
pod 'JPush',:modular_headers => true
post_install do |installer|
installer.pods_project.targets.each do |target|
@@ -66,6 +57,6 @@ target 'OrderScheduling' do
end
target 'OrderSchedulingNotificationService' do
pod 'JPush'
pod 'JPush',:modular_headers => true
pod 'JPushExtension'
end

View File

@@ -274,6 +274,10 @@ PODS:
- DDWebImageKit_Private/SDWebImage/Core (0.1.3)
- DDWebImageKit_Private/SDWebImage/MapKit (0.1.3):
- DDWebImageKit_Private/SDWebImage/Core
- DDZFPlayerKit_Private/ControlView (0.1.0):
- ZFPlayer/Core
- DDZFPlayerKit_Private/ijkplayer (0.1.0):
- ZFPlayer/Core
- ESTabBarController-swift (2.8.0)
- IQKeyboardManagerSwift (6.5.12)
- JCore (4.2.1)
@@ -291,13 +295,7 @@ PODS:
- RxSwift (6.5.0)
- SnapKit (5.6.0)
- SwiftEntryKit (2.0.0)
- ZFPlayer (4.0.5):
- ZFPlayer/Core (= 4.0.5)
- ZFPlayer/ControlView (4.0.5):
- ZFPlayer/Core
- ZFPlayer/Core (4.0.5)
- ZFPlayer/ijkplayer (4.0.5):
- ZFPlayer/Core
- ZFPlayer/Core (4.1.4)
- ZLPhotoBrowser (4.4.3.2):
- ZLPhotoBrowser/Core (= 4.4.3.2)
- ZLPhotoBrowser/Core (4.4.3.2)
@@ -306,7 +304,7 @@ DEPENDENCIES:
- CocoaDebug
- DDAutoUIKit_Private
- DDBasicControlsKit_Private
- DDCategoryKit_Private
- DDCategoryKit_Private (from `/Users/zd/Desktop/PodRepository/DDCategoryKit_Private`)
- DDColorKit_Private
- DDControlsKit_Private
- DDFontKit_Private
@@ -316,6 +314,8 @@ DEPENDENCIES:
- DDTimerKit_Private
- DDToastKit_Private
- DDWebImageKit_Private
- DDZFPlayerKit_Private/ControlView
- DDZFPlayerKit_Private/ijkplayer
- ESTabBarController-swift
- IQKeyboardManagerSwift
- JPush
@@ -327,16 +327,12 @@ DEPENDENCIES:
- RxSwift
- SnapKit
- SwiftEntryKit
- "ZFPlayer (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)"
- "ZFPlayer/ControlView (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)"
- "ZFPlayer/ijkplayer (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)"
- ZLPhotoBrowser
SPEC REPOS:
"git@github.com:DDIsFriend/DDSpecs.git":
- DDAutoUIKit_Private
- DDBasicControlsKit_Private
- DDCategoryKit_Private
- DDColorKit_Private
- DDControlsKit_Private
- DDFontKit_Private
@@ -347,6 +343,7 @@ SPEC REPOS:
- DDTimerKit_Private
- DDToastKit_Private
- DDWebImageKit_Private
- DDZFPlayerKit_Private
https://github.com/CocoaPods/Specs.git:
- Alamofire
- AMapFoundation-NO-IDFA
@@ -368,11 +365,12 @@ SPEC REPOS:
- RxSwift
- SnapKit
- SwiftEntryKit
- ZFPlayer
- ZLPhotoBrowser
EXTERNAL SOURCES:
ZFPlayer:
:path: "/Users/zd/Downloads/iOS相关/ZFPlayer-master"
DDCategoryKit_Private:
:path: "/Users/zd/Desktop/PodRepository/DDCategoryKit_Private"
SPEC CHECKSUMS:
Alamofire: 0123a34370cb170936ae79a8df46cc62b2edeb88
@@ -384,7 +382,7 @@ SPEC CHECKSUMS:
CocoaDebug: b38d31464b91a9775928f8667d114db07b136565
DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3
DDBasicControlsKit_Private: 04e64a24551a24e76555835fc14002415db80f94
DDCategoryKit_Private: db12e3f6923e2309dd1894fc36c967d6bce94605
DDCategoryKit_Private: 03994d39831cb9b49670ae9544e33ff408276051
DDColorKit_Private: 77fddb62410a2d5e6fb003083d233c0d7ea0a08f
DDControlsKit_Private: f304e041bb171c6cfacaf0fc55c967fd395cf645
DDFontKit_Private: 7b8f4ebf0f60622874036202734d8460dc7b3806
@@ -395,6 +393,7 @@ SPEC CHECKSUMS:
DDTimerKit_Private: 3713d029a72710f42a5dd5a32083d6aad8f51eb0
DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256
DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76
DDZFPlayerKit_Private: 20f001957c24e1e3b6c0b758ae866a2944be2149
ESTabBarController-swift: 05593a6ad64700b03c0eb60ff625916370aa4136
IQKeyboardManagerSwift: 371b08cb39664fb56030f5345c815a4ffc74bbc0
JCore: d994e32edb50add8a33135473acca799d882c5fa
@@ -408,9 +407,9 @@ SPEC CHECKSUMS:
RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a
ZFPlayer: ba6410f1043fc8a3b7769749f860cf237016df09
ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13
ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b
PODFILE CHECKSUM: b1a489d788c25d6e97cbebd727a83cb2e9715c78
PODFILE CHECKSUM: 6ad862884fe5a397b1d016373784ead787507fcf
COCOAPODS: 1.11.3

View File

@@ -61,9 +61,6 @@ NS_ASSUME_NONNULL_BEGIN
/// 锁定屏幕按钮
@property (nonatomic, strong, readonly) UIButton *lockBtn;
/// 横屏时候是否显示自定义状态栏(iOS13+),默认 NO.
@property (nonatomic, assign) BOOL showCustomStatusBar;
/// 播放器
@property (nonatomic, weak) ZFPlayerController *player;
@@ -103,9 +100,6 @@ NS_ASSUME_NONNULL_BEGIN
/// 视频尺寸改变
- (void)videoPlayer:(ZFPlayerController *)videoPlayer presentationSizeChanged:(CGSize)size;
/// 视频view已经旋转
- (void)videoPlayer:(ZFPlayerController *)videoPlayer orientationWillChange:(ZFOrientationObserver *)observer;
/// 标题和全屏模式
- (void)showTitle:(NSString *_Nullable)title fullScreenMode:(ZFFullScreenMode)fullScreenMode;

View File

@@ -25,7 +25,6 @@
#import "ZFLandScapeControlView.h"
#import "UIView+ZFFrame.h"
#import "ZFUtilities.h"
#import "ZFPlayerStatusBar.h"
#if __has_include(<ZFPlayer/ZFPlayer.h>)
#import <ZFPlayer/ZFPlayerConst.h>
#else
@@ -33,8 +32,6 @@
#endif
@interface ZFLandScapeControlView () <ZFSliderViewDelegate>
@property (nonatomic, strong) ZFPlayerStatusBar *statusBarView;
///
@property (nonatomic, strong) UIView *topToolView;
///
@@ -67,7 +64,6 @@
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self addSubview:self.topToolView];
[self.topToolView addSubview:self.statusBarView];
[self.topToolView addSubview:self.backBtn];
[self.topToolView addSubview:self.titleLabel];
[self addSubview:self.bottomToolView];
@@ -105,19 +101,9 @@
min_h = iPhoneX ? 110 : 80;
self.topToolView.frame = CGRectMake(min_x, min_y, min_w, min_h);
min_x = 0;
min_y = 0;
min_w = min_view_w;
min_h = 20;
self.statusBarView.frame = CGRectMake(min_x, min_y, min_w, min_h);
min_x = (iPhoneX && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) ? 44: 15;
if (@available(iOS 13.0, *)) {
if (self.showCustomStatusBar) {
min_y = self.statusBarView.zf_bottom;
} else {
min_y = UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation) ? 10 : (iPhoneX ? 40 : 20);
}
} else {
min_y = (iPhoneX && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) ? 10: (iPhoneX ? 40 : 20);
}
@@ -245,8 +231,8 @@
@zf_weakify(self)
[self.player seekToTime:self.player.totalTime*value completionHandler:^(BOOL finished) {
@zf_strongify(self)
self.slider.isdragging = NO;
if (finished) {
self.slider.isdragging = NO;
if (self.sliderValueChanged) self.sliderValueChanged(value);
if (self.seekToPlay) {
[self.player.currentPlayerManager play];
@@ -290,7 +276,6 @@
self.topToolView.alpha = 1;
self.bottomToolView.alpha = 1;
self.isShow = NO;
self.lockBtn.selected = self.player.isLockedScreen;
}
- (void)showControlView {
@@ -340,17 +325,6 @@
self.lockBtn.hidden = self.player.orientationObserver.fullScreenMode == ZFFullScreenModePortrait;
}
/// view
- (void)videoPlayer:(ZFPlayerController *)videoPlayer orientationWillChange:(ZFOrientationObserver *)observer {
if (self.showCustomStatusBar) {
if (self.hidden) {
[self.statusBarView destoryTimer];
} else {
[self.statusBarView startTimer];
}
}
}
- (void)videoPlayer:(ZFPlayerController *)videoPlayer currentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime {
if (!self.slider.isdragging) {
NSString *currentTimeString = [ZFUtilities convertTimeSecond:currentTime];
@@ -397,21 +371,8 @@
self.lockBtn.hidden = fullScreenMode == ZFFullScreenModePortrait;
}
- (void)setShowCustomStatusBar:(BOOL)showCustomStatusBar {
_showCustomStatusBar = showCustomStatusBar;
self.statusBarView.hidden = !showCustomStatusBar;
}
#pragma mark - getter
- (ZFPlayerStatusBar *)statusBarView {
if (!_statusBarView) {
_statusBarView = [[ZFPlayerStatusBar alloc] init];
_statusBarView.hidden = YES;
}
return _statusBarView;
}
- (UIView *)topToolView {
if (!_topToolView) {
_topToolView = [[UIView alloc] init];

View File

@@ -110,9 +110,6 @@
/// 是否自定义禁止pan手势默认 NO.
@property (nonatomic, assign) BOOL customDisablePanMovingDirection;
/// 横屏时候是否显示自定义状态栏(iOS13+),默认 NO.
@property (nonatomic, assign) BOOL showCustomStatusBar;
/// 全屏模式
@property (nonatomic, assign) ZFFullScreenMode fullScreenMode;

View File

@@ -351,6 +351,8 @@
if (self.controlViewAppeared) {
[self hideControlViewWithAnimated:YES];
} else {
///
[self hideControlViewWithAnimated:NO];
[self showControlViewWithAnimated:YES];
}
}
@@ -528,7 +530,15 @@
} else {
[self.volumeBrightnessView addSystemVolumeView];
}
[self.landScapeControlView videoPlayer:videoPlayer orientationWillChange:observer];
}
/// view
- (void)videoPlayer:(ZFPlayerController *)videoPlayer orientationDidChanged:(ZFOrientationObserver *)observer {
if (self.controlViewAppeared) {
[self showControlViewWithAnimated:NO];
} else {
[self hideControlViewWithAnimated:NO];
}
}
///
@@ -644,11 +654,6 @@
self.player.orientationObserver.fullScreenMode = fullScreenMode;
}
- (void)setShowCustomStatusBar:(BOOL)showCustomStatusBar {
_showCustomStatusBar = showCustomStatusBar;
self.landScapeControlView.showCustomStatusBar = showCustomStatusBar;
}
#pragma mark - getter
- (UIImageView *)bgImgView {

View File

@@ -188,8 +188,8 @@
@zf_weakify(self)
[self.player seekToTime:self.player.totalTime*value completionHandler:^(BOOL finished) {
@zf_strongify(self)
self.slider.isdragging = NO;
if (finished) {
self.slider.isdragging = NO;
if (self.sliderValueChanged) self.sliderValueChanged(value);
}
}];

View File

@@ -35,11 +35,6 @@
// 屏幕的高
#define ZFPlayer_ScreenHeight [[UIScreen mainScreen] bounds].size.height
#define UIColorFromHex(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
@interface ZFUtilities : NSObject
+ (NSString *)convertTimeSecond:(NSInteger)timeSecond;

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,155 @@
/*
* 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;
- (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));

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,227 @@
/*
* 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;
@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

View File

@@ -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"

View File

@@ -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

View File

@@ -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 */

View File

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

View File

@@ -450,7 +450,7 @@
- (void)setVolume:(float)volume {
_volume = MIN(MAX(0, volume), 1);
self.player.playbackVolume = _volume;
self.player.playbackVolume = volume;
}
@end

19
Pods/DDZFPlayerKit_Private/LICENSE generated Normal file
View File

@@ -0,0 +1,19 @@
Copyright (c) 2023 DDIsFriend <DDIsFriend@163.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

29
Pods/DDZFPlayerKit_Private/README.md generated Normal file
View File

@@ -0,0 +1,29 @@
# DDZFPlayerKit_Private
[![CI Status](https://img.shields.io/travis/DDIsFriend/DDZFPlayerKit_Private.svg?style=flat)](https://travis-ci.org/DDIsFriend/DDZFPlayerKit_Private)
[![Version](https://img.shields.io/cocoapods/v/DDZFPlayerKit_Private.svg?style=flat)](https://cocoapods.org/pods/DDZFPlayerKit_Private)
[![License](https://img.shields.io/cocoapods/l/DDZFPlayerKit_Private.svg?style=flat)](https://cocoapods.org/pods/DDZFPlayerKit_Private)
[![Platform](https://img.shields.io/cocoapods/p/DDZFPlayerKit_Private.svg?style=flat)](https://cocoapods.org/pods/DDZFPlayerKit_Private)
## Example
To run the example project, clone the repo, and run `pod install` from the Example directory first.
## Requirements
## Installation
DDZFPlayerKit_Private is available through [CocoaPods](https://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod 'DDZFPlayerKit_Private'
```
## Author
DDIsFriend, DDIsFriend@163.com
## License
DDZFPlayerKit_Private is available under the MIT license. See the LICENSE file for more info.

View File

@@ -1 +1 @@
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/CALayer+DDCategory/CALayer+DDCategory.h
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/CALayer+DDCategory/CALayer+DDCategory.h

View File

@@ -1 +1 @@
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/DDCategory.h
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/DDCategory.h

View File

@@ -1 +1 @@
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSAttributedString+DDCategory.h
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSAttributedString+DDCategory.h

View File

@@ -1 +1 @@
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSBundle+DDCategory/NSBundle+DDCategory.h
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSBundle+DDCategory/NSBundle+DDCategory.h

View File

@@ -1 +1 @@
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSMutableAttributedString+DDCategory.h
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSMutableAttributedString+DDCategory.h

Some files were not shown because too many files have changed in this diff Show More