SellyCloudSDK.xcframework支持真机,arm64+x86模拟器
This commit is contained in:
@@ -103,7 +103,7 @@ SPEC CHECKSUMS:
|
||||
Reachability: 8bf74b755b2993968c344b465c13e602db2b1044
|
||||
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
|
||||
SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a
|
||||
SellyCloudSDK: 12df57bb234809b1f8c78d2e157950bdc6781ac4
|
||||
SellyCloudSDK: c07484718281c68d42a9aa115a2ac56d8af67d71
|
||||
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
|
||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
|
||||
|
||||
@@ -21,19 +21,14 @@
|
||||
"swift_versions": "5.10",
|
||||
"source_files": "SellyCloudSDK/Classes/**/*",
|
||||
"pod_target_xcconfig": {
|
||||
"VALID_ARCHS": "x86_64 arm64",
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]": "arm64",
|
||||
"CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES": "YES",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD": "c++17",
|
||||
"OTHER_LDFLAGS": "-ObjC"
|
||||
},
|
||||
"user_target_xcconfig": {
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]": "arm64"
|
||||
},
|
||||
"resources": [
|
||||
"SellyCloud/sdk/SellyCloudSDK.framework/*.bundle"
|
||||
],
|
||||
"vendored_frameworks": "SellyCloudSDK/sdk/*.framework",
|
||||
"vendored_frameworks": "SellyCloudSDK/sdk/*.{framework,xcframework}",
|
||||
"dependencies": {
|
||||
"CocoaLumberjack": [
|
||||
"~>3.7.2"
|
||||
|
||||
2
Example/Pods/Manifest.lock
generated
2
Example/Pods/Manifest.lock
generated
@@ -103,7 +103,7 @@ SPEC CHECKSUMS:
|
||||
Reachability: 8bf74b755b2993968c344b465c13e602db2b1044
|
||||
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
|
||||
SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a
|
||||
SellyCloudSDK: 12df57bb234809b1f8c78d2e157950bdc6781ac4
|
||||
SellyCloudSDK: c07484718281c68d42a9aa115a2ac56d8af67d71
|
||||
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
|
||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
|
||||
|
||||
1053
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
1053
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard/Logboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks'
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard/Logboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks'
|
||||
|
||||
@@ -188,9 +188,9 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
|
||||
install_framework "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk/SellyCloudSDK.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework"
|
||||
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK/SellyCloudSDK.framework"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework"
|
||||
@@ -205,9 +205,9 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
|
||||
install_framework "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk/SellyCloudSDK.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework"
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework"
|
||||
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK/SellyCloudSDK.framework"
|
||||
fi
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
wait
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent/FUBeautyComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent/FUCommonUIComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard/Logboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent/FUBeautyComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent/FUCommonUIComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard/Logboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent/FUBeautyComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent/FUCommonUIComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard/Logboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift "$(PLATFORM_DIR)/Developer/Library/Frameworks" '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/FURenderKit/FURenderKit/sdk" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUBeautyComponent/FUBeautyComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FUCommonUIComponent/FUCommonUIComponent.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard/Logboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC/ReactiveObjC.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift "$(PLATFORM_DIR)/Developer/Library/Frameworks" '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@@ -17,10 +17,10 @@ RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
variant_for_slice()
|
||||
{
|
||||
case "$1" in
|
||||
"WebRTC.xcframework/ios-arm64")
|
||||
"SellyCloudSDK.xcframework/ios-arm64")
|
||||
echo ""
|
||||
;;
|
||||
"WebRTC.xcframework/ios-arm64-simulator")
|
||||
"SellyCloudSDK.xcframework/ios-arm64_x86_64-simulator")
|
||||
echo "simulator"
|
||||
;;
|
||||
esac
|
||||
@@ -29,11 +29,11 @@ variant_for_slice()
|
||||
archs_for_slice()
|
||||
{
|
||||
case "$1" in
|
||||
"WebRTC.xcframework/ios-arm64")
|
||||
"SellyCloudSDK.xcframework/ios-arm64")
|
||||
echo "arm64"
|
||||
;;
|
||||
"WebRTC.xcframework/ios-arm64-simulator")
|
||||
echo "arm64"
|
||||
"SellyCloudSDK.xcframework/ios-arm64_x86_64-simulator")
|
||||
echo "arm64 x86_64"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -117,5 +117,5 @@ install_xcframework() {
|
||||
echo "Copied $source to $destination"
|
||||
}
|
||||
|
||||
install_xcframework "${PODS_ROOT}/../../SellyCloudSDK/sdk/WebRTC.xcframework" "SellyCloudSDK" "framework" "ios-arm64" "ios-arm64-simulator"
|
||||
install_xcframework "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk/SellyCloudSDK.xcframework" "SellyCloudSDK" "framework" "ios-arm64" "ios-arm64_x86_64-simulator"
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES
|
||||
CLANG_CXX_LANGUAGE_STANDARD = c++17
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SellyCloudSDK
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC
|
||||
@@ -18,4 +17,3 @@ PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkInterme
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
VALID_ARCHS = x86_64 arm64
|
||||
|
||||
@@ -3,8 +3,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES
|
||||
CLANG_CXX_LANGUAGE_STANDARD = c++17
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SellyCloudSDK
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Logboard" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk" "${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC
|
||||
@@ -18,4 +17,3 @@ PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkInterme
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
VALID_ARCHS = x86_64 arm64
|
||||
|
||||
@@ -835,9 +835,9 @@
|
||||
"${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework",
|
||||
"${PODS_ROOT}/../SubModules/SellyCloudSDK/SellyCloudSDK/sdk/SellyCloudSDK.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/SellyCloudSDK/SellyCloudSDK.framework/SellyCloudSDK",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
@@ -853,9 +853,9 @@
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SSZipArchive.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SellyCloudSDK.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SocketRocket.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYModel.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SellyCloudSDK.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
|
||||
@@ -32,16 +32,14 @@ TODO: Add long description of the pod here.
|
||||
s.swift_version = "5.10"
|
||||
s.source_files = 'SellyCloudSDK/Classes/**/*'
|
||||
|
||||
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 arm64' ,
|
||||
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64',
|
||||
s.pod_target_xcconfig = {
|
||||
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
|
||||
'CLANG_CXX_LANGUAGE_STANDARD' => 'c++17',
|
||||
'OTHER_LDFLAGS' => '-ObjC'
|
||||
}
|
||||
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
|
||||
s.resources = ['SellyCloud/sdk/SellyCloudSDK.framework/*.bundle']
|
||||
|
||||
s.vendored_frameworks = 'SellyCloudSDK/sdk/*.framework'
|
||||
s.vendored_frameworks = 'SellyCloudSDK/sdk/*.{framework,xcframework}'
|
||||
|
||||
s.dependency 'CocoaLumberjack', '~>3.7.2'
|
||||
s.dependency 'CocoaLumberjack/Swift'
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AvailableLibraries</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BinaryPath</key>
|
||||
<string>SellyCloudSDK.framework/SellyCloudSDK</string>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>SellyCloudSDK.framework</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>BinaryPath</key>
|
||||
<string>SellyCloudSDK.framework/SellyCloudSDK</string>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64_x86_64-simulator</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>SellyCloudSDK.framework</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>x86_64</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
<key>SupportedPlatformVariant</key>
|
||||
<string>simulator</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XFWK</string>
|
||||
<key>XCFrameworkFormatVersion</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -385,10 +385,10 @@ SWIFT_CLASS("_TtC13SellyCloudSDK12HKRtmpPusher")
|
||||
@property (nonatomic) NSInteger reconnectInterval;
|
||||
@property (nonatomic) NSInteger reconnectCount;
|
||||
@property (nonatomic, strong) id <HKRtmpPusherProtocol> _Nullable delegate;
|
||||
@property (nonatomic) enum AVCaptureDevicePosition currentPosition;
|
||||
@property (nonatomic) AVCaptureDevicePosition currentPosition;
|
||||
@property (nonatomic) BOOL muted;
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)startRunning:(enum AVCaptureDevicePosition)captureDevicePosition videoConfig:(SellyLiveVideoConfiguration * _Nonnull)videoConfig audioConfig:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startRunning:(AVCaptureDevicePosition)captureDevicePosition videoConfig:(SellyLiveVideoConfiguration * _Nonnull)videoConfig audioConfig:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startRunningAudio:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startLive:(NSString * _Nonnull)urlStr;
|
||||
- (void)stopLive;
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// LFLiveDebug.h
|
||||
// LaiFeng
|
||||
//
|
||||
// Created by LaiFeng on 16/5/20.
|
||||
// Copyright © 2016年 LaiFeng All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface LFLiveDebug : NSObject
|
||||
|
||||
@property (nonatomic, copy) NSString *streamId; ///< 流id
|
||||
@property (nonatomic, copy) NSString *uploadUrl; ///< 流地址
|
||||
@property (nonatomic, assign) CGSize videoSize; ///< 上传的分辨率
|
||||
@property (nonatomic, assign) BOOL isRtmp; ///< 上传方式(TCP or RTMP)
|
||||
|
||||
@property (nonatomic, assign) CGFloat elapsedMilli; ///< 距离上次统计的时间 单位ms
|
||||
@property (nonatomic, assign) CGFloat timeStamp; ///< 当前的时间戳,从而计算1s内数据
|
||||
@property (nonatomic, assign) CGFloat dataFlow; ///< 总流量
|
||||
@property (nonatomic, assign) CGFloat bandwidth; ///< 1s内总带宽
|
||||
@property (nonatomic, assign) CGFloat currentBandwidth; ///< 上次的带宽
|
||||
|
||||
@property (nonatomic, assign) CGFloat audioBandwidth;
|
||||
@property (nonatomic, assign) CGFloat videoBandwidth;
|
||||
@property (nonatomic, assign) CGFloat currentAudioBandwidth;
|
||||
@property (nonatomic, assign) CGFloat currentVideoBandwidth;
|
||||
|
||||
@property (nonatomic, assign) NSInteger dropFrame; ///< 丢掉的帧数
|
||||
@property (nonatomic, assign) NSInteger totalFrame; ///< 总帧数
|
||||
|
||||
@property (nonatomic, assign) NSInteger capturedAudioCount; ///< 1s内音频捕获个数
|
||||
@property (nonatomic, assign) NSInteger capturedVideoCount; ///< 1s内视频捕获个数
|
||||
@property (nonatomic, assign) NSInteger currentCapturedAudioCount; ///< 上次的音频捕获个数
|
||||
@property (nonatomic, assign) NSInteger currentCapturedVideoCount; ///< 上次的视频捕获个数
|
||||
|
||||
@property (nonatomic, assign) NSInteger unSendCount; ///< 未发送个数(代表当前缓冲区等待发送的)
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// SellyCloudManager.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 7/7/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyLiveVideoConfiguration.h"
|
||||
#import "SellyLiveAudioConfiguration.h"
|
||||
#import "SellyLivePusherDelegate.h"
|
||||
#import "SellyLivePlayerDelegate.h"
|
||||
#import "LFLiveDebug.h"
|
||||
#import "SellyPublicDefinition.h"
|
||||
#import "SellyLiveVideoPlayer.h"
|
||||
#import "SellyLiveVideoPusher.h"
|
||||
#import "SellyLivePusherStats.h"
|
||||
#import "SellyRTCSession.h"
|
||||
#import "SellyRTCVideoConfiguration.h"
|
||||
#import "SellyRTCSessionDelegate.h"
|
||||
#import "SellyRTCReplayKitHandler.h"
|
||||
#import "SellyCloudSDKError.h"
|
||||
#import "SellyVodVideoPlayer.h"
|
||||
#import "SellyVodPlayerDelegate.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyCloudManager : NSObject
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
//用户id
|
||||
@property (nonatomic, strong)NSString *userId;
|
||||
|
||||
- (void)startWithVHost:(NSString *)vhost appName:(NSString *)appName;
|
||||
/**
|
||||
设置代理服务器地址(如洋葱盾转化后的地址)
|
||||
@param address 代理地址,格式如 http://127.0.0.1:12345
|
||||
*/
|
||||
+ (void)setProxyAddress:(NSString *)address;
|
||||
|
||||
+ (NSString *)sdkVersion;
|
||||
|
||||
+ (void)uploadLog:(void(^)(NSString * _Nullable url, NSError * _Nullable error))callback;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,998 @@
|
||||
#if 0
|
||||
#elif defined(__arm64__) && __arm64__
|
||||
// Generated by Apple Swift version 6.3 effective-5.10 (swiftlang-6.3.0.123.5 clang-2100.0.123.102)
|
||||
#ifndef SELLYCLOUDSDK_SWIFT_H
|
||||
#define SELLYCLOUDSDK_SWIFT_H
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wgcc-compat"
|
||||
|
||||
#if !defined(__has_include)
|
||||
# define __has_include(x) 0
|
||||
#endif
|
||||
#if !defined(__has_attribute)
|
||||
# define __has_attribute(x) 0
|
||||
#endif
|
||||
#if !defined(__has_feature)
|
||||
# define __has_feature(x) 0
|
||||
#endif
|
||||
#if !defined(__has_warning)
|
||||
# define __has_warning(x) 0
|
||||
#endif
|
||||
|
||||
#if __has_include(<swift/objc-prologue.h>)
|
||||
# include <swift/objc-prologue.h>
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wauto-import"
|
||||
#if defined(__OBJC__)
|
||||
#include <Foundation/Foundation.h>
|
||||
#endif // defined(__OBJC__)
|
||||
#if defined(__cplusplus)
|
||||
#include <cstdint>
|
||||
#include <cstddef>
|
||||
#include <cstdbool>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <new>
|
||||
#include <type_traits>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#if defined(__cplusplus)
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module"
|
||||
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
|
||||
# include <ptrauth.h>
|
||||
#else
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
|
||||
# ifndef __ptrauth_swift_value_witness_function_pointer
|
||||
# define __ptrauth_swift_value_witness_function_pointer(x)
|
||||
# endif
|
||||
# ifndef __ptrauth_swift_class_method_pointer
|
||||
# define __ptrauth_swift_class_method_pointer(x)
|
||||
# endif
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_TYPEDEFS)
|
||||
# define SWIFT_TYPEDEFS 1
|
||||
# if __has_include(<uchar.h>)
|
||||
# include <uchar.h>
|
||||
# elif !defined(__cplusplus)
|
||||
typedef unsigned char char8_t;
|
||||
typedef uint_least16_t char16_t;
|
||||
typedef uint_least32_t char32_t;
|
||||
# endif
|
||||
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_PASTE)
|
||||
# define SWIFT_PASTE_HELPER(x, y) x##y
|
||||
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
|
||||
#endif
|
||||
#if !defined(SWIFT_METATYPE)
|
||||
# define SWIFT_METATYPE(X) Class
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_PROPERTY)
|
||||
# if __has_feature(objc_class_property)
|
||||
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
|
||||
# else
|
||||
# define SWIFT_CLASS_PROPERTY(...)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_RUNTIME_NAME)
|
||||
# if __has_attribute(objc_runtime_name)
|
||||
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
|
||||
# else
|
||||
# define SWIFT_RUNTIME_NAME(X)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_COMPILE_NAME)
|
||||
# if __has_attribute(swift_name)
|
||||
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
|
||||
# else
|
||||
# define SWIFT_COMPILE_NAME(X)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_METHOD_FAMILY)
|
||||
# if __has_attribute(objc_method_family)
|
||||
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
|
||||
# else
|
||||
# define SWIFT_METHOD_FAMILY(X)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_NOESCAPE)
|
||||
# if __has_attribute(noescape)
|
||||
# define SWIFT_NOESCAPE __attribute__((noescape))
|
||||
# else
|
||||
# define SWIFT_NOESCAPE
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_RELEASES_ARGUMENT)
|
||||
# if __has_attribute(ns_consumed)
|
||||
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
|
||||
# else
|
||||
# define SWIFT_RELEASES_ARGUMENT
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_WARN_UNUSED_RESULT)
|
||||
# if __has_attribute(warn_unused_result)
|
||||
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
||||
# else
|
||||
# define SWIFT_WARN_UNUSED_RESULT
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_NORETURN)
|
||||
# if __has_attribute(noreturn)
|
||||
# define SWIFT_NORETURN __attribute__((noreturn))
|
||||
# else
|
||||
# define SWIFT_NORETURN
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_EXTRA)
|
||||
# define SWIFT_CLASS_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_PROTOCOL_EXTRA)
|
||||
# define SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_EXTRA)
|
||||
# define SWIFT_ENUM_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS)
|
||||
# if __has_attribute(objc_subclassing_restricted)
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# else
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_RESILIENT_CLASS)
|
||||
# if __has_attribute(objc_class_stub)
|
||||
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
|
||||
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
|
||||
# else
|
||||
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
|
||||
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_PROTOCOL)
|
||||
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_EXTENSION)
|
||||
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
|
||||
#endif
|
||||
#if !defined(OBJC_DESIGNATED_INITIALIZER)
|
||||
# if __has_attribute(objc_designated_initializer)
|
||||
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
|
||||
# else
|
||||
# define OBJC_DESIGNATED_INITIALIZER
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_ATTR)
|
||||
# if __has_attribute(enum_extensibility)
|
||||
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
|
||||
# else
|
||||
# define SWIFT_ENUM_ATTR(_extensibility)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM)
|
||||
# if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || __has_feature(objc_fixed_enum)
|
||||
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
||||
# if __has_feature(generalized_swift_name)
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
||||
# else
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
|
||||
# endif
|
||||
# else
|
||||
# define SWIFT_ENUM(_type, _name, _extensibility) _type _name; enum
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_TAG)
|
||||
# if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || __has_feature(objc_fixed_enum)
|
||||
# define SWIFT_ENUM_TAG enum
|
||||
# else
|
||||
# define SWIFT_ENUM_TAG
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_FWD_DECL)
|
||||
# if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || __has_feature(objc_fixed_enum)
|
||||
# define SWIFT_ENUM_FWD_DECL(_type, _name) enum _name : _type;
|
||||
# else
|
||||
# define SWIFT_ENUM_FWD_DECL(_type, _name) typedef _type _name;
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE)
|
||||
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE_MSG)
|
||||
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
|
||||
#endif
|
||||
#if !defined(SWIFT_AVAILABILITY)
|
||||
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_AVAILABILITY_DOMAIN)
|
||||
# define SWIFT_AVAILABILITY_DOMAIN(dom, ...) __attribute__((availability(domain: dom, __VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_WEAK_IMPORT)
|
||||
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED)
|
||||
# define SWIFT_DEPRECATED __attribute__((deprecated))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED_MSG)
|
||||
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED_OBJC)
|
||||
# if __has_feature(attribute_diagnose_if_objc)
|
||||
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
|
||||
# else
|
||||
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__OBJC__)
|
||||
#if !defined(IBSegueAction)
|
||||
# define IBSegueAction
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(SWIFT_EXTERN)
|
||||
# if defined(__cplusplus)
|
||||
# define SWIFT_EXTERN extern "C"
|
||||
# else
|
||||
# define SWIFT_EXTERN extern
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_CALL)
|
||||
# define SWIFT_CALL __attribute__((swiftcall))
|
||||
#endif
|
||||
#if !defined(SWIFT_INDIRECT_RESULT)
|
||||
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
|
||||
#endif
|
||||
#if !defined(SWIFT_CONTEXT)
|
||||
# define SWIFT_CONTEXT __attribute__((swift_context))
|
||||
#endif
|
||||
#if !defined(SWIFT_ERROR_RESULT)
|
||||
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
|
||||
#endif
|
||||
#if defined(__cplusplus)
|
||||
# define SWIFT_NOEXCEPT noexcept
|
||||
#else
|
||||
# define SWIFT_NOEXCEPT
|
||||
#endif
|
||||
#if !defined(SWIFT_C_INLINE_THUNK)
|
||||
# if __has_attribute(always_inline)
|
||||
# if __has_attribute(nodebug)
|
||||
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
|
||||
# else
|
||||
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
|
||||
# endif
|
||||
# else
|
||||
# define SWIFT_C_INLINE_THUNK inline
|
||||
# endif
|
||||
#endif
|
||||
#if defined(_WIN32)
|
||||
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
|
||||
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
|
||||
# define SWIFT_IMPORT_STDLIB_SYMBOL
|
||||
#endif
|
||||
#endif
|
||||
#if !__has_feature(nullability)
|
||||
# define _Nonnull
|
||||
# define _Nullable
|
||||
# define _Null_unspecified
|
||||
#elif !defined(__OBJC__)
|
||||
# pragma clang diagnostic ignored "-Wnullability-extension"
|
||||
#endif
|
||||
#if !__has_feature(nullability_nullable_result)
|
||||
# define _Nullable_result _Nullable
|
||||
#endif
|
||||
#if __has_feature(objc_modules)
|
||||
#if __has_warning("-Watimport-in-framework-header")
|
||||
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
||||
#if __has_warning("-Wpragma-clang-attribute")
|
||||
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
|
||||
#endif
|
||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
||||
#pragma clang diagnostic ignored "-Wnullability"
|
||||
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
|
||||
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
|
||||
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma push_macro("any")
|
||||
# undef any
|
||||
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SellyCloudSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
|
||||
# pragma pop_macro("any")
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} // extern "C"
|
||||
#endif
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma clang attribute pop
|
||||
#endif
|
||||
#if defined(__OBJC__)
|
||||
#if __has_feature(objc_modules)
|
||||
#if __has_warning("-Watimport-in-framework-header")
|
||||
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
|
||||
#endif
|
||||
@import AVFoundation;
|
||||
@import CoreFoundation;
|
||||
@import Foundation;
|
||||
@import MetalKit;
|
||||
@import ObjectiveC;
|
||||
@import UIKit;
|
||||
#endif
|
||||
|
||||
#endif // defined(__OBJC__)
|
||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
||||
#if __has_warning("-Wpragma-clang-attribute")
|
||||
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
|
||||
#endif
|
||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
||||
#pragma clang diagnostic ignored "-Wnullability"
|
||||
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
|
||||
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
|
||||
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma push_macro("any")
|
||||
# undef any
|
||||
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SellyCloudSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
|
||||
# pragma pop_macro("any")
|
||||
#endif
|
||||
|
||||
#if defined(__OBJC__)
|
||||
|
||||
@class UIView;
|
||||
@protocol HKRtmpPusherProtocol;
|
||||
@class SellyLiveVideoConfiguration;
|
||||
@class SellyLiveAudioConfiguration;
|
||||
@class NSString;
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK12HKRtmpPusher")
|
||||
@interface HKRtmpPusher : NSObject
|
||||
@property (nonatomic, strong) UIView * _Nullable preview;
|
||||
@property (nonatomic) NSInteger reconnectInterval;
|
||||
@property (nonatomic) NSInteger reconnectCount;
|
||||
@property (nonatomic, strong) id <HKRtmpPusherProtocol> _Nullable delegate;
|
||||
@property (nonatomic) AVCaptureDevicePosition currentPosition;
|
||||
@property (nonatomic) BOOL muted;
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)startRunning:(AVCaptureDevicePosition)captureDevicePosition videoConfig:(SellyLiveVideoConfiguration * _Nonnull)videoConfig audioConfig:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startRunningAudio:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startLive:(NSString * _Nonnull)urlStr;
|
||||
- (void)stopLive;
|
||||
- (void)startCamera;
|
||||
- (void)stopCamera;
|
||||
- (void)switchCamera;
|
||||
- (void)setPreviewView:(UIView * _Nonnull)view;
|
||||
@end
|
||||
|
||||
@class SellyLivePusherStats;
|
||||
SWIFT_PROTOCOL("_TtP13SellyCloudSDK20HKRtmpPusherProtocol_")
|
||||
@protocol HKRtmpPusherProtocol
|
||||
///
|
||||
- (void)pusher:(HKRtmpPusher * _Nonnull)pusher onPushStatusChanged:(NSString * _Nonnull)status;
|
||||
@optional
|
||||
- (void)pusher:(HKRtmpPusher * _Nonnull)pusher onLiveStatsChanged:(SellyLivePusherStats * _Nonnull)stats;
|
||||
@end
|
||||
|
||||
/// The <code>IOStream</code> class is the foundation of a RTMPStream.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK8IOStream")
|
||||
@interface IOStream : NSObject
|
||||
/// The number of frames per second being displayed.
|
||||
@property (nonatomic, readonly) uint16_t currentFPS;
|
||||
/// Creates an object.
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class NSCoder;
|
||||
@protocol MTLDevice;
|
||||
/// A view that displays a video content of a NetStream object which uses Metal api.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK8MTHKView")
|
||||
@interface MTHKView : MTKView
|
||||
/// Initializes and returns a newly allocated view object with the specified frame rectangle.
|
||||
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Returns an object initialized from data in a given unarchiver.
|
||||
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.
|
||||
- (void)awakeFromNib;
|
||||
- (void)drawRect:(CGRect)rect;
|
||||
- (nonnull instancetype)initWithFrame:(CGRect)frameRect device:(id <MTLDevice> _Nullable)device SWIFT_UNAVAILABLE;
|
||||
@end
|
||||
|
||||
/// The NetSocket class creates a two-way connection between a client and a server as a client. This class is wrapper for a InputStream and an OutputStream.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK9NetSocket")
|
||||
@interface NetSocket : NSObject
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
/// The NetClient class creates a two-way connection between a NetService.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK9NetClient")
|
||||
@interface NetClient : NetSocket
|
||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
||||
@end
|
||||
|
||||
/// The NetService class creates a two-way connection between a client and a server as a server.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK10NetService")
|
||||
@interface NetService : NSObject
|
||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
||||
@end
|
||||
|
||||
@class NSNetService;
|
||||
@class NSInputStream;
|
||||
@class NSOutputStream;
|
||||
@interface NetService (SWIFT_EXTENSION(SellyCloudSDK)) <NSNetServiceDelegate>
|
||||
- (void)netService:(NSNetService * _Nonnull)sender didAcceptConnectionWithInputStream:(NSInputStream * _Nonnull)inputStream outputStream:(NSOutputStream * _Nonnull)outputStream;
|
||||
@end
|
||||
|
||||
@class NSStream;
|
||||
@interface NetSocket (SWIFT_EXTENSION(SellyCloudSDK)) <NSStreamDelegate>
|
||||
- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(NSStreamEvent)eventCode;
|
||||
@end
|
||||
|
||||
@class AVSampleBufferDisplayLayer;
|
||||
/// A view that displays a video content of a NetStream object which uses AVSampleBufferDisplayLayer api.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK9PiPHKView")
|
||||
@interface PiPHKView : UIView
|
||||
/// Returns the class used to create the layer for instances of this class.
|
||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class _Nonnull layerClass;)
|
||||
+ (Class _Nonnull)layerClass SWIFT_WARN_UNUSED_RESULT;
|
||||
/// The view’s Core Animation layer used for rendering.
|
||||
@property (nonatomic, readonly, strong) AVSampleBufferDisplayLayer * _Nonnull layer;
|
||||
/// Initializes and returns a newly allocated view object with the specified frame rectangle.
|
||||
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Returns an object initialized from data in a given unarchiver.
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.
|
||||
- (void)awakeFromNib;
|
||||
@end
|
||||
|
||||
/// An object that provides the interface to control a one-way channel over a RtmpConnection.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK10RTMPStream")
|
||||
@interface RTMPStream : IOStream
|
||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
||||
@end
|
||||
|
||||
#endif // defined(__OBJC__)
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma clang attribute pop
|
||||
#endif
|
||||
#if defined(__cplusplus)
|
||||
#endif
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
#elif defined(__x86_64__) && __x86_64__
|
||||
// Generated by Apple Swift version 6.3 effective-5.10 (swiftlang-6.3.0.123.5 clang-2100.0.123.102)
|
||||
#ifndef SELLYCLOUDSDK_SWIFT_H
|
||||
#define SELLYCLOUDSDK_SWIFT_H
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wgcc-compat"
|
||||
|
||||
#if !defined(__has_include)
|
||||
# define __has_include(x) 0
|
||||
#endif
|
||||
#if !defined(__has_attribute)
|
||||
# define __has_attribute(x) 0
|
||||
#endif
|
||||
#if !defined(__has_feature)
|
||||
# define __has_feature(x) 0
|
||||
#endif
|
||||
#if !defined(__has_warning)
|
||||
# define __has_warning(x) 0
|
||||
#endif
|
||||
|
||||
#if __has_include(<swift/objc-prologue.h>)
|
||||
# include <swift/objc-prologue.h>
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wauto-import"
|
||||
#if defined(__OBJC__)
|
||||
#include <Foundation/Foundation.h>
|
||||
#endif // defined(__OBJC__)
|
||||
#if defined(__cplusplus)
|
||||
#include <cstdint>
|
||||
#include <cstddef>
|
||||
#include <cstdbool>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <new>
|
||||
#include <type_traits>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#if defined(__cplusplus)
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module"
|
||||
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
|
||||
# include <ptrauth.h>
|
||||
#else
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
|
||||
# ifndef __ptrauth_swift_value_witness_function_pointer
|
||||
# define __ptrauth_swift_value_witness_function_pointer(x)
|
||||
# endif
|
||||
# ifndef __ptrauth_swift_class_method_pointer
|
||||
# define __ptrauth_swift_class_method_pointer(x)
|
||||
# endif
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_TYPEDEFS)
|
||||
# define SWIFT_TYPEDEFS 1
|
||||
# if __has_include(<uchar.h>)
|
||||
# include <uchar.h>
|
||||
# elif !defined(__cplusplus)
|
||||
typedef unsigned char char8_t;
|
||||
typedef uint_least16_t char16_t;
|
||||
typedef uint_least32_t char32_t;
|
||||
# endif
|
||||
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_PASTE)
|
||||
# define SWIFT_PASTE_HELPER(x, y) x##y
|
||||
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
|
||||
#endif
|
||||
#if !defined(SWIFT_METATYPE)
|
||||
# define SWIFT_METATYPE(X) Class
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_PROPERTY)
|
||||
# if __has_feature(objc_class_property)
|
||||
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
|
||||
# else
|
||||
# define SWIFT_CLASS_PROPERTY(...)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_RUNTIME_NAME)
|
||||
# if __has_attribute(objc_runtime_name)
|
||||
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
|
||||
# else
|
||||
# define SWIFT_RUNTIME_NAME(X)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_COMPILE_NAME)
|
||||
# if __has_attribute(swift_name)
|
||||
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
|
||||
# else
|
||||
# define SWIFT_COMPILE_NAME(X)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_METHOD_FAMILY)
|
||||
# if __has_attribute(objc_method_family)
|
||||
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
|
||||
# else
|
||||
# define SWIFT_METHOD_FAMILY(X)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_NOESCAPE)
|
||||
# if __has_attribute(noescape)
|
||||
# define SWIFT_NOESCAPE __attribute__((noescape))
|
||||
# else
|
||||
# define SWIFT_NOESCAPE
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_RELEASES_ARGUMENT)
|
||||
# if __has_attribute(ns_consumed)
|
||||
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
|
||||
# else
|
||||
# define SWIFT_RELEASES_ARGUMENT
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_WARN_UNUSED_RESULT)
|
||||
# if __has_attribute(warn_unused_result)
|
||||
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
||||
# else
|
||||
# define SWIFT_WARN_UNUSED_RESULT
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_NORETURN)
|
||||
# if __has_attribute(noreturn)
|
||||
# define SWIFT_NORETURN __attribute__((noreturn))
|
||||
# else
|
||||
# define SWIFT_NORETURN
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_EXTRA)
|
||||
# define SWIFT_CLASS_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_PROTOCOL_EXTRA)
|
||||
# define SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_EXTRA)
|
||||
# define SWIFT_ENUM_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS)
|
||||
# if __has_attribute(objc_subclassing_restricted)
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# else
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_RESILIENT_CLASS)
|
||||
# if __has_attribute(objc_class_stub)
|
||||
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
|
||||
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
|
||||
# else
|
||||
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
|
||||
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_PROTOCOL)
|
||||
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_EXTENSION)
|
||||
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
|
||||
#endif
|
||||
#if !defined(OBJC_DESIGNATED_INITIALIZER)
|
||||
# if __has_attribute(objc_designated_initializer)
|
||||
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
|
||||
# else
|
||||
# define OBJC_DESIGNATED_INITIALIZER
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_ATTR)
|
||||
# if __has_attribute(enum_extensibility)
|
||||
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
|
||||
# else
|
||||
# define SWIFT_ENUM_ATTR(_extensibility)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM)
|
||||
# if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || __has_feature(objc_fixed_enum)
|
||||
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
||||
# if __has_feature(generalized_swift_name)
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
||||
# else
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
|
||||
# endif
|
||||
# else
|
||||
# define SWIFT_ENUM(_type, _name, _extensibility) _type _name; enum
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_TAG)
|
||||
# if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || __has_feature(objc_fixed_enum)
|
||||
# define SWIFT_ENUM_TAG enum
|
||||
# else
|
||||
# define SWIFT_ENUM_TAG
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_FWD_DECL)
|
||||
# if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || __has_feature(objc_fixed_enum)
|
||||
# define SWIFT_ENUM_FWD_DECL(_type, _name) enum _name : _type;
|
||||
# else
|
||||
# define SWIFT_ENUM_FWD_DECL(_type, _name) typedef _type _name;
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE)
|
||||
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE_MSG)
|
||||
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
|
||||
#endif
|
||||
#if !defined(SWIFT_AVAILABILITY)
|
||||
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_AVAILABILITY_DOMAIN)
|
||||
# define SWIFT_AVAILABILITY_DOMAIN(dom, ...) __attribute__((availability(domain: dom, __VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_WEAK_IMPORT)
|
||||
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED)
|
||||
# define SWIFT_DEPRECATED __attribute__((deprecated))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED_MSG)
|
||||
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED_OBJC)
|
||||
# if __has_feature(attribute_diagnose_if_objc)
|
||||
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
|
||||
# else
|
||||
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__OBJC__)
|
||||
#if !defined(IBSegueAction)
|
||||
# define IBSegueAction
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(SWIFT_EXTERN)
|
||||
# if defined(__cplusplus)
|
||||
# define SWIFT_EXTERN extern "C"
|
||||
# else
|
||||
# define SWIFT_EXTERN extern
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_CALL)
|
||||
# define SWIFT_CALL __attribute__((swiftcall))
|
||||
#endif
|
||||
#if !defined(SWIFT_INDIRECT_RESULT)
|
||||
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
|
||||
#endif
|
||||
#if !defined(SWIFT_CONTEXT)
|
||||
# define SWIFT_CONTEXT __attribute__((swift_context))
|
||||
#endif
|
||||
#if !defined(SWIFT_ERROR_RESULT)
|
||||
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
|
||||
#endif
|
||||
#if defined(__cplusplus)
|
||||
# define SWIFT_NOEXCEPT noexcept
|
||||
#else
|
||||
# define SWIFT_NOEXCEPT
|
||||
#endif
|
||||
#if !defined(SWIFT_C_INLINE_THUNK)
|
||||
# if __has_attribute(always_inline)
|
||||
# if __has_attribute(nodebug)
|
||||
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
|
||||
# else
|
||||
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
|
||||
# endif
|
||||
# else
|
||||
# define SWIFT_C_INLINE_THUNK inline
|
||||
# endif
|
||||
#endif
|
||||
#if defined(_WIN32)
|
||||
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
|
||||
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
|
||||
# define SWIFT_IMPORT_STDLIB_SYMBOL
|
||||
#endif
|
||||
#endif
|
||||
#if !__has_feature(nullability)
|
||||
# define _Nonnull
|
||||
# define _Nullable
|
||||
# define _Null_unspecified
|
||||
#elif !defined(__OBJC__)
|
||||
# pragma clang diagnostic ignored "-Wnullability-extension"
|
||||
#endif
|
||||
#if !__has_feature(nullability_nullable_result)
|
||||
# define _Nullable_result _Nullable
|
||||
#endif
|
||||
#if __has_feature(objc_modules)
|
||||
#if __has_warning("-Watimport-in-framework-header")
|
||||
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
||||
#if __has_warning("-Wpragma-clang-attribute")
|
||||
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
|
||||
#endif
|
||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
||||
#pragma clang diagnostic ignored "-Wnullability"
|
||||
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
|
||||
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
|
||||
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma push_macro("any")
|
||||
# undef any
|
||||
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SellyCloudSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
|
||||
# pragma pop_macro("any")
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} // extern "C"
|
||||
#endif
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma clang attribute pop
|
||||
#endif
|
||||
#if defined(__OBJC__)
|
||||
#if __has_feature(objc_modules)
|
||||
#if __has_warning("-Watimport-in-framework-header")
|
||||
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
|
||||
#endif
|
||||
@import AVFoundation;
|
||||
@import CoreFoundation;
|
||||
@import Foundation;
|
||||
@import MetalKit;
|
||||
@import ObjectiveC;
|
||||
@import UIKit;
|
||||
#endif
|
||||
|
||||
#endif // defined(__OBJC__)
|
||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
||||
#if __has_warning("-Wpragma-clang-attribute")
|
||||
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
|
||||
#endif
|
||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
||||
#pragma clang diagnostic ignored "-Wnullability"
|
||||
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
|
||||
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
|
||||
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma push_macro("any")
|
||||
# undef any
|
||||
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SellyCloudSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
|
||||
# pragma pop_macro("any")
|
||||
#endif
|
||||
|
||||
#if defined(__OBJC__)
|
||||
|
||||
@class UIView;
|
||||
@protocol HKRtmpPusherProtocol;
|
||||
@class SellyLiveVideoConfiguration;
|
||||
@class SellyLiveAudioConfiguration;
|
||||
@class NSString;
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK12HKRtmpPusher")
|
||||
@interface HKRtmpPusher : NSObject
|
||||
@property (nonatomic, strong) UIView * _Nullable preview;
|
||||
@property (nonatomic) NSInteger reconnectInterval;
|
||||
@property (nonatomic) NSInteger reconnectCount;
|
||||
@property (nonatomic, strong) id <HKRtmpPusherProtocol> _Nullable delegate;
|
||||
@property (nonatomic) AVCaptureDevicePosition currentPosition;
|
||||
@property (nonatomic) BOOL muted;
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)startRunning:(AVCaptureDevicePosition)captureDevicePosition videoConfig:(SellyLiveVideoConfiguration * _Nonnull)videoConfig audioConfig:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startRunningAudio:(SellyLiveAudioConfiguration * _Nonnull)audioConfig;
|
||||
- (void)startLive:(NSString * _Nonnull)urlStr;
|
||||
- (void)stopLive;
|
||||
- (void)startCamera;
|
||||
- (void)stopCamera;
|
||||
- (void)switchCamera;
|
||||
- (void)setPreviewView:(UIView * _Nonnull)view;
|
||||
@end
|
||||
|
||||
@class SellyLivePusherStats;
|
||||
SWIFT_PROTOCOL("_TtP13SellyCloudSDK20HKRtmpPusherProtocol_")
|
||||
@protocol HKRtmpPusherProtocol
|
||||
///
|
||||
- (void)pusher:(HKRtmpPusher * _Nonnull)pusher onPushStatusChanged:(NSString * _Nonnull)status;
|
||||
@optional
|
||||
- (void)pusher:(HKRtmpPusher * _Nonnull)pusher onLiveStatsChanged:(SellyLivePusherStats * _Nonnull)stats;
|
||||
@end
|
||||
|
||||
/// The <code>IOStream</code> class is the foundation of a RTMPStream.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK8IOStream")
|
||||
@interface IOStream : NSObject
|
||||
/// The number of frames per second being displayed.
|
||||
@property (nonatomic, readonly) uint16_t currentFPS;
|
||||
/// Creates an object.
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class NSCoder;
|
||||
@protocol MTLDevice;
|
||||
/// A view that displays a video content of a NetStream object which uses Metal api.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK8MTHKView")
|
||||
@interface MTHKView : MTKView
|
||||
/// Initializes and returns a newly allocated view object with the specified frame rectangle.
|
||||
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Returns an object initialized from data in a given unarchiver.
|
||||
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.
|
||||
- (void)awakeFromNib;
|
||||
- (void)drawRect:(CGRect)rect;
|
||||
- (nonnull instancetype)initWithFrame:(CGRect)frameRect device:(id <MTLDevice> _Nullable)device SWIFT_UNAVAILABLE;
|
||||
@end
|
||||
|
||||
/// The NetSocket class creates a two-way connection between a client and a server as a client. This class is wrapper for a InputStream and an OutputStream.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK9NetSocket")
|
||||
@interface NetSocket : NSObject
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
/// The NetClient class creates a two-way connection between a NetService.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK9NetClient")
|
||||
@interface NetClient : NetSocket
|
||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
||||
@end
|
||||
|
||||
/// The NetService class creates a two-way connection between a client and a server as a server.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK10NetService")
|
||||
@interface NetService : NSObject
|
||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
||||
@end
|
||||
|
||||
@class NSNetService;
|
||||
@class NSInputStream;
|
||||
@class NSOutputStream;
|
||||
@interface NetService (SWIFT_EXTENSION(SellyCloudSDK)) <NSNetServiceDelegate>
|
||||
- (void)netService:(NSNetService * _Nonnull)sender didAcceptConnectionWithInputStream:(NSInputStream * _Nonnull)inputStream outputStream:(NSOutputStream * _Nonnull)outputStream;
|
||||
@end
|
||||
|
||||
@class NSStream;
|
||||
@interface NetSocket (SWIFT_EXTENSION(SellyCloudSDK)) <NSStreamDelegate>
|
||||
- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(NSStreamEvent)eventCode;
|
||||
@end
|
||||
|
||||
@class AVSampleBufferDisplayLayer;
|
||||
/// A view that displays a video content of a NetStream object which uses AVSampleBufferDisplayLayer api.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK9PiPHKView")
|
||||
@interface PiPHKView : UIView
|
||||
/// Returns the class used to create the layer for instances of this class.
|
||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class _Nonnull layerClass;)
|
||||
+ (Class _Nonnull)layerClass SWIFT_WARN_UNUSED_RESULT;
|
||||
/// The view’s Core Animation layer used for rendering.
|
||||
@property (nonatomic, readonly, strong) AVSampleBufferDisplayLayer * _Nonnull layer;
|
||||
/// Initializes and returns a newly allocated view object with the specified frame rectangle.
|
||||
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Returns an object initialized from data in a given unarchiver.
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
/// Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.
|
||||
- (void)awakeFromNib;
|
||||
@end
|
||||
|
||||
/// An object that provides the interface to control a one-way channel over a RtmpConnection.
|
||||
SWIFT_CLASS("_TtC13SellyCloudSDK10RTMPStream")
|
||||
@interface RTMPStream : IOStream
|
||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
||||
@end
|
||||
|
||||
#endif // defined(__OBJC__)
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma clang attribute pop
|
||||
#endif
|
||||
#if defined(__cplusplus)
|
||||
#endif
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
#else
|
||||
#error unsupported Swift architecture
|
||||
#endif
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#import "SellyCloudSDKError.h"
|
||||
#import "SellyLiveAudioConfiguration.h"
|
||||
#import "SellyLivePlayerDelegate.h"
|
||||
#import "SellyLivePlayerStats.h"
|
||||
#import "SellyLivePusherDelegate.h"
|
||||
#import "SellyLivePusherStats.h"
|
||||
#import "SellyLiveVideoConfiguration.h"
|
||||
#import "SellyLiveVideoPlayer.h"
|
||||
#import "SellyLiveVideoPusher.h"
|
||||
#import "SellyPlayerStreamInfo.h"
|
||||
#import "SellyPublicDefinition.h"
|
||||
#import "SellyRTCReplayKitHandler.h"
|
||||
#import "SellyRTCSession.h"
|
||||
#import "SellyRTCSessionDelegate.h"
|
||||
#import "SellyRTCStats.h"
|
||||
#import "SellyRtcVideoCanvas.h"
|
||||
#import "SellyRTCVideoConfiguration.h"
|
||||
#import "SellyRTCVideoFrame.h"
|
||||
#import "SellyVodPlayerDelegate.h"
|
||||
#import "SellyVodVideoPlayer.h"
|
||||
#import "SellyCloudManager.h"
|
||||
#import "LFLiveDebug.h"
|
||||
|
||||
FOUNDATION_EXPORT double SellyCloudSDKVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char SellyCloudSDKVersionString[];
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
//
|
||||
// SellyCloudSDKError.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created on 19/12/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#pragma mark - Error Domain
|
||||
|
||||
/// SellyCloudSDK 错误域
|
||||
FOUNDATION_EXPORT NSErrorDomain const SellyCloudSDKErrorDomain;
|
||||
|
||||
#pragma mark - Error Code Ranges
|
||||
/*
|
||||
错误代码范围规划:
|
||||
|
||||
1000-1999: 通用错误(参数校验、配置错误等)
|
||||
2000-2999: 直播推流相关错误
|
||||
3000-3999: 视频播放相关错误
|
||||
4000-4999: 网络请求相关错误
|
||||
5000-5999: 信令相关错误(WebSocket、RTC信令)
|
||||
6000-6999: 音视频会议相关错误
|
||||
7000-7999: 媒体设备相关错误
|
||||
8000-8999: 编解码相关错误
|
||||
9000-9999: 预留
|
||||
*/
|
||||
|
||||
#pragma mark - Common Errors (1000-1999)
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyCloudSDKErrorCode) {
|
||||
|
||||
// MARK: - 通用错误 (1000-1999)
|
||||
|
||||
/// 通用错误(具体错误见描述)
|
||||
SellyCloudSDKErrorCodeGeneral = 1000,
|
||||
/// 参数为空
|
||||
SellyCloudSDKErrorCodeEmptyParameter = 1001,
|
||||
/// 配置错误
|
||||
SellyCloudSDKErrorCodeInvalidConfiguration = 1002,
|
||||
/// SDK 未初始化
|
||||
SellyCloudSDKErrorCodeNotInitialized = 1003,
|
||||
/// 操作不支持
|
||||
SellyCloudSDKErrorCodeOperationNotSupported = 1004,
|
||||
/// 重复操作
|
||||
SellyCloudSDKErrorCodeDuplicateOperation = 1005,
|
||||
|
||||
// MARK: - 直播推流错误 (2000-2999)
|
||||
|
||||
/// URL/StreamID 不能为空
|
||||
SellyCloudSDKErrorCodePushURLEmpty = 2000,
|
||||
/// 预览窗口不能为空
|
||||
SellyCloudSDKErrorCodePreviewEmpty = 2001,
|
||||
/// 语音直播下无法开启相机
|
||||
SellyCloudSDKErrorCodeCannotStartCameraInAudioMode = 2002,
|
||||
/// 推流已经在运行
|
||||
SellyCloudSDKErrorCodePushAlreadyRunning = 2003,
|
||||
/// 推流未运行
|
||||
SellyCloudSDKErrorCodePushNotRunning = 2004,
|
||||
/// 推流连接失败
|
||||
SellyCloudSDKErrorCodePushConnectionFailed = 2005,
|
||||
/// 推流断开连接
|
||||
SellyCloudSDKErrorCodePushDisconnected = 2006,
|
||||
/// 推流超时
|
||||
SellyCloudSDKErrorCodePushTimeout = 2007,
|
||||
|
||||
// MARK: - 视频播放错误 (3000-3999)
|
||||
|
||||
/// 播放 URL 为空
|
||||
SellyCloudSDKErrorCodePlayURLEmpty = 3000,
|
||||
/// 播放器初始化失败
|
||||
SellyCloudSDKErrorCodePlayerInitFailed = 3001,
|
||||
/// 播放失败
|
||||
SellyCloudSDKErrorCodePlaybackFailed = 3002,
|
||||
/// 播放超时
|
||||
SellyCloudSDKErrorCodePlaybackTimeout = 3003,
|
||||
|
||||
// MARK: - 网络请求错误 (4000-4999)
|
||||
|
||||
/// AppKey/Name 未初始化
|
||||
SellyCloudSDKErrorCodeAppKeyNotInitialized = 4000,
|
||||
/// 网络请求失败
|
||||
SellyCloudSDKErrorCodeNetworkRequestFailed = 4001,
|
||||
/// 网络连接超时
|
||||
SellyCloudSDKErrorCodeNetworkTimeout = 4002,
|
||||
/// 服务器返回错误
|
||||
SellyCloudSDKErrorCodeServerError = 4003,
|
||||
/// 数据解析失败
|
||||
SellyCloudSDKErrorCodeDataParseFailed = 4004,
|
||||
|
||||
// MARK: - 信令相关错误 (5000-5999)
|
||||
|
||||
/// WebSocket 连接失败
|
||||
SellyCloudSDKErrorCodeWebSocketConnectionFailed = 5000,
|
||||
/// WebSocket 断开连接
|
||||
SellyCloudSDKErrorCodeWebSocketDisconnected = 5001,
|
||||
/// 信令超时无响应
|
||||
SellyCloudSDKErrorCodeSignalNoACK = 5002,
|
||||
/// 信令消息为空
|
||||
SellyCloudSDKErrorCodeSignalMessageEmpty = 5003,
|
||||
/// 信令消息格式错误
|
||||
SellyCloudSDKErrorCodeSignalMessageInvalid = 5004,
|
||||
|
||||
// MARK: - 音视频会议错误 (6000-6999)
|
||||
|
||||
/// RTC 连接失败
|
||||
SellyCloudSDKErrorCodeRTCConnectionFailed = 6000,
|
||||
/// RTC 会议创建失败
|
||||
SellyCloudSDKErrorCodeRTCSessionCreateFailed = 6001,
|
||||
/// RTC 对等连接失败
|
||||
SellyCloudSDKErrorCodeRTCP2PConnectionFailed = 6002,
|
||||
/// 加入房间失败
|
||||
SellyCloudSDKErrorCodeJoinRoomFailed = 6003,
|
||||
/// 离开房间失败
|
||||
SellyCloudSDKErrorCodeLeaveRoomFailed = 6004,
|
||||
|
||||
// MARK: - 媒体设备错误 (7000-7999)
|
||||
|
||||
/// 相机权限被拒绝
|
||||
SellyCloudSDKErrorCodeCameraPermissionDenied = 7000,
|
||||
/// 麦克风权限被拒绝
|
||||
SellyCloudSDKErrorCodeMicrophonePermissionDenied = 7001,
|
||||
/// 相机不可用
|
||||
SellyCloudSDKErrorCodeCameraUnavailable = 7002,
|
||||
/// 麦克风不可用
|
||||
SellyCloudSDKErrorCodeMicrophoneUnavailable = 7003,
|
||||
/// 设备占用
|
||||
SellyCloudSDKErrorCodeDeviceBusy = 7004,
|
||||
|
||||
// MARK: - 编解码错误 (8000-8999)
|
||||
|
||||
/// 编码器初始化失败
|
||||
SellyCloudSDKErrorCodeEncoderInitFailed = 8000,
|
||||
/// 解码器初始化失败
|
||||
SellyCloudSDKErrorCodeDecoderInitFailed = 8001,
|
||||
/// 编码失败
|
||||
SellyCloudSDKErrorCodeEncodeFailed = 8002,
|
||||
/// 解码失败
|
||||
SellyCloudSDKErrorCodeDecodeFailed = 8003,
|
||||
};
|
||||
|
||||
#pragma mark - Error UserInfo Keys
|
||||
|
||||
/// 错误的详细描述 key
|
||||
FOUNDATION_EXPORT NSErrorUserInfoKey const SellyCloudSDKErrorDescriptionKey;
|
||||
|
||||
/// 错误的恢复建议 key
|
||||
FOUNDATION_EXPORT NSErrorUserInfoKey const SellyCloudSDKErrorRecoverySuggestionKey;
|
||||
|
||||
/// 底层错误(如系统错误、第三方库错误)key
|
||||
FOUNDATION_EXPORT NSErrorUserInfoKey const SellyCloudSDKErrorUnderlyingErrorKey;
|
||||
|
||||
/// 服务端原始错误码 key(用于调试和日志记录)
|
||||
FOUNDATION_EXPORT NSErrorUserInfoKey const SellyCloudSDKErrorServerCodeKey;
|
||||
|
||||
#pragma mark - Error Creation Helper
|
||||
|
||||
/// 创建 SellyCloudSDK 错误的便捷方法
|
||||
FOUNDATION_EXPORT NSError * SellyCloudSDKError(NSInteger code, NSString *description);
|
||||
|
||||
/// 创建带底层错误的 SellyCloudSDK 错误
|
||||
FOUNDATION_EXPORT NSError * SellyCloudSDKErrorWithUnderlying(NSInteger code, NSString *description, NSError * _Nullable underlyingError);
|
||||
|
||||
/// 创建服务端错误(包含服务端原始错误码)
|
||||
FOUNDATION_EXPORT NSError * SellyCloudSDKServerError(NSInteger serverCode, NSString *description);
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// SellyLiveAudioConfiguration.h
|
||||
// SellyCloudLiveKit
|
||||
//
|
||||
// Created by LaiFeng on 16/5/20.
|
||||
// Copyright © 2016年 LaiFeng All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/// 音频码率 (默认96Kbps)
|
||||
typedef NS_ENUM (NSUInteger, SellyLiveAudioBitRate) {
|
||||
/// 32Kbps 音频码率
|
||||
SellyLiveAudioBitRate_32Kbps = 32000,
|
||||
/// 64Kbps 音频码率
|
||||
SellyLiveAudioBitRate_64Kbps = 64000,
|
||||
/// 96Kbps 音频码率
|
||||
SellyLiveAudioBitRate_96Kbps = 96000,
|
||||
/// 128Kbps 音频码率
|
||||
SellyLiveAudioBitRate_128Kbps = 128000,
|
||||
/// 默认音频码率,默认为 96Kbps
|
||||
SellyLiveAudioBitRate_Default = SellyLiveAudioBitRate_96Kbps
|
||||
};
|
||||
|
||||
/// 音频采样率 (默认44.1KHz)
|
||||
typedef NS_ENUM (NSUInteger, SellyLiveAudioSampleRate){
|
||||
/// 16KHz 采样率
|
||||
SellyLiveAudioSampleRate_16000Hz = 16000,
|
||||
/// 44.1KHz 采样率
|
||||
SellyLiveAudioSampleRate_44100Hz = 44100,
|
||||
/// 48KHz 采样率
|
||||
SellyLiveAudioSampleRate_48000Hz = 48000,
|
||||
/// 默认音频采样率,默认为 44.1KHz
|
||||
SellyLiveAudioSampleRate_Default = SellyLiveAudioSampleRate_44100Hz
|
||||
};
|
||||
|
||||
/// Audio Live quality(音频质量)
|
||||
typedef NS_ENUM (NSUInteger, SellyLiveAudioQuality){
|
||||
/// 低音频质量 audio sample rate: 16KHz audio bitrate: numberOfChannels 1 : 32Kbps 2 : 64Kbps
|
||||
SellyLiveAudioQuality_Low = 0,
|
||||
/// 中音频质量 audio sample rate: 44.1KHz audio bitrate: 96Kbps
|
||||
SellyLiveAudioQuality_Medium = 1,
|
||||
/// 高音频质量 audio sample rate: 44.1MHz audio bitrate: 128Kbps
|
||||
SellyLiveAudioQuality_High = 2,
|
||||
/// 超高音频质量 audio sample rate: 48KHz, audio bitrate: 128Kbps
|
||||
SellyLiveAudioQuality_VeryHigh = 3,
|
||||
/// 默认音频质量 audio sample rate: 44.1KHz, audio bitrate: 96Kbps
|
||||
SellyLiveAudioQuality_Default = SellyLiveAudioQuality_High
|
||||
};
|
||||
|
||||
@interface SellyLiveAudioConfiguration : NSObject<NSCoding, NSCopying>
|
||||
|
||||
/// 默认音频配置
|
||||
+ (instancetype)defaultConfiguration;
|
||||
/// 音频配置
|
||||
+ (instancetype)defaultConfigurationForQuality:(SellyLiveAudioQuality)audioQuality;
|
||||
|
||||
#pragma mark - Attribute
|
||||
///=============================================================================
|
||||
/// @name Attribute
|
||||
///=============================================================================
|
||||
/// 声道数目(default 2)
|
||||
@property (nonatomic, assign) NSUInteger numberOfChannels;
|
||||
/// 采样率
|
||||
@property (nonatomic, assign) SellyLiveAudioSampleRate audioSampleRate;
|
||||
/// 码率
|
||||
@property (nonatomic, assign) SellyLiveAudioBitRate audioBitrate;
|
||||
/// flv编码音频头 44100 为0x12 0x10
|
||||
@property (nonatomic, assign, readonly) char *asc;
|
||||
/// 缓存区长度
|
||||
@property (nonatomic, assign,readonly) NSUInteger bufferLength;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// SellyPlayerDelegate.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 14/7/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyPublicDefinition.h"
|
||||
#import "SellyLiveVideoPlayer.h"
|
||||
#import "SellyRTCVideoFrame.h"
|
||||
#import "SellyLivePlayerStats.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol SellyLivePlayerDelegate <NSObject>
|
||||
@optional
|
||||
/**
|
||||
SellyCloudMPMovieFinishReason
|
||||
*/
|
||||
- (void)player:(SellyLiveVideoPlayer *)player playbackDidFinished:(NSDictionary *)resultInfo;
|
||||
- (void)player:(SellyLiveVideoPlayer *)player playbackStateChanged:(SellyPlayerState)state;
|
||||
/**
|
||||
首帧视频完成加载
|
||||
@param elapse 调用play到加载完成耗时ms
|
||||
*/
|
||||
- (void)player:(SellyLiveVideoPlayer *)player firstRemoteVideoFrame:(NSInteger)elapse;
|
||||
|
||||
/**
|
||||
首帧音频完成加载
|
||||
@param elapse 调用play到加载完成耗时ms
|
||||
*/
|
||||
- (void)player:(SellyLiveVideoPlayer *)player firstRemoteAudioFrame:(NSInteger)elapse;
|
||||
|
||||
/**
|
||||
追帧开始
|
||||
@param rate 追帧速率
|
||||
*/
|
||||
- (void)player:(SellyLiveVideoPlayer *)player onFrameCatchingStart:(CGFloat)rate;
|
||||
|
||||
/**
|
||||
追帧结束
|
||||
*/
|
||||
- (void)playerDidEndFrameCatching:(SellyLiveVideoPlayer *)player;
|
||||
|
||||
- (void)player:(SellyLiveVideoPlayer *)player onError:(NSError *)error;
|
||||
|
||||
/**
|
||||
视频帧渲染回调
|
||||
|
||||
@param player 播放器实例
|
||||
@param videoFrame 视频帧数据
|
||||
@return 是否继续处理该帧
|
||||
* - YES: 不忽略该帧
|
||||
* - NO: 忽略该帧,不会继续渲染
|
||||
*/
|
||||
- (BOOL)player:(SellyLiveVideoPlayer *)player onRenderVideoFrame:(SellyRTCVideoFrame *)videoFrame;
|
||||
|
||||
/**
|
||||
播放器调试信息回调
|
||||
|
||||
@param player 播放器实例
|
||||
@param stats 播放器统计信息,包含各种性能指标和调试数据
|
||||
*/
|
||||
- (void)player:(SellyLiveVideoPlayer *)player onDebugInfo:(SellyLivePlayerStats *)stats;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// SellyLivePlayerStats.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 26/1/13.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyLivePlayerStats : NSObject <NSCopying>
|
||||
|
||||
/// 播放协议(RTMP/HLS/WebRTC等)
|
||||
@property (nonatomic, strong) NSString *protocol;
|
||||
|
||||
/// App / System CPU(%)
|
||||
@property (nonatomic, assign) NSUInteger appCpu;
|
||||
@property (nonatomic, assign) NSUInteger systemCpu;
|
||||
|
||||
/// 视频帧率(fps)
|
||||
@property (nonatomic, assign) NSInteger fps;
|
||||
|
||||
/// 视频 / 音频码率(kbps)
|
||||
@property (nonatomic, assign) NSInteger videoBitrate;
|
||||
@property (nonatomic, assign) NSInteger audioBitrate;
|
||||
|
||||
/// 总下行速率(kbps)等于 videoBitrate + audioBitrate
|
||||
@property (nonatomic, assign) NSInteger netSpeed;
|
||||
|
||||
/// RTT - 往返时延(ms)
|
||||
@property (nonatomic, assign) NSInteger rtt;
|
||||
|
||||
/// 视频分辨率
|
||||
@property (nonatomic, assign) CGSize videoSize;
|
||||
|
||||
/// 快照时间(ms since boot)
|
||||
@property (nonatomic, assign) uint64_t timestampMs;
|
||||
|
||||
/// 是否正在loading
|
||||
@property (nonatomic, assign) BOOL isLoading;
|
||||
|
||||
/// 丢包率(%)
|
||||
@property (nonatomic, assign) CGFloat packetLossRate;
|
||||
|
||||
/// 卡顿时间(ms)- 统计周期内的累积卡顿时长
|
||||
@property (nonatomic, assign) NSUInteger freezeTime;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// SellyCloudRTMPDelegate.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 7/7/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "LFLiveDebug.h"
|
||||
#import "SellyPublicDefinition.h"
|
||||
#import "SellyLivePusherStats.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class SellyLiveVideoPusher;
|
||||
@protocol SellyLivePusherDelegate <NSObject>
|
||||
@optional
|
||||
- (void)pusher:(SellyLiveVideoPusher *)pusher liveStatusDidChanged:(SellyLiveState)status;
|
||||
- (void)pusher:(SellyLiveVideoPusher *)pusher onError:(NSError *)error;
|
||||
//视频前处理
|
||||
- (CVPixelBufferRef)pusher:(SellyLiveVideoPusher *)pusher onCaptureVideoFrame:(CVPixelBufferRef)pixelBuffer;
|
||||
//直播中stats回调
|
||||
- (void)pusher:(SellyLiveVideoPusher *)pusher onStatisticsUpdate:(SellyLivePusherStats *)stats;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// SellyLivePusherStats.h
|
||||
// AFNetworking
|
||||
//
|
||||
// Created by Caleb on 23/9/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyLivePusherStats : NSObject <NSCopying>
|
||||
|
||||
//直播协议
|
||||
@property (nonatomic, strong)NSString *protocol;
|
||||
|
||||
/// App / System CPU(%)
|
||||
@property (nonatomic, assign) NSUInteger appCpu;
|
||||
@property (nonatomic, assign) NSUInteger systemCpu;
|
||||
|
||||
/// 帧率(fps)
|
||||
@property (nonatomic, assign) NSUInteger fps;
|
||||
|
||||
/// 视频 / 音频码率(kbps)
|
||||
@property (nonatomic, assign) NSUInteger videoBitrate;
|
||||
@property (nonatomic, assign) NSUInteger audioBitrate;
|
||||
|
||||
/// 总上行速率(kbps)等于videoBitrate+audioBitrate
|
||||
@property (nonatomic, assign) NSUInteger netSpeed;
|
||||
|
||||
/// RTT(ms)
|
||||
@property (nonatomic, assign) NSUInteger rtt;
|
||||
|
||||
/// 丢包率(%)
|
||||
@property (nonatomic, assign) CGFloat packetLossRate;
|
||||
|
||||
//卡顿时长
|
||||
@property (nonatomic, assign) NSInteger freezeTime;
|
||||
|
||||
/// 快照时间(ms since boot)
|
||||
@property (nonatomic, assign) uint64_t timestampMs;
|
||||
|
||||
//videoSize
|
||||
@property (nonatomic, assign)CGSize size;
|
||||
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// SellyLiveVideoConfiguration.h
|
||||
// SellyCloudLiveKit
|
||||
//
|
||||
// Created by LaiFeng on 16/5/20.
|
||||
// Copyright © 2016年 LaiFeng All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyPublicDefinition.h"
|
||||
|
||||
@interface SellyLiveVideoConfiguration : NSObject <NSCopying>
|
||||
|
||||
/// 默认视频配置
|
||||
+ (instancetype)defaultConfiguration;
|
||||
|
||||
#pragma mark - Attribute
|
||||
///=============================================================================
|
||||
/// @name Attribute
|
||||
///=============================================================================
|
||||
/// 视频输出分辨率,宽高务必设定为 2 的倍数,否则解码播放时可能出现绿边
|
||||
@property (nonatomic, assign) SellyRTCVideoResolution videoSize;
|
||||
|
||||
/// 视频输出方向
|
||||
@property (nonatomic, assign) UIInterfaceOrientation outputImageOrientation;
|
||||
|
||||
/// 视频的帧率,即 fps
|
||||
@property (nonatomic, assign) NSUInteger videoFrameRate;
|
||||
|
||||
/// 视频的最小帧率,即 fps
|
||||
@property (nonatomic, assign) NSUInteger videoMinFrameRate;
|
||||
|
||||
/// 最大关键帧间隔,可设定为 fps 的2倍,影响一个 gop 的大小
|
||||
@property (nonatomic, assign) NSUInteger videoMaxKeyframeInterval;
|
||||
|
||||
/// 视频的码率,单位是 bps
|
||||
@property (nonatomic, assign) NSUInteger videoBitRate;
|
||||
|
||||
/// 视频的最小码率,单位是 bps
|
||||
@property (nonatomic, assign) NSUInteger videoMinBitRate;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// SellyVideoPlayer.h
|
||||
// SellyCloudSDK
|
||||
// 直播rtmp、rtc播放器
|
||||
// Created by Caleb on 17/9/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyPlayerStreamInfo.h"
|
||||
@protocol SellyLivePlayerDelegate;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@interface SellyLiveVideoPlayer : NSObject
|
||||
//接盾的情况下请调用该方法初始化
|
||||
- (void)startPlayStreamInfo:(SellyPlayerStreamInfo *)streamInfo;
|
||||
- (void)startPlayUrl:(NSString *)url;
|
||||
|
||||
- (void)resume;
|
||||
- (void)pause;
|
||||
- (void)stop;
|
||||
- (BOOL)isPlaying;
|
||||
|
||||
/** 截取当前图片 */
|
||||
- (UIImage *)getCurrentImage;
|
||||
|
||||
/** 设置渲染视图(类似腾讯 V2TXLivePlayer 的 setRenderView:)*/
|
||||
- (void)setRenderView:(nullable UIView *)view;
|
||||
|
||||
//业务层需要传入用于显示的容器视图
|
||||
@property (nonatomic, weak, readonly, nullable)UIView *renderView;
|
||||
//代理
|
||||
@property (nonatomic, weak) id<SellyLivePlayerDelegate> delegate;
|
||||
//音量 静音播放设置0即可
|
||||
@property (nonatomic, assign) CGFloat playbackVolume;
|
||||
//播放状态
|
||||
@property(nonatomic, readonly) SellyPlayerState playbackState;
|
||||
//缩放
|
||||
@property (nonatomic, assign)SellyPlayerScalingMode scaleMode;
|
||||
//token
|
||||
@property (nonatomic, strong)NSString *token;
|
||||
/// XOR 解密密钥 (十六进制字符串, 如 @"ABCDEF12")
|
||||
/// 必须为偶数长度且仅包含 0-9, a-f, A-F,传入非法值将抛出 NSInvalidArgumentException 导致 App 崩溃。
|
||||
/// 传 nil 或空字符串表示不解密。
|
||||
@property (nonatomic, copy, nullable)NSString *xorKey;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,131 @@
|
||||
//
|
||||
// SellyVideoPusher.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 18/9/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "SellyLivePusherDelegate.h"
|
||||
#import "SellyPlayerStreamInfo.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@interface SellyLiveVideoPusher : NSObject
|
||||
/**
|
||||
* 初始化直播推流器
|
||||
*
|
||||
* @param liveMode 推流协议类型:RTMP/RTC 协议。
|
||||
*/
|
||||
- (instancetype)initWithLiveMode:(SellyLiveMode)liveMode NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
+ (instancetype)new NS_UNAVAILABLE;
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
/**
|
||||
是否开启本地预览镜像
|
||||
*/
|
||||
@property (nonatomic, assign)BOOL mirror;
|
||||
|
||||
/**
|
||||
开始采集音视频流程,默认会采集语音和视频
|
||||
@param captureDevicePosition 使用前置还是后置摄像头
|
||||
@param videoConfig 视频采集/推流参数,传nil将使用默认推流参数
|
||||
@param audioConfig 音频采集/推流参数,传nil将使用默认推流参数
|
||||
*/
|
||||
- (void)startRunning:(AVCaptureDevicePosition)captureDevicePosition videoConfig:(nullable SellyLiveVideoConfiguration *)videoConfig audioConfig:(nullable SellyLiveAudioConfiguration *)audioConfig;
|
||||
|
||||
/**
|
||||
纯语音直播调用该方法,开始采集语音流程,不会采集视频
|
||||
无法在直播中开启视频,需要开关摄像头的请调用startRunning:videoConfig:audioConfig:方法
|
||||
@param audioConfig 音频采集/推流参数,传nil将使用默认推流参数
|
||||
*/
|
||||
- (void)startRunningAudio:(nullable SellyLiveAudioConfiguration *)audioConfig;
|
||||
|
||||
/**
|
||||
开启视频采集,中途关闭摄像头再次开启需要调用
|
||||
*/
|
||||
- (nullable NSError *)startCamera;
|
||||
/**
|
||||
停止视频采集,中途关闭摄像头调用
|
||||
*/
|
||||
- (void)stopCamera;
|
||||
/**
|
||||
切换前后摄像头
|
||||
*/
|
||||
- (void)switchCameraPosition:(void (^)(NSError * _Nullable error))completion;
|
||||
|
||||
/**
|
||||
开启音频采集
|
||||
*/
|
||||
- (void)startMicrophone;
|
||||
/**
|
||||
停止语音采集
|
||||
*/
|
||||
- (void)stopMicrophone;
|
||||
|
||||
/**
|
||||
开始推流
|
||||
@return 返回nil表示流程成功,不代表推流成功
|
||||
@param url 推流地址
|
||||
*/
|
||||
- (nullable NSError *)startLiveWithUrl:(NSString *)url;
|
||||
- (nullable NSError *)startLiveWithStreamId:(NSString *)streamId;
|
||||
|
||||
/**
|
||||
停止推流
|
||||
*/
|
||||
- (void)stopLive:(void(^)(NSError *error))callback;
|
||||
|
||||
/**
|
||||
截取当前图片
|
||||
*/
|
||||
- (UIImage *)getCurrentImage;
|
||||
|
||||
/**
|
||||
推送静态图片,调用1次即可,不用循环调用
|
||||
*/
|
||||
- (void)pushStaticImage:(UIImage *)image;
|
||||
|
||||
/**
|
||||
停止推送静态图片
|
||||
*/
|
||||
- (void)stopPushImage;
|
||||
|
||||
/**
|
||||
本地预览view
|
||||
*/
|
||||
@property (nonatomic, strong)UIView *preview;
|
||||
|
||||
/**
|
||||
回调
|
||||
*/
|
||||
@property (nonatomic, weak)id<SellyLivePusherDelegate> delegate;
|
||||
@property (nonatomic, assign, readonly)BOOL isMute;
|
||||
@property (nonatomic, assign, readonly)BOOL isCameraEnable;
|
||||
@property (nonatomic, assign, readonly)SellyLiveState liveState;
|
||||
|
||||
/**
|
||||
是否支持视频前置处理,例如实现美颜功能. default no
|
||||
*/
|
||||
@property (nonatomic, assign)BOOL enableCustomVideoProcess;
|
||||
//当前的摄像头方向
|
||||
@property (nonatomic, assign)AVCaptureDevicePosition captureDevicePosition;
|
||||
//缩放
|
||||
@property (nonatomic, assign)SellyPlayerScalingMode scaleMode;
|
||||
//videoConfig
|
||||
@property (nonatomic, assign)SellyLiveVideoConfiguration *videoConfig;
|
||||
//token
|
||||
@property (nonatomic, strong)NSString *token;
|
||||
/// XOR 加密密钥 (十六进制字符串, 如 @"ABCDEF12")
|
||||
/// 必须为偶数长度且仅包含 0-9, a-f, A-F,传入非法值将抛出 NSInvalidArgumentException 导致 App 崩溃。
|
||||
/// 传 nil 或空字符串表示不加密。
|
||||
@property (nonatomic, copy, nullable)NSString *xorKey;
|
||||
|
||||
/// 是否启用 Center Stage(人物居中),默认 NO
|
||||
/// 支持运行时动态切换,不支持的设备设置无效
|
||||
@property (nonatomic, assign) BOOL centerStageEnabled;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// SellyPlayerStreamInfo.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 18/9/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyPlayerStreamInfo : NSObject
|
||||
@property (nonatomic, strong)NSString *streamId;
|
||||
//rtmp,rtc
|
||||
@property (nonatomic, assign)SellyLiveMode protocol;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// SellyPublicDefinition.h
|
||||
// Pods
|
||||
//
|
||||
// Created by Caleb on 22/8/25.
|
||||
//
|
||||
|
||||
#ifndef SellyPublicDefinition_h
|
||||
#define SellyPublicDefinition_h
|
||||
|
||||
//视频输出分辨率
|
||||
typedef CGSize SellyRTCVideoResolution;
|
||||
extern SellyRTCVideoResolution const SellyRTCVideoResolution480x360;
|
||||
extern SellyRTCVideoResolution const SellyRTCVideoResolution480x480;
|
||||
extern SellyRTCVideoResolution const SellyRTCVideoResolution640x360;
|
||||
extern SellyRTCVideoResolution const SellyRTCVideoResolution640x480;
|
||||
extern SellyRTCVideoResolution const SellyRTCVideoResolution960x540;
|
||||
extern SellyRTCVideoResolution const SellyRTCVideoResolution1280x720;
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyVideoCodecType) {
|
||||
SellyVideoCodecTypeH264 = 1,
|
||||
SellyVideoCodecTypeH265 = 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* 支持协议
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, SellyLiveMode) {
|
||||
|
||||
/// 支持协议: RTMP。
|
||||
SellyLiveMode_RTMP,
|
||||
|
||||
/// 支持协议: TRTC。
|
||||
SellyLiveMode_RTC
|
||||
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyPlayerScalingMode) {
|
||||
SellyPlayerScalingModeNone, // No scaling
|
||||
SellyPlayerScalingModeAspectFit, // Uniform scale until one dimension fits
|
||||
SellyPlayerScalingModeAspectFill, // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyPlayerState) {
|
||||
SellyPlayerStateIdle = 0,
|
||||
SellyPlayerStateConnecting = 1,
|
||||
SellyPlayerStatePlaying = 2,
|
||||
SellyPlayerStatePaused = 3,
|
||||
SellyPlayerStateStoppedOrEnded = 4,
|
||||
SellyPlayerStateFailed = 5
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyCloudMPMovieFinishReason) {
|
||||
SellyCloudMPMovieFinishReasonPlaybackEnded,
|
||||
SellyCloudMPMovieFinishReasonPlaybackError,
|
||||
SellyCloudMPMovieFinishReasonUserExited
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyLiveState) {
|
||||
SellyLiveStateIdle = 0, // 初始/未开始
|
||||
SellyLiveStateConnecting, // 建立会话:RTMP连接 或 SDP/ICE协商中
|
||||
SellyLiveStatePublishing, // 已在上行推流(码流稳定输出)
|
||||
SellyLiveStateReconnecting, // 断线重试中(短暂)
|
||||
SellyLiveStateStopped, // 正常结束(stop)
|
||||
SellyLiveStateFailed // 异常结束(错误/不可恢复)
|
||||
};
|
||||
|
||||
typedef NS_ENUM (NSUInteger, SellyCloudLiveSocketErrorCode) {
|
||||
SellyCloudLiveSocketError_PreView = 201, ///< 预览失败
|
||||
SellyCloudLiveSocketError_GetStreamInfo = 202, ///< 获取流媒体信息失败
|
||||
SellyCloudLiveSocketError_ConnectSocket = 203, ///< 连接socket失败
|
||||
SellyCloudLiveSocketError_Verification = 204, ///< 验证服务器失败
|
||||
SellyCloudLiveSocketError_ReConnectTimeOut = 205, ///< 重新连接服务器超时
|
||||
SellyCloudLiveSocketError_HttpRequest = 400, //http请求报错
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, SellyVideoCallType) {
|
||||
SellyVideoCallTypeAudio, // 语音
|
||||
SellyVideoCallTypeVideo, // 视频
|
||||
};
|
||||
|
||||
//信令连接状态
|
||||
typedef NS_ENUM(NSInteger, SellyRoomConnectionState) {
|
||||
SellyRoomStateDisconnected,
|
||||
SellyRoomStateConnecting,
|
||||
SellyRoomStateConnected,
|
||||
SellyRoomStateReconnecting,
|
||||
SellyRoomStateFailed,
|
||||
};
|
||||
|
||||
//屏幕分享状态
|
||||
typedef NS_ENUM(uint8_t, SellyScreenShareState) {
|
||||
SellyScreenShareStateStarted = 1, // 开始
|
||||
SellyScreenShareStatePaused = 2, // 暂停
|
||||
SellyScreenShareStateResumed = 3, // 恢复
|
||||
SellyScreenShareStateStopped = 4, // 结束
|
||||
};
|
||||
#endif /* SellyPublicDefinition_h */
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// SellyRTCReplayKitHandler.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 12/10/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <ReplayKit/ReplayKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyRTCReplayKitHandler : RPBroadcastSampleHandler
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,99 @@
|
||||
//
|
||||
// SellyRTCSession.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 17/11/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyRTCVideoConfiguration.h"
|
||||
#import "SellyRTCSessionDelegate.h"
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "SellyRTCVideoCanvas.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyRTCSession : NSObject
|
||||
|
||||
/**
|
||||
@param isP2p 是否单聊
|
||||
*/
|
||||
- (instancetype)initWithType:(BOOL)isP2p;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
+ (instancetype)new NS_UNAVAILABLE;
|
||||
|
||||
/**
|
||||
@brief 发起通话
|
||||
*/
|
||||
- (void)startWithChannelId:(NSString *)channelId token:(NSString *)token;
|
||||
|
||||
/// 结束通话
|
||||
- (void)end;
|
||||
|
||||
//是否开启本地视频,默认不开启
|
||||
- (void)enableLocalVideo:(BOOL)enable;
|
||||
|
||||
//是否开启本地音频采集,默认开启
|
||||
- (void)enableLocalAudio:(BOOL)enable;
|
||||
|
||||
//切换前后摄像头
|
||||
- (void)switchCamera;
|
||||
|
||||
/**
|
||||
* Starts the local video preview before joining a channel.
|
||||
*
|
||||
* Once you call this method to start the local video preview, if you leave
|
||||
* the channel by calling \ref leaveChannel: leaveChannel, the local video
|
||||
* preview remains until you call \ref stopPreview to disable it.
|
||||
*/
|
||||
- (void)startPreview;
|
||||
|
||||
/**
|
||||
* Stops the local video preview and the video.
|
||||
*/
|
||||
- (void)stopPreview;
|
||||
|
||||
/**
|
||||
屏蔽对方的声音,单聊不用传userId
|
||||
*/
|
||||
- (void)muteRemoteAudioStream:(NSString *)userId mute:(BOOL)mute;
|
||||
|
||||
/**
|
||||
@brief 设置声音输出通道
|
||||
如果没有外接设备(蓝牙,耳机)等,可以直接调用这个方法在听筒和扬声器直接来回切换
|
||||
如果有外接设备,建议直接使用AVRoutePickerView
|
||||
有外接设备的情况下,无法切换为听筒播放,但是可以切换为扬声器播放
|
||||
*/
|
||||
- (void)setAudioOutput:(AVAudioSessionPortOverride)port;
|
||||
|
||||
/**
|
||||
发送自定义消息给对方
|
||||
*/
|
||||
- (void)sendMessage:(NSString *)message completion:(nonnull void (^)(NSError * _Nullable))completion;
|
||||
|
||||
//本地localView
|
||||
- (void)setLocalCanvas:(SellyRTCVideoCanvas *)localCanvas;
|
||||
//远程remoteView
|
||||
- (void)setRemoteCanvas:(SellyRTCVideoCanvas *)remoteCanvas;
|
||||
|
||||
//更新token
|
||||
- (void)renewToken:(NSString * _Nonnull)token;
|
||||
|
||||
//Starts screen sharing.
|
||||
- (void)startScreenCapture;
|
||||
|
||||
//外部推流,不使用sdk默认的视频采集
|
||||
- (void)pushExternalVideoFrame:(CVPixelBufferRef)pixelBuffer;
|
||||
|
||||
//
|
||||
@property (nonatomic, weak)id<SellyRTCSessionDelegate> delegate;
|
||||
|
||||
//视频编码设置 需要在startWithChannelId之前调用
|
||||
@property (nonatomic, strong)SellyRTCVideoConfiguration *videoConfig;
|
||||
|
||||
////通话连接状态
|
||||
@property (nonatomic, assign, readonly)SellyRoomConnectionState connectionState;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// SellyRTCSessionDelegate.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 5/11/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyRTCStats.h"
|
||||
#import "SellyRTCVideoFrame.h"
|
||||
|
||||
@class SellyRTCSession;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
//流的连接状态
|
||||
typedef enum : NSUInteger {
|
||||
SellyRTCConnectStateDisconnected, //断开连接
|
||||
SellyRTCConnectStateConnecting, //连接中
|
||||
SellyRTCConnectStateConnected, //连接成功
|
||||
SellyRTCConnectStateReconnecting, //重连
|
||||
} SellyRTCConnectState;
|
||||
|
||||
@protocol SellyRTCSessionDelegate <NSObject>
|
||||
@optional
|
||||
|
||||
/**
|
||||
通话报错无法恢复,需要结束流程
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onError:(NSError *)error;
|
||||
|
||||
/** A remote user's video was enabled or disabled.
|
||||
@param enabled Enabled or disabled:
|
||||
|
||||
* Yes: User has enabled the video function.
|
||||
* No: User has disabled the video function.
|
||||
|
||||
@param userId Remote user ID.
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session videoEnabled:(BOOL)enabled userId:(nullable NSString *)userId;
|
||||
|
||||
/** A remote user's audio was enabled or disabled.
|
||||
@param enabled Enabled or disabled:
|
||||
|
||||
* Yes: User has enabled the audio function.
|
||||
* No: User has disabled the audio function.
|
||||
|
||||
@param userId Remote user ID.
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session audioEnabled:(BOOL)enabled userId:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
收到对方自定义消息
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session didReceiveMessage:(NSString *)message userId:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
@brief stream连接状态发生改变
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session connectionStateChanged:(SellyRTCConnectState)state userId:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
@brief 会话连接状态发生改变
|
||||
会话重连期间内,ice会持续重启直到超时
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onRoomConnectionStateChanged:(SellyRoomConnectionState)state;
|
||||
|
||||
//视频前处理
|
||||
- (CVPixelBufferRef)rtcSession:(SellyRTCSession * _Nonnull)session onCaptureVideoFrame:(CVPixelBufferRef)pixelBuffer;
|
||||
|
||||
/**
|
||||
* Occurs each time the SDK receives a video frame sent by the remote user.
|
||||
*
|
||||
* After you successfully register the video frame observer, the SDK triggers this callback each time a
|
||||
* video frame is received. In this callback, you can get the video data sent by the remote user. You
|
||||
* can then post-process the data according to your scenarios.
|
||||
*
|
||||
@return Determines whether to ignore the current video frame if the pre-processing fails:
|
||||
* - true: Do not ignore.
|
||||
* - false: Ignore, in which case this method does not sent the current video frame to the SDK.
|
||||
*/
|
||||
- (BOOL)rtcSession:(SellyRTCSession *)session onRenderVideoFrame:(SellyRTCVideoFrame *)videoFrame userId:(NSString *)userId;
|
||||
|
||||
/**
|
||||
统计功能
|
||||
如果是单聊 userId = nil
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onStats:(SellyRTCStats *)stats userId:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
用户加入频道
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onUserJoined:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
用户离开频道
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onUserLeave:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
通话时长回调
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onDuration:(NSInteger)duration;
|
||||
|
||||
/**
|
||||
收到token将要过期消息
|
||||
@param token The token that will expire in 60 seconds.
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session tokenWillExpire:(NSString *)token;
|
||||
|
||||
/**
|
||||
收到token已过期消息
|
||||
token过期后依然可以正常通话,但是断网重连会失败
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session tokenExpired:(NSString *)token;
|
||||
|
||||
/**
|
||||
屏幕分享状态发生变化
|
||||
*/
|
||||
- (void)rtcSession:(SellyRTCSession * _Nonnull)session onScreenShareStatusChanged:(SellyScreenShareState)state;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// SellyRTCP2pStats.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 10/11/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyRTCStats : NSObject
|
||||
/// 基本
|
||||
|
||||
/// 传输(ICE/DTLS)
|
||||
@property(nonatomic, assign) double transportRttMs; // candidate-pair.currentRoundTripTime * 1000
|
||||
@property(nonatomic, copy, nullable) NSString *relayProtocol; // udp/tcp/tls(TURN时可见)
|
||||
@property(nonatomic, copy) NSString *audioCodec;
|
||||
@property(nonatomic, copy) NSString *videoCodec;
|
||||
|
||||
/// 媒体累计字节
|
||||
@property(nonatomic, assign) uint64_t txAudioBytes;
|
||||
@property(nonatomic, assign) uint64_t txVideoBytes;
|
||||
@property(nonatomic, assign) uint64_t rxAudioBytes;
|
||||
@property(nonatomic, assign) uint64_t rxVideoBytes;
|
||||
@property(nonatomic, assign, readonly) uint64_t txBytes; // 汇总
|
||||
@property(nonatomic, assign, readonly) uint64_t rxBytes;
|
||||
|
||||
/// 视频信息(能拿到就填)
|
||||
@property(nonatomic, assign) double sentFps;
|
||||
@property(nonatomic, assign) NSInteger sentWidth;
|
||||
@property(nonatomic, assign) NSInteger sentHeight;
|
||||
@property(nonatomic, assign) double recvFps;
|
||||
@property(nonatomic, assign) NSInteger recvWidth;
|
||||
@property(nonatomic, assign) NSInteger recvHeight;
|
||||
|
||||
/// —— 新增:瞬时 Kbps(由 Helper 用“前一帧”差分计算)——
|
||||
@property(nonatomic, assign) double txAudioKbps; // 本次 - 上次 bytes / Δt
|
||||
@property(nonatomic, assign) double txVideoKbps;
|
||||
@property(nonatomic, assign) double rxAudioKbps;
|
||||
@property(nonatomic, assign) double rxVideoKbps;
|
||||
@property(nonatomic, assign) double txKbps; // = txAudioKbps + txVideoKbps
|
||||
@property(nonatomic, assign) double rxKbps; // = rxAudioKbps + rxVideoKbps
|
||||
|
||||
/// 时间戳(内部用)
|
||||
@property(nonatomic, assign) NSTimeInterval intervalMs; // 与上次快照的间隔(毫秒),首帧为 0
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// SellyRTCVideoConfiguration.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 5/11/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyRTCVideoConfiguration : NSObject
|
||||
//分辨率
|
||||
@property(assign, nonatomic) SellyRTCVideoResolution resolution;
|
||||
//帧率
|
||||
@property(assign, nonatomic) NSInteger frameRate;
|
||||
//最大码率 bps
|
||||
@property(assign, nonatomic) NSInteger maxBitrate;
|
||||
//最小码率 bps
|
||||
@property(assign, nonatomic) NSInteger minBitrate;
|
||||
/**
|
||||
会议模式仅支持h264,单聊支持h264,h265
|
||||
*/
|
||||
@property (nonatomic, assign) SellyVideoCodecType preferCodec;
|
||||
//默认使用前/后置摄像头
|
||||
@property (nonatomic, assign)AVCaptureDevicePosition preferPosition;
|
||||
+ (instancetype)defaultConfig;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// SCSVideoFrame.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 19/11/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreMedia/CoreMedia.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyRTCVideoFrame : NSObject
|
||||
/// 宽度(像素)
|
||||
@property (nonatomic, assign) int width;
|
||||
/// 高度(像素)
|
||||
@property (nonatomic, assign) int height;
|
||||
/// 旋转角度(0 / 90 / 180 / 270)
|
||||
@property (nonatomic, assign) NSInteger rotation;
|
||||
/// 时间戳(可选)
|
||||
@property (nonatomic, assign) int64_t timestamp;
|
||||
/// 像素数据
|
||||
@property (nonatomic, assign, nullable) CVPixelBufferRef pixelBuffer;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// SellyRtcVideoCanvas.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 11/11/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyRTCVideoCanvas : NSObject
|
||||
//用户id
|
||||
@property(strong, nonatomic) NSString *userId;
|
||||
|
||||
/**
|
||||
*The video display view.
|
||||
*/
|
||||
@property(strong, nonatomic) UIView *_Nullable view;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// SellyVodVideoPlayerDelegate.h
|
||||
// SellyCloudSDK
|
||||
//
|
||||
// Created by Caleb on 07/1/26.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SellyPublicDefinition.h"
|
||||
#import "SellyVodVideoPlayer.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol SellyVodPlayerDelegate <NSObject>
|
||||
@optional
|
||||
|
||||
- (void)player:(SellyVodVideoPlayer *)player prepareToPlayChanged:(BOOL)prepare;
|
||||
/**
|
||||
播放完成回调
|
||||
@param resultInfo 包含完成原因(SellyCloudMPMovieFinishReason)等信息的字典
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player playbackDidFinished:(NSDictionary *)resultInfo;
|
||||
|
||||
/**
|
||||
播放状态变化回调
|
||||
状态流转:Idle → Connecting → Playing → Paused/Stopped/Failed
|
||||
@param state 当前播放状态(SellyPlayerState)
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player playbackStateChanged:(SellyPlayerState)state;
|
||||
|
||||
/**
|
||||
首帧视频完成加载
|
||||
@param elapse 调用 play 到首帧渲染完成的耗时(毫秒)
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player firstRemoteVideoFrame:(NSInteger)elapse;
|
||||
|
||||
/**
|
||||
首帧音频完成加载
|
||||
@param elapse 调用 play 到首帧音频播放的耗时(毫秒)
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player firstRemoteAudioFrame:(NSInteger)elapse;
|
||||
|
||||
/**
|
||||
播放进度更新回调(每秒触发一次,适合更新UI进度条)
|
||||
注意:
|
||||
- 如果需要总时长,请访问 player.duration 属性(一次性获取即可)
|
||||
- 如果你只需要偶尔获取进度,建议直接读取 player.currentPlaybackTime 属性,避免不必要的回调
|
||||
@param currentTime 当前播放时间(秒)
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player playbackProgressChanged:(NSTimeInterval)currentTime;
|
||||
|
||||
/**
|
||||
缓冲进度更新回调(当缓冲区发生变化时触发)
|
||||
注意:
|
||||
- 如果需要总时长,请访问 player.duration 属性(一次性获取即可)
|
||||
- 如果你只需要偶尔获取缓冲进度,建议直接读取 player.playableDuration 属性
|
||||
@param playableDuration 已缓冲的可播放时长(秒)
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player bufferProgressChanged:(NSTimeInterval)playableDuration;
|
||||
|
||||
/**
|
||||
错误回调
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)player:(SellyVodVideoPlayer *)player onError:(NSError *)error;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// SellyVodVideoPlayer.h
|
||||
// SellyCloudSDK
|
||||
// 点播播放器
|
||||
// Created by Caleb on 1/7/26.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@protocol SellyVodPlayerDelegate;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SellyVodVideoPlayer : NSObject
|
||||
/**
|
||||
点播开始播放视频
|
||||
@param url 播放地址,支持以下格式:
|
||||
- 网络地址:http(s)://xxx.mp4
|
||||
- 本地文件路径:/var/mobile/.../video.mp4
|
||||
- 本地文件URL:file:///var/mobile/.../video.mp4
|
||||
*/
|
||||
- (void)startPlayUrl:(NSString *)url;
|
||||
|
||||
- (void)resume;
|
||||
- (void)pause;
|
||||
- (void)stop;
|
||||
- (BOOL)isPlaying;
|
||||
|
||||
/** 截取当前图片 */
|
||||
- (UIImage *)getCurrentImage;
|
||||
|
||||
/** 设置渲染视图*/
|
||||
- (void)setRenderView:(nullable UIView *)view;
|
||||
|
||||
//业务层需要传入用于显示的容器视图
|
||||
@property (nonatomic, weak, readonly, nullable)UIView *renderView;
|
||||
//代理
|
||||
@property (nonatomic, weak) id<SellyVodPlayerDelegate> delegate;
|
||||
//音量 静音播放设置0即可
|
||||
@property (nonatomic, assign) CGFloat playbackVolume;
|
||||
//播放状态
|
||||
@property(nonatomic, readonly) SellyPlayerState playbackState;
|
||||
//缩放
|
||||
@property (nonatomic, assign)SellyPlayerScalingMode scaleMode;
|
||||
|
||||
//是否自动开始播放,默认true
|
||||
@property(nonatomic) BOOL shouldAutoplay;
|
||||
//视频时长
|
||||
@property(nonatomic, readonly) NSTimeInterval duration;
|
||||
//可播放时长
|
||||
@property(nonatomic, readonly) NSTimeInterval playableDuration;
|
||||
//当前播放进度
|
||||
@property(nonatomic) NSTimeInterval currentPlaybackTime;
|
||||
@property(nonatomic, readonly) BOOL isPreparedToPlay;
|
||||
//播放速率
|
||||
@property(nonatomic) float playbackRate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ABIRoot": {
|
||||
"kind": "Root",
|
||||
"name": "NO_MODULE",
|
||||
"printedName": "NO_MODULE",
|
||||
"json_format_version": 8
|
||||
},
|
||||
"ConstValues": []
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ABIRoot": {
|
||||
"kind": "Root",
|
||||
"name": "NO_MODULE",
|
||||
"printedName": "NO_MODULE",
|
||||
"json_format_version": 8
|
||||
},
|
||||
"ConstValues": []
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
framework module SellyCloudSDK {
|
||||
umbrella header "SellyCloudSDK-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
|
||||
module SellyCloudSDK.Swift {
|
||||
header "SellyCloudSDK-Swift.h"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,465 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict>
|
||||
<key>Headers/LFLiveDebug.h</key>
|
||||
<data>
|
||||
n4VllQ2oCVCU0fgWxZpu3LHLBcc=
|
||||
</data>
|
||||
<key>Headers/SellyCloudManager.h</key>
|
||||
<data>
|
||||
NzsWvDX+W1XT5Y8q7VW5rZiHjNo=
|
||||
</data>
|
||||
<key>Headers/SellyCloudSDK-Swift.h</key>
|
||||
<data>
|
||||
YDRsJulMuisIWmdePiqhtIrbMAw=
|
||||
</data>
|
||||
<key>Headers/SellyCloudSDK-umbrella.h</key>
|
||||
<data>
|
||||
bCyZ65oHyDvR8j0fy+WTx/+vz+0=
|
||||
</data>
|
||||
<key>Headers/SellyCloudSDKError.h</key>
|
||||
<data>
|
||||
LLeGh8wUSbwjDIYjEvGafLzxUHU=
|
||||
</data>
|
||||
<key>Headers/SellyLiveAudioConfiguration.h</key>
|
||||
<data>
|
||||
hyBzFpLp5uFb+QLbAKMFwPGXbTI=
|
||||
</data>
|
||||
<key>Headers/SellyLivePlayerDelegate.h</key>
|
||||
<data>
|
||||
WfLsf21F+crLU2bFWBVmcaxjP/8=
|
||||
</data>
|
||||
<key>Headers/SellyLivePlayerStats.h</key>
|
||||
<data>
|
||||
s5qPQJ1BEEQvZzJlnFaU50eeg4M=
|
||||
</data>
|
||||
<key>Headers/SellyLivePusherDelegate.h</key>
|
||||
<data>
|
||||
AUuhks5FbxUSUQD66fIfv41fTwI=
|
||||
</data>
|
||||
<key>Headers/SellyLivePusherStats.h</key>
|
||||
<data>
|
||||
Sv8qaR+2dFJ0RkmyW/FOugbyo7A=
|
||||
</data>
|
||||
<key>Headers/SellyLiveVideoConfiguration.h</key>
|
||||
<data>
|
||||
NaANC9bN9JYk4FIXfD5WBDqxXl8=
|
||||
</data>
|
||||
<key>Headers/SellyLiveVideoPlayer.h</key>
|
||||
<data>
|
||||
isZtcqZmuZaX9nKgROI8OnmzYkU=
|
||||
</data>
|
||||
<key>Headers/SellyLiveVideoPusher.h</key>
|
||||
<data>
|
||||
uks3J7iEIcCLQKWhFXo+62FogAk=
|
||||
</data>
|
||||
<key>Headers/SellyPlayerStreamInfo.h</key>
|
||||
<data>
|
||||
9z0gb0JGpCy3pPGXzij1gf2P1/0=
|
||||
</data>
|
||||
<key>Headers/SellyPublicDefinition.h</key>
|
||||
<data>
|
||||
0uftSU4knu+NYGldNj1zd/kwQ7s=
|
||||
</data>
|
||||
<key>Headers/SellyRTCReplayKitHandler.h</key>
|
||||
<data>
|
||||
fDiEcxTg1dZyKZAW6+BM1Db/i/c=
|
||||
</data>
|
||||
<key>Headers/SellyRTCSession.h</key>
|
||||
<data>
|
||||
YV99l4sENCaywBkvqkiNk/cEoJs=
|
||||
</data>
|
||||
<key>Headers/SellyRTCSessionDelegate.h</key>
|
||||
<data>
|
||||
nxC9SdtJv154D1m7UQ1gHiXPysk=
|
||||
</data>
|
||||
<key>Headers/SellyRTCStats.h</key>
|
||||
<data>
|
||||
ntWj5QSjIL94ENeF1ygCRJhvqZw=
|
||||
</data>
|
||||
<key>Headers/SellyRTCVideoConfiguration.h</key>
|
||||
<data>
|
||||
oQCvzX2XMHV20sWxiVG7M2qXx7Q=
|
||||
</data>
|
||||
<key>Headers/SellyRTCVideoFrame.h</key>
|
||||
<data>
|
||||
1pHWg6GxzCzK0NmFP0xnQGgmBGI=
|
||||
</data>
|
||||
<key>Headers/SellyRtcVideoCanvas.h</key>
|
||||
<data>
|
||||
ieDRoRBeMIpkZh8u35Nywc/jKws=
|
||||
</data>
|
||||
<key>Headers/SellyVodPlayerDelegate.h</key>
|
||||
<data>
|
||||
2xJwu/OvqhAbHf1D4RiVt9FRLow=
|
||||
</data>
|
||||
<key>Headers/SellyVodVideoPlayer.h</key>
|
||||
<data>
|
||||
AeZ6EXXKcGLBu9RQHtNtdCXPcSs=
|
||||
</data>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
2dWhPoxwZhcWArWRLGHZVPNlwNY=
|
||||
</data>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
|
||||
<data>
|
||||
gcwBsH4BgyFY4sVtNt+/xOKS3vY=
|
||||
</data>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
|
||||
<data>
|
||||
a4nzUdeP9jQ0Er97OU5Xs+iU7Dg=
|
||||
</data>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
|
||||
<data>
|
||||
ssHp4bycwIFHRZPjaJPYmDg6haY=
|
||||
</data>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
|
||||
<data>
|
||||
gcwBsH4BgyFY4sVtNt+/xOKS3vY=
|
||||
</data>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
|
||||
<data>
|
||||
vXIz/2ahRlZGn0Hnt5RoEXksHM8=
|
||||
</data>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
|
||||
<data>
|
||||
dfgs4oa4XwfHQUiD/5QigTytWuY=
|
||||
</data>
|
||||
<key>Modules/module.modulemap</key>
|
||||
<data>
|
||||
QDzF9gcIS4C8LE5KBqHE5D/wGTk=
|
||||
</data>
|
||||
<key>SellyCloudSDK.bundle/Info.plist</key>
|
||||
<data>
|
||||
MaHS7sft9qCdScbxOphx0/Y4cxk=
|
||||
</data>
|
||||
<key>SellyCloudSDK.bundle/black.jpg</key>
|
||||
<data>
|
||||
N4Hjfo3wl+OzCBvq5YjjRDs96TA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Headers/LFLiveDebug.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
lnXImjQWbWnpLgyXsRbRKmDK2aNKhq+TxdhHdGh2zVI=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyCloudManager.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
I5TxcsKrZHS84PoNPCaptys6XFQXTu3lykZuR0+kfSc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyCloudSDK-Swift.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yWePuXSkVGWtA5eRHwQZ8mfXIP9rqQu+sPbvdyvTu0c=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyCloudSDK-umbrella.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
OHAh8VUZ87WP5e8Sd/UzpsrUaEpj5pnEbYntoe6ssfY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyCloudSDKError.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
S3Caeif51LZApG/AxFDQtST2s6k5QoNpHrJylAsNcbQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLiveAudioConfiguration.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
3LfwFX/V+xkKGQz0d2Tn4LeN1IInUDeZSOFlBKB7I5g=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLivePlayerDelegate.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
3VsIgCyclQVF0hmj7g3MIdal1YvCgOfquhcDBuUr2PA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLivePlayerStats.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
czl/W+kDTBGcYaXQ8dTN5vceBeVCxtjQy1z4UIkn3ow=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLivePusherDelegate.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yU76azcwt6zEcSXM5yGsnGXW3LjKGwAeo+GybC3V4DU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLivePusherStats.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
p57pU/7pjLv7fPBp4o+CE3ctPL3kKkETQxAsGWYHqM0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLiveVideoConfiguration.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
CgDyBwX2OdY+mfwY2xk8MPr7NExJKz20KAMB/0v/76g=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLiveVideoPlayer.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
1UALSPYyzpt2cskREMf9+sDu7PD47YaxATLQh+m8K9w=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyLiveVideoPusher.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
3NQOVilAviIQlKTvYTuBpCJiIGw0IV02Fd7Cc0pPOJU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyPlayerStreamInfo.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
9Ik4Rn+atokSrnSDGZsL8ggkyV5+EGTu2Oua0wOEiBk=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyPublicDefinition.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
TP4UnTsMSSg3Aix8mekRkOrK8LLNNgTrx3aXhmY4+s8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRTCReplayKitHandler.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
AtMFsn9FCUGjNfoYvbbNovbvmdLMexJNGsCj6zURJ4g=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRTCSession.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
L1L3IPP2GRRNdT0JQAyHG7Srf9+667HlZ6J8zRPlaEU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRTCSessionDelegate.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
sjjMuPeE2xrPuQgq8HhUSo+w5wsmOlgBpLO3DH+Y+o0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRTCStats.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
NZ2uhcD3ArK42TfB6aQL+hFG1NNSNxRX3aHOLcy+EjY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRTCVideoConfiguration.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
u1O+U+62iqbRdynTUWDVo+X4bgPWca7ozPOlMM7E/8g=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRTCVideoFrame.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
BIJvSucE+8+QSmEFT77etU+nC5msdVWxJw1pM+WsDww=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyRtcVideoCanvas.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
/L+nK7RtmMhaJJFrZ4db2v9cTYBG35qANiozxWnMOuo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyVodPlayerDelegate.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
gTWNdWZMwUfypeFDLMU1lTxOLcUSfaBHbHnsXp6qC5I=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/SellyVodVideoPlayer.h</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
vlZrOUVjg0gWfrjAQ5noWPHybPBOi+xuiXKlpX4hSoE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Qnesa0n4URGWAopawg9bGx36dUwkYV00BoCJ8LFzlyg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
VH/FP1w4H+8dTuhz8jvdl8zF1jE9W+QNeKO+FgNsCio=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
to/P0ioRNk3QILHiU44Ee83mk+ifIXHkxWKbZGkpbno=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Qnesa0n4URGWAopawg9bGx36dUwkYV00BoCJ8LFzlyg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
qL7Nvz2/Cgdf3dyyx4vEtsmRcu7lw3YAm3eNF5peYmk=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/SellyCloudSDK.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Fsv+uX/0scE7XheG0SFDiEclbRT0Qe94H245Si+UTWI=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/module.modulemap</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
FO57EBZH3fRf9tOajhm60IS36G5jQ8uyD+Z1OQ/0nrs=
|
||||
</data>
|
||||
</dict>
|
||||
<key>SellyCloudSDK.bundle/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
1xz755nY7h6lkSUYg7ruoqJWl82J717B2ZnTjOsOu8c=
|
||||
</data>
|
||||
</dict>
|
||||
<key>SellyCloudSDK.bundle/black.jpg</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
f/1egVxLL/cpZlH6oO6KZcP2KZYR3FE8f5UYnZoIcdk=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Reference in New Issue
Block a user