├── .DS_Store
├── README.md
├── VideoLive-Android
├── .gitignore
├── app
│ ├── .DS_Store
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs
│ │ └── rtc.aar
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── io
│ │ │ └── anyrtc
│ │ │ └── videolive
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── io
│ │ │ │ └── anyrtc
│ │ │ │ └── videolive
│ │ │ │ ├── App.kt
│ │ │ │ ├── api
│ │ │ │ ├── API.kt
│ │ │ │ ├── ServerManager.kt
│ │ │ │ └── bean
│ │ │ │ │ ├── CDNStreamLayoutInfo.kt
│ │ │ │ │ ├── ChatMessageData.kt
│ │ │ │ │ ├── CreateRoomBean.java
│ │ │ │ │ ├── ErrorInfo.kt
│ │ │ │ │ ├── GuestUserInfo.kt
│ │ │ │ │ ├── JoinRoomBean.java
│ │ │ │ │ ├── LeaveRoomBean.kt
│ │ │ │ │ ├── ModifyNameBean.java
│ │ │ │ │ ├── MusicBean.java
│ │ │ │ │ ├── RoomListBean.java
│ │ │ │ │ ├── RoomMusicInfo.java
│ │ │ │ │ ├── SignInBean.java
│ │ │ │ │ ├── SignUpBean.java
│ │ │ │ │ └── UserInfoBean.kt
│ │ │ │ ├── sdk
│ │ │ │ ├── RtcListener.kt
│ │ │ │ ├── RtcManager.kt
│ │ │ │ ├── RtcMember.kt
│ │ │ │ ├── RtmListener.kt
│ │ │ │ └── RtmManager.kt
│ │ │ │ ├── ui
│ │ │ │ ├── RoomListAdapter.kt
│ │ │ │ ├── activity
│ │ │ │ │ ├── AboutActivity.kt
│ │ │ │ │ ├── BaseActivity.kt
│ │ │ │ │ ├── CDNGuestActivity.kt
│ │ │ │ │ ├── CDNHostActivity.kt
│ │ │ │ │ ├── ChatMessageListAdapter.kt
│ │ │ │ │ ├── CreateRoomActivity.kt
│ │ │ │ │ ├── HandsUpListAdapter.kt
│ │ │ │ │ ├── LiveBroadcastBaseActivity.kt
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ ├── RTCGuestActivity.kt
│ │ │ │ │ ├── RTCHostActivity.kt
│ │ │ │ │ └── SplashActivity.kt
│ │ │ │ └── fragment
│ │ │ │ │ ├── HomeFragment.kt
│ │ │ │ │ ├── InputDialogFragment.kt
│ │ │ │ │ └── MineFragment.kt
│ │ │ │ ├── utils
│ │ │ │ ├── AndroidScope.kt
│ │ │ │ ├── Constans.kt
│ │ │ │ ├── Interval.kt
│ │ │ │ ├── IntervalStatus.kt
│ │ │ │ ├── KotlinEX.kt
│ │ │ │ ├── Scope.kt
│ │ │ │ ├── ScreenUtils.kt
│ │ │ │ └── SpUtil.kt
│ │ │ │ ├── view
│ │ │ │ ├── AnyRefreshHeader.kt
│ │ │ │ ├── AnyVideosLayout.kt
│ │ │ │ ├── ChatRecyclerView.kt
│ │ │ │ ├── SmartRefreshRewrite.kt
│ │ │ │ └── videobuilder
│ │ │ │ │ ├── DefaultVideoViewBuilderImpl.kt
│ │ │ │ │ ├── DefaultVideoViewParent.kt
│ │ │ │ │ ├── VideoViewBuilder.kt
│ │ │ │ │ └── VideoViewInterface.kt
│ │ │ │ ├── vm
│ │ │ │ ├── BaseLiveVM.kt
│ │ │ │ ├── CDNLiveVM.kt
│ │ │ │ ├── MainVM.kt
│ │ │ │ └── RTCLiveVM.kt
│ │ │ │ └── weight
│ │ │ │ ├── ItemOffsetsCalculator.kt
│ │ │ │ ├── ItemOffsetsRequestBuilder.kt
│ │ │ │ ├── Spacing.kt
│ │ │ │ └── SpacingItemDecoration.kt
│ │ └── res
│ │ │ ├── anim
│ │ │ └── loading_anim.xml
│ │ │ ├── color
│ │ │ ├── select_bottom.xml
│ │ │ └── selector_create_text_color.xml
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── google.jpg
│ │ │ ├── guest_icon_switch.png
│ │ │ ├── host_icon_camera_disable.png
│ │ │ ├── host_icon_chat.png
│ │ │ ├── host_icon_download.png
│ │ │ ├── host_icon_ear_disabled.png
│ │ │ ├── host_icon_ear_enabled.png
│ │ │ ├── host_icon_group.png
│ │ │ ├── host_icon_leave.png
│ │ │ ├── host_icon_menu.png
│ │ │ ├── host_icon_microphone_disable.png
│ │ │ ├── host_icon_music.png
│ │ │ ├── host_icon_relayout_grid.png
│ │ │ ├── host_icon_relayout_topic.png
│ │ │ ├── host_icon_switch_camera.png
│ │ │ ├── host_icon_upload.png
│ │ │ ├── host_icon_video.png
│ │ │ ├── host_icon_video_disable.png
│ │ │ ├── host_icon_voice.png
│ │ │ ├── host_icon_voice_disable.png
│ │ │ ├── img_create_bg.png
│ │ │ ├── img_faban.png
│ │ │ ├── img_loading.png
│ │ │ ├── img_mianze.png
│ │ │ ├── img_mine_top_bg.png
│ │ │ ├── img_modify_name.png
│ │ │ ├── img_name.png
│ │ │ ├── img_no_room.png
│ │ │ ├── img_refresh_logo.png
│ │ │ ├── img_sdk.png
│ │ │ ├── img_splash_logo.png
│ │ │ ├── img_version.png
│ │ │ ├── img_yinsi.png
│ │ │ ├── img_zhuce.png
│ │ │ ├── tips_icon_camera_disabled.png
│ │ │ ├── tips_icon_camera_enabled.png
│ │ │ ├── tips_icon_headset.png
│ │ │ ├── tips_icon_mike_disabled.png
│ │ │ ├── tips_icon_mike_enabled.png
│ │ │ └── tips_icon_warning.png
│ │ │ ├── drawable
│ │ │ ├── checkbox_resolution_checked.xml
│ │ │ ├── checkbox_resolution_unchecked.xml
│ │ │ ├── checkbox_video_icon.xml
│ │ │ ├── checkbox_voice_icon.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── img_add.xml
│ │ │ ├── img_back.xml
│ │ │ ├── img_back_x.xml
│ │ │ ├── img_back_x_white.xml
│ │ │ ├── img_home.xml
│ │ │ ├── img_mine.xml
│ │ │ ├── message_input_bg.xml
│ │ │ ├── mike_icon_bg.xml
│ │ │ ├── rtc_host_bottom_sheet_agree_bg.xml
│ │ │ ├── rtc_host_bottom_sheet_agree_disabled_bg.xml
│ │ │ ├── rtc_host_bottom_sheet_bg.xml
│ │ │ ├── rtc_host_bottom_sheet_refuse_bg.xml
│ │ │ ├── rtc_host_group_bg.xml
│ │ │ ├── select_room_mode.xml
│ │ │ ├── selector_btn_create.xml
│ │ │ ├── shape_btn_create_select.xml
│ │ │ ├── shape_btn_create_unselect.xml
│ │ │ ├── shape_cdn_loading_bg.xml
│ │ │ ├── shape_create_btn.xml
│ │ │ ├── shape_create_room_mode.xml
│ │ │ ├── shape_et_create_room.xml
│ │ │ ├── shape_guest_text_btn_bg.xml
│ │ │ ├── shape_home_bg.xml
│ │ │ ├── shape_host_bottom_bar.xml
│ │ │ ├── shape_host_music_bg.xml
│ │ │ ├── shape_item_chat_bg.xml
│ │ │ ├── shape_loading_bg.xml
│ │ │ ├── shape_mode_normol.xml
│ │ │ ├── shape_texture_parent_bg.xml
│ │ │ └── shape_toast_tips_bg.xml
│ │ │ ├── layout
│ │ │ ├── activity_about.xml
│ │ │ ├── activity_create_room.xml
│ │ │ ├── activity_guest.xml
│ │ │ ├── activity_host.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_splash.xml
│ │ │ ├── dialog_input.xml
│ │ │ ├── fragment_home.xml
│ │ │ ├── fragment_mine.xml
│ │ │ ├── item_chat.xml
│ │ │ ├── layout_loading.xml
│ │ │ ├── layout_modify_name.xml
│ │ │ ├── layout_no_room.xml
│ │ │ ├── layout_parent_texture.xml
│ │ │ ├── layout_room_list.xml
│ │ │ ├── rtc_host_bottom_sheet_item.xml
│ │ │ ├── rtc_host_menu_sheet.xml
│ │ │ ├── rtc_host_queue_sheet.xml
│ │ │ └── toast_tips.xml
│ │ │ ├── menu
│ │ │ └── tab_menu.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── ic_launcher.xml
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── img_launcher.png
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ ├── style.xml
│ │ │ ├── themes.xml
│ │ │ └── values.xml
│ │ │ └── xml
│ │ │ └── network_security_config.xml
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── anyrtc
│ │ └── videolive
│ │ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── VideoLive-iOS
├── .DS_Store
├── Podfile
├── Podfile.lock
├── Pods
│ ├── .DS_Store
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ ├── a1.xcuserdatad
│ │ │ └── xcschemes
│ │ │ │ ├── Pods-VideoLive-iOS.xcscheme
│ │ │ │ └── xcschememanagement.plist
│ │ │ └── yusheng.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── Pods-VideoLive-iOS.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── Target Support Files
│ │ └── Pods-VideoLive-iOS
│ │ ├── Pods-VideoLive-iOS-Info.plist
│ │ ├── Pods-VideoLive-iOS-acknowledgements.markdown
│ │ ├── Pods-VideoLive-iOS-acknowledgements.plist
│ │ ├── Pods-VideoLive-iOS-dummy.m
│ │ ├── Pods-VideoLive-iOS-frameworks-Debug-input-files.xcfilelist
│ │ ├── Pods-VideoLive-iOS-frameworks-Debug-output-files.xcfilelist
│ │ ├── Pods-VideoLive-iOS-frameworks-Release-input-files.xcfilelist
│ │ ├── Pods-VideoLive-iOS-frameworks-Release-output-files.xcfilelist
│ │ ├── Pods-VideoLive-iOS-frameworks.sh
│ │ ├── Pods-VideoLive-iOS-umbrella.h
│ │ ├── Pods-VideoLive-iOS.debug.xcconfig
│ │ ├── Pods-VideoLive-iOS.modulemap
│ │ └── Pods-VideoLive-iOS.release.xcconfig
├── README.md
├── VideoLive-iOS.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcuserdata
│ │ │ └── a1.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcshareddata
│ │ └── xcschemes
│ │ │ └── VideoLive-iOS.xcscheme
│ └── xcuserdata
│ │ ├── a1.xcuserdatad
│ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ │ └── yusheng.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
├── VideoLive-iOS.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ ├── a1.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── xcdebugger
│ │ │ └── Breakpoints_v2.xcbkptlist
│ │ └── yusheng.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
└── VideoLive-iOS
│ ├── .DS_Store
│ ├── ARBaseNavigationController.swift
│ ├── ARTabBarController.swift
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── .DS_Store
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-1024.png
│ │ ├── Icon-167@2x.png
│ │ ├── Icon-20.png
│ │ ├── Icon-20@2x-1.png
│ │ ├── Icon-20@2x.png
│ │ ├── Icon-20@3x.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-60@3x.png
│ │ ├── Icon-76.png
│ │ ├── Icon-76@2x.png
│ │ ├── Icon-Small-1.png
│ │ ├── Icon-Small.png
│ │ ├── Icon-Small@2x-1.png
│ │ ├── Icon-Small@2x.png
│ │ ├── Icon-Small@3x.png
│ │ ├── Icon-Spotlight-40.png
│ │ ├── Icon-Spotlight-40@2x-1.png
│ │ ├── Icon-Spotlight-40@2x.png
│ │ ├── Icon-Spotlight-40@3x.png
│ │ ├── Icon.png
│ │ └── Icon@2x.png
│ ├── Contents.json
│ └── resource
│ │ ├── .DS_Store
│ │ ├── Contents.json
│ │ ├── icon_add.imageset
│ │ ├── Contents.json
│ │ ├── icon_add@2x.png
│ │ └── icon_add@3x.png
│ │ ├── icon_appversion.imageset
│ │ ├── Contents.json
│ │ ├── icon_appversion@2x.png
│ │ └── icon_appversion@3x.png
│ │ ├── icon_audio.imageset
│ │ ├── Contents.json
│ │ ├── icon_audio@2x.png
│ │ └── icon_audio@3x.png
│ │ ├── icon_audio_close.imageset
│ │ ├── Contents.json
│ │ ├── icon_audio_close@2x.png
│ │ └── icon_audio_close@3x.png
│ │ ├── icon_back.imageset
│ │ ├── Contents.json
│ │ ├── icon_back@2x.png
│ │ └── icon_back@3x.png
│ │ ├── icon_back0.imageset
│ │ ├── Contents.json
│ │ ├── icon_back0@2x.png
│ │ └── icon_back0@3x.png
│ │ ├── icon_back1.imageset
│ │ ├── Contents.json
│ │ ├── icon_back1@2x.png
│ │ └── icon_back1@3x.png
│ │ ├── icon_back2.imageset
│ │ ├── Contents.json
│ │ ├── icon_back2@2x.png
│ │ └── icon_back2@3x.png
│ │ ├── icon_back3.imageset
│ │ ├── Contents.json
│ │ ├── icon_back3@2x.png
│ │ └── icon_back3@3x.png
│ │ ├── icon_back4.imageset
│ │ ├── Contents.json
│ │ ├── icon_back4@2x.png
│ │ └── icon_back4@3x.png
│ │ ├── icon_back5.imageset
│ │ ├── Contents.json
│ │ ├── icon_back5@2x.png
│ │ └── icon_back5@3x.png
│ │ ├── icon_chat.imageset
│ │ ├── Contents.json
│ │ ├── icon_chat@2x.png
│ │ └── icon_chat@3x.png
│ │ ├── icon_close.imageset
│ │ ├── Contents.json
│ │ ├── icon_close@2x.png
│ │ └── icon_close@3x.png
│ │ ├── icon_ear.imageset
│ │ ├── Contents.json
│ │ ├── icon_ear@2x.png
│ │ └── icon_ear@3x.png
│ │ ├── icon_ear_selected.imageset
│ │ ├── Contents.json
│ │ ├── icon_ear_selected@2x.png
│ │ └── icon_ear_selected@3x.png
│ │ ├── icon_edit.imageset
│ │ ├── Contents.json
│ │ ├── icon_edit@2x.png
│ │ └── icon_edit@3x.png
│ │ ├── icon_exit.imageset
│ │ ├── Contents.json
│ │ ├── icon_exit@2x.png
│ │ └── icon_exit@3x.png
│ │ ├── icon_green.imageset
│ │ ├── Contents.json
│ │ ├── icon_green@2x.png
│ │ └── icon_green@3x.png
│ │ ├── icon_hangup.imageset
│ │ ├── Contents.json
│ │ ├── icon_hangup@2x.png
│ │ └── icon_hangup@3x.png
│ │ ├── icon_head.imageset
│ │ ├── Contents.json
│ │ ├── icon_head@2x.png
│ │ └── icon_head@3x.png
│ │ ├── icon_launch.imageset
│ │ ├── Contents.json
│ │ ├── icon_launch@2x.png
│ │ └── icon_launch@3x.png
│ │ ├── icon_loading.imageset
│ │ ├── Contents.json
│ │ ├── icon_loading@2x.png
│ │ └── icon_loading@3x.png
│ │ ├── icon_loadings.imageset
│ │ ├── Contents.json
│ │ ├── icon_loadings@2x.png
│ │ └── icon_loadings@3x.png
│ │ ├── icon_lock.imageset
│ │ ├── Contents.json
│ │ ├── icon_lock@2x.png
│ │ └── icon_lock@3x.png
│ │ ├── icon_log.imageset
│ │ ├── Contents.json
│ │ ├── icon_log@2x.png
│ │ └── icon_log@3x.png
│ │ ├── icon_logo.imageset
│ │ ├── Contents.json
│ │ ├── icon_logo@2x.png
│ │ └── icon_logo@3x.png
│ │ ├── icon_more.imageset
│ │ ├── Contents.json
│ │ ├── icon_more@2x.png
│ │ └── icon_more@3x.png
│ │ ├── icon_more_equal.imageset
│ │ ├── Contents.json
│ │ ├── icon_more_equal@2x.png
│ │ └── icon_more_equal@3x.png
│ │ ├── icon_more_switch.imageset
│ │ ├── Contents.json
│ │ ├── icon_more_switch@2x.png
│ │ └── icon_more_switch@3x.png
│ │ ├── icon_more_unequal.imageset
│ │ ├── Contents.json
│ │ ├── icon_more_unequal@2x.png
│ │ └── icon_more_unequal@3x.png
│ │ ├── icon_music.imageset
│ │ ├── Contents.json
│ │ ├── icon_music@2x.png
│ │ └── icon_music@3x.png
│ │ ├── icon_red.imageset
│ │ ├── Contents.json
│ │ ├── icon_red@2x.png
│ │ └── icon_red@3x.png
│ │ ├── icon_refresh.imageset
│ │ ├── Contents.json
│ │ ├── icon_refresh@2x.png
│ │ └── icon_refresh@3x.png
│ │ ├── icon_register.imageset
│ │ ├── Contents.json
│ │ ├── icon_register@2x.png
│ │ └── icon_register@3x.png
│ │ ├── icon_sdkversion.imageset
│ │ ├── Contents.json
│ │ ├── icon_sdkversion@2x.png
│ │ └── icon_sdkversion@3x.png
│ │ ├── icon_switch.imageset
│ │ ├── Contents.json
│ │ ├── icon_switch@2x.png
│ │ └── icon_switch@3x.png
│ │ ├── icon_time.imageset
│ │ ├── Contents.json
│ │ ├── icon_time@2x.png
│ │ └── icon_time@3x.png
│ │ ├── icon_tip_audio_close.imageset
│ │ ├── Contents.json
│ │ ├── icon_tip_audio_close@2x.png
│ │ └── icon_tip_audio_close@3x.png
│ │ ├── icon_tip_audio_open.imageset
│ │ ├── Contents.json
│ │ ├── icon_tip_audio_open@2x.png
│ │ └── icon_tip_audio_open@3x.png
│ │ ├── icon_tip_head.imageset
│ │ ├── Contents.json
│ │ ├── icon_tip_head@2x.png
│ │ └── icon_tip_head@3x.png
│ │ ├── icon_tip_video_close.imageset
│ │ ├── Contents.json
│ │ ├── icon_tip_video_close@2x.png
│ │ └── icon_tip_video_close@3x.png
│ │ ├── icon_tip_video_open.imageset
│ │ ├── Contents.json
│ │ ├── icon_tip_video_open@2x.png
│ │ └── icon_tip_video_open@3x.png
│ │ ├── icon_tip_warning.imageset
│ │ ├── Contents.json
│ │ ├── icon_tip_warning@2x.png
│ │ └── icon_tip_warning@3x.png
│ │ ├── icon_video.imageset
│ │ ├── Contents.json
│ │ ├── icon_video@2x.png
│ │ └── icon_video@3x.png
│ │ └── icon_video_close.imageset
│ │ ├── Contents.json
│ │ ├── icon_video_close@2x.png
│ │ └── icon_video_close@3x.png
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Common
│ ├── .DS_Store
│ ├── ARBaseViewController.swift
│ ├── ARExtension.swift
│ ├── ARNetWorkHepler.swift
│ ├── ARPlaceholderView.swift
│ ├── ARStatisticsInfo.swift
│ ├── ARVideoView.swift
│ ├── ARVideoView.xib
│ └── Category
│ │ ├── .DS_Store
│ │ ├── UIAlertController+Blocks.h
│ │ ├── UIAlertController+Blocks.m
│ │ └── VideoLive-iOS-Bridging-Header.h
│ ├── Info.plist
│ ├── Log.storyboard
│ ├── Main
│ ├── ARCreateViewController.swift
│ └── ARMainViewController.swift
│ ├── Settings
│ ├── AREditViewController.swift
│ ├── ARSetupViewController.swift
│ └── ARStatementViewController.swift
│ └── Video
│ ├── .DS_Store
│ ├── ARMicViewController.swift
│ ├── ARMoreViewController.swift
│ ├── ARVideoViewController.swift
│ └── LogViewController.swift
├── audience.png
├── effect.png
├── host.png
└── native_to_cdn.png
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-Android/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 | *.aab
5 |
6 | # Files for the ART/Dalvik VM
7 | *.dex
8 |
9 | # Java class files
10 | *.class
11 |
12 | # Generated files
13 | bin/
14 | gen/
15 | out/
16 |
17 | # Gradle files
18 | .gradle/
19 | build/
20 |
21 | # Local configuration file (sdk path, etc)
22 | local.properties
23 |
24 | # Proguard folder generated by Eclipse
25 | proguard/
26 |
27 | # Log Files
28 | *.log
29 |
30 | # Android Studio Navigation editor temp files
31 | .navigation/
32 |
33 | # Android Studio captures folder
34 | captures/
35 |
36 | # IntelliJ
37 | *.iml
38 | .idea/
39 | .idea/workspace.xml
40 | .idea/tasks.xml
41 | .idea/gradle.xml
42 | .idea/assetWizardSettings.xml
43 | .idea/dictionaries
44 | .idea/libraries
45 | .idea/caches
46 |
47 | # Keystore files
48 | # Uncomment the following lines if you do not want to check your keystore files in.
49 | #*.jks
50 | #*.keystore
51 |
52 | # External native build folder generated in Android Studio 2.2 and later
53 | .externalNativeBuild
54 |
55 | # Google Services (e.g. APIs or Firebase)
56 | # google-services.json
57 |
58 | # Freeline
59 | freeline.py
60 | freeline/
61 | freeline_project_description.json
62 |
63 | # fastlane
64 | fastlane/report.xml
65 | fastlane/Preview.html
66 | fastlane/screenshots
67 | fastlane/test_output
68 | fastlane/readme.md
69 |
70 | # Version control
71 | vcs.xml
72 |
73 | # lint
74 | lint/intermediates/
75 | lint/generated/
76 | lint/outputs/
77 | lint/tmp/
78 | # lint/reports/
79 | app/release
80 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-Android/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/VideoLive-Android/app/libs/rtc.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/libs/rtc.aar
--------------------------------------------------------------------------------
/VideoLive-Android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/androidTest/java/io/anyrtc/videolive/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("io.anyrtc.videolive", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
21 |
24 |
25 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
35 |
37 |
39 |
41 |
43 |
45 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/App.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive
2 |
3 | import android.app.Application
4 | import android.content.pm.ApplicationInfo
5 | import com.hjq.permissions.XXPermissions
6 | import com.kongzue.dialog.util.DialogSettings
7 | import io.anyrtc.videolive.utils.Constans.HTTP_TOKEN
8 | import io.anyrtc.videolive.utils.SpUtil
9 | import okhttp3.OkHttpClient
10 | import rxhttp.RxHttpPlugins
11 | import rxhttp.wrapper.ssl.HttpsUtils
12 | import java.util.concurrent.TimeUnit
13 | import javax.net.ssl.HostnameVerifier
14 | import javax.net.ssl.SSLSession
15 | import kotlin.properties.Delegates
16 |
17 |
18 | class App : Application() {
19 |
20 | companion object{
21 | var app : App by Delegates.notNull()
22 | }
23 |
24 | override fun onCreate() {
25 | super.onCreate()
26 | app = this
27 | SpUtil.init(this)
28 | XXPermissions.setScopedStorage(true)
29 | DialogSettings.style = DialogSettings.STYLE.STYLE_IOS
30 | RxHttpPlugins.init(getDefaultOkHttpClient()).setDebug(BuildConfig.DEBUG)
31 | .setOnParamAssembly {
32 | val token = SpUtil.get().getString(HTTP_TOKEN, "")
33 | if (!token.isNullOrEmpty()){
34 | it.addHeader("Authorization", "Bearer $token")
35 | }
36 | it
37 | }
38 | }
39 |
40 | private fun getDefaultOkHttpClient(): OkHttpClient? {
41 | val sslParams = HttpsUtils.getSslSocketFactory()
42 | return OkHttpClient.Builder()
43 | .connectTimeout(10, TimeUnit.SECONDS)
44 | .readTimeout(10, TimeUnit.SECONDS)
45 | .writeTimeout(10, TimeUnit.SECONDS)
46 | .sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager) //添加信任证书
47 | .hostnameVerifier(HostnameVerifier { hostname: String?, session: SSLSession? -> true }) //忽略host验证
48 | .build()
49 | }
50 |
51 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/API.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api
2 |
3 | import io.anyrtc.videolive.BuildConfig
4 | import rxhttp.wrapper.annotation.DefaultDomain
5 |
6 | object API {
7 |
8 | @DefaultDomain
9 | /*@JvmField
10 | val BASE_API = if (!BuildConfig.DEBUG) {
11 | "http://192.168.1.115:12680/arapi/arlive/v1/"
12 | } else {
13 | "http://arlive.agrtc.cn:12680/arapi/arlive/v1/"
14 | }*/
15 | const val BASE_API = "http://arlive.agrtc.cn:12680/arapi/arlive/v1/"
16 |
17 | const val SIGN_UP = "user/signUp"
18 |
19 | const val SIGN_IN = "user/signIn"
20 |
21 | const val GET_ROOM_LIST = "user/getVidRoomList"
22 |
23 | const val CREATE_ROOM = "user/addRoom" //6:视频RTC实时直播,7:视频客户端推流到CDN,8:视频服务端推流到CDN
24 |
25 | const val DELETE_ROOM = "user/deleteRoom"
26 |
27 | const val JOIN_ROOM = "user/joinRoom"
28 |
29 | const val LEAVE_ROOM = "user/updateV2UserLeaveTs"
30 |
31 | const val MODIFY_NAME = "user/updateUserName"
32 |
33 | const val GET_MUSIC = "user/getMusicList"
34 |
35 | const val UPDATE_MUSIC_STATES = "user/updateMusicState"
36 |
37 | const val GET_ROOM_MUSIC_INFO = "user/getRoomMusicInfo"
38 |
39 | const val GET_USER_INFO = "user/getUserInfo"
40 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/CDNStreamLayoutInfo.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean
2 |
3 | data class CDNStreamLayoutInfo(
4 | val uid: String,
5 | var width: Int = 360,
6 | var height: Int = 640,
7 | var top: Int = 0,
8 | var left: Int = 0
9 | ) {
10 | companion object {
11 | val RESOLUTION_NORMAL = CDNStreamLayoutInfo("", width = 360, height = 640)
12 | val RESOLUTION_HIGH = CDNStreamLayoutInfo("", width = 540, height = 960)
13 | val RESOLUTION_ULTRA = CDNStreamLayoutInfo("", width = 720, height = 1280)
14 |
15 | const val MULTIPLE_PADDING = 2//pixel
16 | //const val TOP_PADDING = 0.1379f// percent of screen(height)
17 | const val TOP_PADDING = 0.0379f// percent of screen(height)
18 | const val TOPIC_MULTIPLE_PADDING = 0.01f// percent of screen(height)
19 | const val TOPIC_WIDTH = 0.2933f// percent of screen(width)
20 | const val HEIGHT_PERCENT = 1.777777778f
21 | }
22 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/ChatMessageData.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean
2 |
3 | import io.anyrtc.videolive.view.videobuilder.VideoViewModel
4 |
5 | data class ChatMessageData(
6 | val nickname: String,
7 | val content: String,
8 | val yourself: Boolean
9 | ) : VideoViewModel
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/CreateRoomBean.java:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean;
2 |
3 | public class CreateRoomBean {
4 |
5 | /**
6 | * {"code":0,"msg":"success.","data":{"roomId":"911224","roomTs":1609236149}}
7 | */
8 |
9 | private int code;
10 | private String msg;
11 | private DataBean data;
12 |
13 | public int getCode() {
14 | return code;
15 | }
16 |
17 | public void setCode(int code) {
18 | this.code = code;
19 | }
20 |
21 | public String getMsg() {
22 | return msg;
23 | }
24 |
25 | public void setMsg(String msg) {
26 | this.msg = msg;
27 | }
28 |
29 | public DataBean getData() {
30 | return data;
31 | }
32 |
33 | public void setData(DataBean data) {
34 | this.data = data;
35 | }
36 |
37 | public static class DataBean {
38 | private String pushUrl;
39 | private String roomId;
40 | private String roomTs;
41 | private String rtcToken;
42 | private String rtmToken;
43 |
44 | public String getPushUrl() {
45 | return pushUrl;
46 | }
47 |
48 | public void setPushUrl(String pushUrl) {
49 | this.pushUrl = pushUrl;
50 | }
51 |
52 | public String getRoomId() {
53 | return roomId;
54 | }
55 |
56 | public void setRoomId(String roomId) {
57 | this.roomId = roomId;
58 | }
59 |
60 | public String getRoomTs() {
61 | return roomTs;
62 | }
63 |
64 | public void setRoomTs(String roomTs) {
65 | this.roomTs = roomTs;
66 | }
67 |
68 | public String getRtcToken() {
69 | return rtcToken;
70 | }
71 |
72 | public void setRtcToken(String rtcToken) {
73 | this.rtcToken = rtcToken;
74 | }
75 |
76 | public String getRtmToken() {
77 | return rtmToken;
78 | }
79 |
80 | public void setRtmToken(String rtmToken) {
81 | this.rtmToken = rtmToken;
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/ErrorInfo.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean
2 |
3 | data class ErrorInfo(val msg:String,val code:Int)
4 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/GuestUserInfo.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean
2 |
3 | import io.anyrtc.videolive.view.videobuilder.VideoViewModel
4 |
5 | data class GuestUserInfo(
6 | val uid: String,
7 | val avatar: String,
8 | val nickname: String,
9 | var isMute: Boolean = false,
10 | var isCloseCamera: Boolean = false,
11 | var isRemove: Boolean = false,
12 | var waitForJoinRTC: Boolean = true,
13 | var index: Int = 0
14 | ) : VideoViewModel
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/LeaveRoomBean.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean
2 |
3 | data class LeaveRoomBean(
4 | val code: Int,
5 | val msg: String
6 | )
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/ModifyNameBean.java:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean;
2 |
3 | public class ModifyNameBean {
4 |
5 | /**
6 | * code : 0
7 | * msg : success.
8 | * data : {"userName":"M2007J3SC"}
9 | */
10 |
11 | private int code;
12 | private String msg;
13 | private DataBean data;
14 |
15 | public int getCode() {
16 | return code;
17 | }
18 |
19 | public void setCode(int code) {
20 | this.code = code;
21 | }
22 |
23 | public String getMsg() {
24 | return msg;
25 | }
26 |
27 | public void setMsg(String msg) {
28 | this.msg = msg;
29 | }
30 |
31 | public DataBean getData() {
32 | return data;
33 | }
34 |
35 | public void setData(DataBean data) {
36 | this.data = data;
37 | }
38 |
39 | public static class DataBean {
40 | /**
41 | * userName : M2007J3SC
42 | */
43 |
44 | private String userName;
45 |
46 | public String getUserName() {
47 | return userName;
48 | }
49 |
50 | public void setUserName(String userName) {
51 | this.userName = userName;
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/RoomMusicInfo.java:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean;
2 |
3 | public class RoomMusicInfo {
4 |
5 | /**
6 | * code : 0
7 | * msg : success.
8 | * data : {"musicState":0,"musicId":0,"musicName":"","singer":"","musicUrl":""}
9 | */
10 |
11 | private int code;
12 | private String msg;
13 | private DataBean data;
14 |
15 | public int getCode() {
16 | return code;
17 | }
18 |
19 | public void setCode(int code) {
20 | this.code = code;
21 | }
22 |
23 | public String getMsg() {
24 | return msg;
25 | }
26 |
27 | public void setMsg(String msg) {
28 | this.msg = msg;
29 | }
30 |
31 | public DataBean getData() {
32 | return data;
33 | }
34 |
35 | public void setData(DataBean data) {
36 | this.data = data;
37 | }
38 |
39 | public static class DataBean {
40 | /**
41 | * musicState : 0
42 | * musicId : 0
43 | * musicName :
44 | * singer :
45 | * musicUrl :
46 | */
47 |
48 | private int musicState;
49 | private int musicId;
50 | private String musicName;
51 | private String singer;
52 | private String musicUrl;
53 |
54 | public int getMusicState() {
55 | return musicState;
56 | }
57 |
58 | public void setMusicState(int musicState) {
59 | this.musicState = musicState;
60 | }
61 |
62 | public int getMusicId() {
63 | return musicId;
64 | }
65 |
66 | public void setMusicId(int musicId) {
67 | this.musicId = musicId;
68 | }
69 |
70 | public String getMusicName() {
71 | return musicName;
72 | }
73 |
74 | public void setMusicName(String musicName) {
75 | this.musicName = musicName;
76 | }
77 |
78 | public String getSinger() {
79 | return singer;
80 | }
81 |
82 | public void setSinger(String singer) {
83 | this.singer = singer;
84 | }
85 |
86 | public String getMusicUrl() {
87 | return musicUrl;
88 | }
89 |
90 | public void setMusicUrl(String musicUrl) {
91 | this.musicUrl = musicUrl;
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/SignUpBean.java:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean;
2 |
3 | public class SignUpBean {
4 | /**
5 | * {
6 | * "code": 0,
7 | * "msg": "success.",
8 | * "data": {
9 | * "uid": "13712434",
10 | * "userName": "YAL-AL00"
11 | * }
12 | * }
13 | */
14 |
15 | private int code;
16 | private String msg;
17 | private DataBean data;
18 |
19 | public int getCode() {
20 | return code;
21 | }
22 |
23 | public void setCode(int code) {
24 | this.code = code;
25 | }
26 |
27 | public String getMsg() {
28 | return msg;
29 | }
30 |
31 | public void setMsg(String msg) {
32 | this.msg = msg;
33 | }
34 |
35 | public DataBean getData() {
36 | return data;
37 | }
38 |
39 | public void setData(DataBean data) {
40 | this.data = data;
41 | }
42 |
43 | public static class DataBean{
44 | private String uid;
45 | private String userName;
46 |
47 | public String getUid() {
48 | return uid;
49 | }
50 |
51 | public void setUid(String uid) {
52 | this.uid = uid;
53 | }
54 |
55 | public String getUserName() {
56 | return userName;
57 | }
58 |
59 | public void setUserName(String userName) {
60 | this.userName = userName;
61 | }
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/api/bean/UserInfoBean.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.api.bean
2 |
3 | data class UserInfoBean(
4 | val data: UserInfoMenu
5 | )
6 |
7 | data class UserInfoMenu(
8 | val avatar: String,
9 | val userName: String
10 | )
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/sdk/RtcListener.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.sdk
2 | import org.ar.rtc.IRtcEngineEventHandler
3 | import org.ar.rtc.IRtcEngineEventHandler.LocalAudioStats
4 |
5 | abstract class RtcListener {
6 |
7 | abstract fun onJoinChannelSuccess(channel: String?, uid: String?, elapsed: Int)
8 | abstract fun onUserJoined(uid: String?, elapsed: Int)
9 | abstract fun onUserOffline(uid: String?, reason: Int)
10 | abstract fun onAudioVolumeIndication(speakers: Array?, totalVolume: Int)
11 | abstract fun onRemoteAudioStateChanged(uid: String?, state: Int, reason: Int, elapsed: Int)
12 | abstract fun onRemoteVideoStateChanged(uid: String?, state: Int, reason: Int, elapsed: Int)
13 | abstract fun onLocalVideoStateChanged(state: Int, reason: Int)
14 | abstract fun onRtcStats(rtcStats: IRtcEngineEventHandler.RtcStats?)
15 | abstract fun onRtmpStreamingStateChanged(url: String?, state: Int, errCode: Int)
16 | abstract fun onLocalAudioStateChanged(state: Int, reason: Int)
17 | abstract fun onTokenPrivilegeWillExpire()
18 | abstract fun onWarning(code:Int)
19 | abstract fun onConnectionLost()
20 | abstract fun onAudioMixingStateChanged(state: Int, errorCode: Int)
21 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/sdk/RtcMember.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.sdk
2 |
3 | data class RtcMember(
4 | val userId: String,
5 | val userIndex: Int = -1
6 | )
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/sdk/RtmListener.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.sdk
2 | import org.ar.rtm.*
3 |
4 | abstract class RtmListener : RtmClientListener,RtmChannelListener {
5 |
6 | abstract fun onJoinChannelSuccess(channelId: String?)
7 |
8 | override fun onTokenExpired() {
9 | }
10 |
11 | override fun onPeersOnlineStatusChanged(var1: MutableMap?) {
12 | }
13 |
14 | override fun onConnectionStateChanged(var1: Int, var2: Int) {
15 | }
16 |
17 | abstract fun onP2PMessageReceived(var1: RtmMessage?, var2: String?)
18 |
19 | override fun onAttributesUpdated(var1: MutableList?) {
20 | }
21 |
22 | abstract fun onChannelMessageReceived(var1: RtmMessage?, var2: RtmChannelMember?)
23 |
24 | override fun onMemberJoined(var1: RtmChannelMember?) {
25 | }
26 |
27 | override fun onMemberLeft(var1: RtmChannelMember?) {
28 | }
29 |
30 | override fun onMemberCountUpdated(var1: Int) {
31 | }
32 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/RoomListAdapter.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui
2 |
3 | import android.widget.ImageView
4 | import coil.load
5 | import com.chad.library.adapter.base.BaseQuickAdapter
6 | import com.chad.library.adapter.base.viewholder.BaseViewHolder
7 | import io.anyrtc.videolive.R
8 | import io.anyrtc.videolive.api.bean.RoomListBean
9 | import io.anyrtc.videolive.utils.Constans
10 |
11 | class RoomListAdapter :BaseQuickAdapter(R.layout.layout_room_list) {
12 |
13 |
14 | override fun convert(holder: BaseViewHolder, item: RoomListBean.DataBean.ListBean) {
15 | holder.setText(R.id.tv_room_name,item.roomName)
16 | holder.setText(R.id.tv_look_num,"${item.userNum.toString()}人在看")
17 | val imageView = holder.getView(R.id.iv_bg)
18 | imageView.load(item.imageUrl)
19 | }
20 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/activity/AboutActivity.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui.activity
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 | import io.anyrtc.videolive.R
6 | import io.anyrtc.videolive.databinding.ActivityAboutBinding
7 | import io.anyrtc.videolive.databinding.ActivityHostBinding
8 |
9 | class AboutActivity : BaseActivity() {
10 |
11 | private val binding by lazy { ActivityAboutBinding.inflate(layoutInflater) }
12 |
13 | override fun onCreate(savedInstanceState: Bundle?) {
14 | super.onCreate(savedInstanceState)
15 | setContentView(binding.root)
16 | }
17 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/activity/BaseActivity.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui.activity
2 |
3 | import android.os.Bundle
4 | import androidx.appcompat.app.AppCompatActivity
5 | import com.gyf.immersionbar.ImmersionBar
6 | import io.anyrtc.videolive.R
7 | import io.anyrtc.videolive.sdk.RtcManager
8 |
9 | abstract class BaseActivity : AppCompatActivity() {
10 |
11 |
12 | override fun onCreate(savedInstanceState: Bundle?) {
13 | super.onCreate(savedInstanceState)
14 | ImmersionBar.with(this).fitsSystemWindows(true).statusBarColor(R.color.white).statusBarDarkFont(
15 | true
16 | ).navigationBarColor(R.color.white, 0.2f).navigationBarDarkIcon(true).init()
17 |
18 | }
19 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/activity/ChatMessageListAdapter.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui.activity
2 |
3 | import android.graphics.Color
4 | import android.text.SpannableString
5 | import android.text.Spanned
6 | import android.text.style.ForegroundColorSpan
7 | import com.chad.library.adapter.base.BaseQuickAdapter
8 | import com.chad.library.adapter.base.viewholder.BaseViewHolder
9 | import io.anyrtc.videolive.R
10 | import io.anyrtc.videolive.api.bean.ChatMessageData
11 |
12 | class ChatMessageListAdapter :
13 | BaseQuickAdapter(R.layout.item_chat) {
14 |
15 | override fun convert(holder: BaseViewHolder, item: ChatMessageData) {
16 | val ss = SpannableString("${item.nickname} ${item.content}")
17 | ss.setSpan(
18 | ForegroundColorSpan(Color.parseColor(if (item.yourself) "#FFBB8D" else "#8DAEFF")),
19 | 0,
20 | item.nickname.length,
21 | Spanned.SPAN_INCLUSIVE_EXCLUSIVE
22 | )
23 | holder.setText(R.id.message, ss)
24 | }
25 |
26 | override fun addData(data: ChatMessageData) {
27 | super.addData(data)
28 | if (this.data.size > 50) {
29 | this.removeAt(0)
30 | }
31 | recyclerView.scrollToPosition(this.data.size - 1)
32 | }
33 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/activity/HandsUpListAdapter.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui.activity
2 |
3 | import android.widget.ImageView
4 | import android.widget.TextView
5 | import coil.load
6 | import com.chad.library.adapter.base.BaseQuickAdapter
7 | import com.chad.library.adapter.base.viewholder.BaseViewHolder
8 | import io.anyrtc.videolive.R
9 | import io.anyrtc.videolive.api.bean.GuestUserInfo
10 |
11 | class HandsUpListAdapter :
12 | BaseQuickAdapter(R.layout.rtc_host_bottom_sheet_item) {
13 |
14 | private companion object {
15 | val obj = Any()
16 | }
17 |
18 | var acceptNum = 0
19 | set(value) {
20 | synchronized(obj) {
21 | if (field >= 3 && value < 3) {
22 | field = value
23 | notifyItemRangeChanged(0, data.size)
24 | } else if (field < 3 && value >= 3) {
25 | field = value
26 | notifyItemRangeChanged(0, data.size)
27 | } else {
28 | field = value
29 | }
30 | }
31 | }
32 | get() {
33 | return synchronized(obj) {
34 | field
35 | }
36 | }
37 |
38 | override fun convert(holder: BaseViewHolder, item: GuestUserInfo) {
39 | holder.getView(R.id.avatar).load(item.avatar)
40 | holder.setText(R.id.nickname, item.nickname)
41 |
42 | holder.setBackgroundResource(
43 | R.id.agree,
44 | if (acceptNum >= 3) R.drawable.rtc_host_bottom_sheet_agree_disabled_bg
45 | else R.drawable.rtc_host_bottom_sheet_agree_bg
46 | )
47 | }
48 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/activity/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui.activity
2 |
3 | import android.animation.ObjectAnimator
4 | import android.os.Bundle
5 | import android.util.Log
6 | import android.view.View
7 | import android.widget.RelativeLayout
8 | import com.google.android.material.bottomnavigation.BottomNavigationView
9 | import com.google.android.material.imageview.ShapeableImageView
10 | import com.gyf.immersionbar.ImmersionBar
11 | import com.kongzue.dialog.util.BaseDialog
12 | import com.kongzue.dialog.v3.CustomDialog
13 | import io.anyrtc.videolive.R
14 | import io.anyrtc.videolive.databinding.ActivityMainBinding
15 | import io.anyrtc.videolive.ui.fragment.HomeFragment
16 | import io.anyrtc.videolive.ui.fragment.MineFragment
17 | import io.anyrtc.videolive.utils.replaceFragment
18 |
19 | class MainActivity : BaseActivity() {
20 |
21 | private val binding by lazy { ActivityMainBinding.inflate(layoutInflater)}
22 | private val fragments by lazy {
23 | arrayListOf(HomeFragment(), MineFragment())
24 | }
25 |
26 | override fun onCreate(savedInstanceState: Bundle?) {
27 | super.onCreate(savedInstanceState)
28 | setContentView(binding.root)
29 | replaceFragment(fragments[0])
30 | binding.bottomView.setOnCheckedChangeListener { group, checkedId ->
31 | when(checkedId){
32 | R.id.rb_home->{
33 | replaceFragment(fragments[0])
34 | }
35 | R.id.rb_mine->{
36 | replaceFragment(fragments[1])
37 | }
38 | }
39 | }
40 |
41 | }
42 |
43 |
44 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/ui/activity/SplashActivity.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.ui.activity
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 | import com.hjq.permissions.Permission
6 | import com.hjq.permissions.XXPermissions
7 | import io.anyrtc.videolive.R
8 | import io.anyrtc.videolive.utils.Interval
9 | import io.anyrtc.videolive.utils.go
10 | import io.anyrtc.videolive.utils.goAndFinish
11 | import io.anyrtc.videolive.utils.toast
12 | import java.util.concurrent.TimeUnit
13 |
14 | class SplashActivity : BaseActivity() {
15 | override fun onCreate(savedInstanceState: Bundle?) {
16 | super.onCreate(savedInstanceState)
17 | setContentView(R.layout.activity_splash)
18 | XXPermissions.with(this).permission(Permission.CAMERA,Permission.RECORD_AUDIO,Permission.WRITE_EXTERNAL_STORAGE)
19 | .request { permissions, all ->
20 | if (all){
21 | Interval(0, 1, TimeUnit.SECONDS, 1).life(this).finish {
22 | goAndFinish(MainActivity::class.java)
23 | }.start()
24 | }else{
25 | toast("请开启权限")
26 | finish()
27 | }
28 | }
29 |
30 | }
31 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/utils/Constans.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.utils
2 |
3 | import io.anyrtc.videolive.R
4 |
5 | object Constans {
6 |
7 | const val HTTP_TOKEN = "httpToken"
8 | const val USER_ID = "uId"
9 | const val USER_NAME = "uName"
10 | const val USER_ICON = "avatar"
11 | const val APP_ID = "appId"
12 | const val RTM_TOKEN = "rtmToken"
13 | const val RTC_TOKEN = "rtcToken"
14 | const val ROOM_TYPE = "roomType"
15 | const val ROOM_ID = "roomId"
16 | const val HOST_ID = "hostId"
17 | const val PUSH_URL = "push_url"
18 | const val PULL_URL = "pull_url"
19 |
20 | val firstName = mutableListOf("清蒸","红烧","盐焗","烧烤","水煮","油炸","炖","小炒","干煸","麻辣","爆炒")
21 | val secondName = mutableListOf("西红柿","小龙虾","四季豆","肥牛","土豆","鲍鱼","大闸蟹","辣椒","牛排","鸡翅","鸭脖","鸡蛋")
22 |
23 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/utils/IntervalStatus.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.utils
2 |
3 | /**
4 | * 计时器的状态
5 | */
6 | enum class IntervalStatus {
7 | STATE_ACTIVE, STATE_IDLE, STATE_PAUSE
8 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/utils/Scope.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Drake, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.anyrtc.videolive.utils
18 |
19 | import android.app.Dialog
20 | import androidx.fragment.app.Fragment
21 | import androidx.fragment.app.FragmentActivity
22 | import androidx.lifecycle.Lifecycle
23 | import androidx.lifecycle.LifecycleOwner
24 | import kotlinx.coroutines.CoroutineDispatcher
25 | import kotlinx.coroutines.CoroutineScope
26 | import kotlinx.coroutines.Dispatchers
27 |
28 |
29 |
30 |
31 |
32 | //
33 | /**
34 | * 异步作用域
35 | *
36 | * 该作用域生命周期跟随整个应用, 注意内存泄漏
37 | */
38 | fun scope(
39 | dispatcher: CoroutineDispatcher = Dispatchers.Main,
40 | block: suspend CoroutineScope.() -> Unit
41 | ): AndroidScope {
42 | return AndroidScope(dispatcher = dispatcher).launch(block)
43 | }
44 |
45 | fun LifecycleOwner.scopeLife(
46 | lifeEvent: Lifecycle.Event = Lifecycle.Event.ON_DESTROY,
47 | dispatcher: CoroutineDispatcher = Dispatchers.Main,
48 | block: suspend CoroutineScope.() -> Unit
49 | ) = AndroidScope(this, lifeEvent, dispatcher).launch(block)
50 |
51 | fun Fragment.scopeLife(
52 | lifeEvent: Lifecycle.Event = Lifecycle.Event.ON_STOP,
53 | dispatcher: CoroutineDispatcher = Dispatchers.Main,
54 | block: suspend CoroutineScope.() -> Unit
55 | ) = AndroidScope(this, lifeEvent, dispatcher).launch(block)
56 | //
57 |
58 |
59 |
60 | //
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/utils/ScreenUtils.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.utils
2 |
3 | import android.app.Activity
4 | import android.content.res.Resources
5 |
6 | object ScreenUtils {
7 |
8 | fun adapterScreen(activity: Activity, targetDP: Int, isVertical: Boolean) {
9 | val sysDisplayMetrics = Resources.getSystem().displayMetrics
10 | val activityDisplayMetrics = activity.resources.displayMetrics
11 |
12 | if (isVertical) {
13 | activityDisplayMetrics.density = activityDisplayMetrics.heightPixels / targetDP.toFloat()
14 | } else {
15 | activityDisplayMetrics.density = activityDisplayMetrics.widthPixels / targetDP.toFloat()
16 | }
17 | activityDisplayMetrics.scaledDensity = activityDisplayMetrics.density * (sysDisplayMetrics.scaledDensity / sysDisplayMetrics.density)
18 | activityDisplayMetrics.densityDpi = (160 * activityDisplayMetrics.density).toInt()
19 | }
20 |
21 | fun resetScreen(activity: Activity) {
22 | val sysDisplayMetrics = Resources.getSystem().displayMetrics
23 | val appDisplayMetrics = activity.application.resources.displayMetrics
24 | val activityDisplayMetrics = activity.resources.displayMetrics
25 |
26 | activityDisplayMetrics.density = sysDisplayMetrics.density
27 | activityDisplayMetrics.scaledDensity = sysDisplayMetrics.scaledDensity
28 | activityDisplayMetrics.densityDpi = sysDisplayMetrics.densityDpi
29 |
30 | appDisplayMetrics.density = sysDisplayMetrics.density
31 | appDisplayMetrics.scaledDensity = sysDisplayMetrics.scaledDensity
32 | appDisplayMetrics.densityDpi = sysDisplayMetrics.densityDpi
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/utils/SpUtil.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.utils
2 |
3 | import android.content.Context
4 | import android.content.SharedPreferences
5 |
6 |
7 | object SpUtil {
8 |
9 | private lateinit var context:Context
10 | private const val SP_FILE_NAME = "VideoLive"
11 |
12 | fun init(context: Context){
13 | SpUtil.context = context
14 | }
15 |
16 | fun edit(holdEdit:(SharedPreferences.Editor)->Unit){
17 | val edit = context.getSharedPreferences(SP_FILE_NAME,Context.MODE_PRIVATE).edit()
18 | holdEdit(edit)
19 | edit.commit()
20 | }
21 |
22 | fun get(): SharedPreferences {
23 | return context.getSharedPreferences(SP_FILE_NAME,Context.MODE_PRIVATE)
24 | }
25 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/view/ChatRecyclerView.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.view
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.recyclerview.widget.RecyclerView
6 |
7 | class ChatRecyclerView
8 | @JvmOverloads
9 | constructor(
10 | ctx: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
11 | ) : RecyclerView(ctx, attrs, defStyleAttr) {
12 |
13 | override fun getTopFadingEdgeStrength(): Float {
14 | return super.getTopFadingEdgeStrength()
15 | }
16 |
17 | override fun getBottomFadingEdgeStrength() = 0.0f
18 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/view/SmartRefreshRewrite.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.view
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import com.scwang.smart.refresh.layout.SmartRefreshLayout
6 |
7 | class SmartRefreshRewrite
8 | @JvmOverloads
9 | constructor(context: Context, attrs: AttributeSet? = null): SmartRefreshLayout(context, attrs) {
10 |
11 | fun setStateRefresh(notify: Boolean) {
12 | super.setStateRefreshing(notify)
13 | }
14 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/view/videobuilder/DefaultVideoViewParent.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.view.videobuilder
2 |
3 | import android.view.View
4 |
5 | data class DefaultVideoViewParent(
6 | var view: View,
7 | val inGroupIndex: Int,
8 | val yourself: Boolean = false
9 | ) : VideoViewParent
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/view/videobuilder/VideoViewBuilder.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.view.videobuilder
2 |
3 | import android.view.LayoutInflater
4 |
5 | interface VideoViewBuilder {
6 |
7 | fun buildVideoViewParent(viewData: T, layoutInflater: LayoutInflater): T
8 | fun setVideoViewStates(videoViewParent: T, info: D)
9 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/view/videobuilder/VideoViewInterface.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.view.videobuilder
2 |
3 | interface VideoViewParent {
4 | }
5 |
6 | interface VideoViewModel {
7 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/vm/RTCLiveVM.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.vm
2 |
3 | import io.anyrtc.videolive.sdk.RtcManager
4 | import io.anyrtc.videolive.sdk.RtmManager
5 | import org.ar.rtc.Constants
6 | import org.ar.rtm.RtmChannelAttribute
7 |
8 | class RTCLiveVM : BaseLiveVM() {
9 |
10 | override fun messageAcceptLine() {
11 | RtcManager.instance.rtcEngine?.setClientRole(Constants.CLIENT_ROLE_BROADCASTER)
12 | applyRequestResponse.postValue(true)
13 | }
14 |
15 | override fun messageRejectLine() {
16 | applyRequestResponse.postValue(false)
17 | }
18 |
19 | override fun disconnection() {
20 | super.disconnection()
21 | RtcManager.instance.rtcEngine?.setClientRole(Constants.CLIENT_ROLE_AUDIENCE)
22 | }
23 |
24 | override fun onCleared() {
25 | if (isHost) {
26 | RtmManager.instance.setChannelAttribute(
27 | roomId, listOf(
28 | RtmChannelAttribute("musicState", "0"),
29 | RtmChannelAttribute("layout", "1")
30 | )
31 | )
32 | } else if (isRequestingApply) {
33 | cancelApply()
34 | }
35 | RtcManager.instance.release()
36 | RtmManager.instance.leaveChannel()
37 | RtmManager.instance.logOut()
38 | }
39 |
40 | fun join() {
41 | RtcManager.instance.joinChannel(rtcToken, roomId, userId, isHost)
42 | RtmManager.instance.joinChannel(roomId)
43 | }
44 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/weight/ItemOffsetsRequestBuilder.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.weight
2 |
3 | /**
4 | * Determine params for [ItemOffsetsCalculator] basing on given RecyclerView layout manager specifics.
5 | */
6 | open class ItemOffsetsRequestBuilder {
7 |
8 | /**
9 | * Data that describes position of item that offsets are desired, and some of its list layout
10 | * manager params.
11 | */
12 | data class ItemOffsetsParams(
13 | /* Item data */
14 | var spanIndex: Int = 0,
15 | var groupIndex: Int = 0,
16 | var spanSize: Int = 1,
17 | /* Layout manager data */
18 | var spanCount: Int = 1,
19 | var groupCount: Int = 1,
20 | var isLayoutVertical: Boolean = true,
21 | var isLayoutReverse: Boolean = false
22 | )
23 |
24 | /**
25 | * Fill [offsetsRequest] basing on RecyclerView item and layout params passed by
26 | * [itemOffsetsParams]. All fields of [offsetsRequest] will be set.
27 | */
28 | open fun fillItemOffsetsRequest(itemOffsetsParams: ItemOffsetsParams,
29 | offsetsRequest: ItemOffsetsCalculator.OffsetsRequest) {
30 | val groupIndexAdjustedToReverse =
31 | if (!itemOffsetsParams.isLayoutReverse) itemOffsetsParams.groupIndex
32 | else itemOffsetsParams.groupCount - itemOffsetsParams.groupIndex - 1
33 |
34 | with (offsetsRequest) {
35 | if (itemOffsetsParams.isLayoutVertical) {
36 | row = groupIndexAdjustedToReverse
37 | col = itemOffsetsParams.spanIndex
38 |
39 | spanSizeH = itemOffsetsParams.spanSize
40 | spanSizeV = 1
41 |
42 | rows = itemOffsetsParams.groupCount
43 | cols = itemOffsetsParams.spanCount
44 | } else {
45 | row = itemOffsetsParams.spanIndex
46 | col = groupIndexAdjustedToReverse
47 |
48 | spanSizeH = 1
49 | spanSizeV = itemOffsetsParams.spanSize
50 |
51 | rows = itemOffsetsParams.spanCount
52 | cols = itemOffsetsParams.groupCount
53 | }
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/java/io/anyrtc/videolive/weight/Spacing.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive.weight
2 |
3 | import android.graphics.Rect
4 |
5 | /**
6 | * Set of offsets available to define for [SpacingItemDecoration].
7 | */
8 | data class Spacing(
9 |
10 | /**
11 | * Horizontal offset between every two items, in pixels.
12 | */
13 | var horizontal: Int = 0,
14 |
15 | /**
16 | * Vertical offset between every two items, in pixels.
17 | */
18 | var vertical: Int = 0,
19 |
20 | /**
21 | * Set of offsets that can be used to move items from parent edges toward parent's center.
22 | * Think about it like a list view padding.
23 | * Values in pixels are expected.
24 | */
25 | var edges: Rect = Rect(),
26 |
27 | /**
28 | * Offsets added to each of item edges, in pixels.
29 | */
30 | var item: Rect = Rect()
31 | ) {
32 |
33 | /**
34 | * Set all spacing to `0`.
35 | */
36 | fun zero() {
37 | horizontal = 0
38 | vertical = 0
39 | edges.setEmpty()
40 | item.setEmpty()
41 | }
42 |
43 | }
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/anim/loading_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/color/select_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/color/selector_create_text_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/google.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/google.jpg
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/guest_icon_switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/guest_icon_switch.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_camera_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_camera_disable.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_chat.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_download.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_ear_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_ear_disabled.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_ear_enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_ear_enabled.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_group.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_leave.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_leave.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_menu.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_microphone_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_microphone_disable.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_music.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_relayout_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_relayout_grid.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_relayout_topic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_relayout_topic.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_switch_camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_switch_camera.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_upload.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_video.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_video_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_video_disable.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_voice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_voice.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_voice_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/host_icon_voice_disable.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_create_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_create_bg.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_faban.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_faban.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_loading.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_mianze.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_mianze.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_mine_top_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_mine_top_bg.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_modify_name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_modify_name.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_name.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_no_room.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_no_room.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_refresh_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_refresh_logo.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_sdk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_sdk.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_splash_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_splash_logo.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_version.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_version.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_yinsi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_yinsi.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_zhuce.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/img_zhuce.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_camera_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_camera_disabled.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_camera_enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_camera_enabled.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_headset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_headset.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_mike_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_mike_disabled.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_mike_enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_mike_enabled.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/drawable-xxhdpi/tips_icon_warning.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/checkbox_resolution_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/checkbox_resolution_unchecked.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/checkbox_video_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/checkbox_voice_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/img_add.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/img_back.xml:
--------------------------------------------------------------------------------
1 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/img_back_x.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/img_back_x_white.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/img_home.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/img_mine.xml:
--------------------------------------------------------------------------------
1 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/message_input_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/mike_icon_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/rtc_host_bottom_sheet_agree_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/rtc_host_bottom_sheet_agree_disabled_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/rtc_host_bottom_sheet_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
11 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/rtc_host_bottom_sheet_refuse_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/rtc_host_group_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/select_room_mode.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/selector_btn_create.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_btn_create_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_btn_create_unselect.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_cdn_loading_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_create_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_create_room_mode.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_et_create_room.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_guest_text_btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_home_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_host_bottom_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_host_music_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
11 |
12 |
14 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_item_chat_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_loading_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_mode_normol.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_texture_parent_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
11 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/drawable/shape_toast_tips_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 |
8 |
10 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/activity_about.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
27 |
28 |
40 |
41 |
42 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
24 |
25 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/dialog_input.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
27 |
28 |
39 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/item_chat.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
21 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/layout_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
16 |
29 |
30 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/layout_modify_name.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/layout_no_room.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
19 |
20 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/layout_room_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
16 |
22 |
25 |
26 |
30 |
31 |
40 |
41 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/rtc_host_queue_sheet.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
21 |
22 |
31 |
32 |
39 |
40 |
46 |
47 |
55 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/layout/toast_tips.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/menu/tab_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/mipmap-xxhdpi/img_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/app/src/main/res/mipmap-xxhdpi/img_launcher.png
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 | #091621
11 | #314BFF
12 |
13 | #00000000
14 |
15 | #FF272A
16 | #00FF7A
17 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 视频连麦
3 | 点击播放音乐
4 | 音乐播放中
5 | 同意
6 | 还没有人在申请上麦
7 | 更多
8 | 标清 360P
9 | 高清 540P
10 | 超清 720P
11 | 切换摄像头
12 | 耳反
13 | 等分布局
14 | 大小屏布局
15 | 发送
16 | 输入点什么
17 | 拒绝
18 | 聊天
19 | 上麦
20 | 下麦
21 | 已打开麦克风
22 | 已关闭麦克风
23 | 已打开摄像头
24 | 已关闭摄像头
25 | 请插入有线耳机
26 | 丢包率: 0%
27 | 延时: 0ms
28 | 加载中
29 | 上麦人数已达上限
30 | 视频连麦直播
31 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/values/style.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VideoLive-Android/app/src/test/java/io/anyrtc/videolive/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package io.anyrtc.videolive
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/VideoLive-Android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | ext.kotlin_version = "1.5.0"
4 | repositories {
5 | mavenCentral()
6 | maven { url 'https://jitpack.io' }
7 | google()
8 | jcenter()
9 |
10 | }
11 | dependencies {
12 | classpath "com.android.tools.build:gradle:4.1.2"
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 |
15 |
16 | // NOTE: Do not place your application dependencies here; they belong
17 | // in the individual module build.gradle files
18 | }
19 | }
20 |
21 | allprojects {
22 | repositories {
23 | mavenCentral()
24 | maven { url 'https://jitpack.io' }
25 | google()
26 | jcenter()
27 | }
28 | }
29 |
30 | task clean(type: Delete) {
31 | delete rootProject.buildDir
32 | }
--------------------------------------------------------------------------------
/VideoLive-Android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 | # Kotlin code style for this project: "official" or "obsolete":
21 | kotlin.code.style=official
--------------------------------------------------------------------------------
/VideoLive-Android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-Android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/VideoLive-Android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Jun 10 18:52:31 CST 2021
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/VideoLive-Android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/VideoLive-Android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "VideoLive"
--------------------------------------------------------------------------------
/VideoLive-iOS/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '9.0'
2 | use_frameworks!
3 |
4 | target 'VideoLive-iOS' do
5 | #anyRTC 音视频库
6 | pod 'ARtcKit_iOS', '~> 4.2.2.7'
7 | #anyRTC 实时消息库
8 | pod 'ARtmKit_iOS', '~> 1.0.2.0'
9 |
10 | pod 'SnapKit'
11 | pod 'Alamofire'
12 | pod 'SwiftyJSON', '< 5.0.0'
13 | pod 'MJRefresh'
14 | pod 'SDWebImage', '~> 3.7.3'
15 | pod 'AttributedString'
16 | pod 'SVProgressHUD'
17 | end
18 |
19 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODFILE CHECKSUM: 3d7fc0a2376acf0706dfaf792d8b56143eff090e
2 |
3 | COCOAPODS: 1.11.3
4 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/Pods/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODFILE CHECKSUM: 3d7fc0a2376acf0706dfaf792d8b56143eff090e
2 |
3 | COCOAPODS: 1.11.3
4 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Pods.xcodeproj/xcuserdata/a1.xcuserdatad/xcschemes/Pods-VideoLive-iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Pods.xcodeproj/xcuserdata/a1.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Pods-VideoLive-iOS.xcscheme
8 |
9 | isShown
10 |
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Pods.xcodeproj/xcuserdata/yusheng.xcuserdatad/xcschemes/Pods-VideoLive-iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Pods.xcodeproj/xcuserdata/yusheng.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Pods-VideoLive-iOS.xcscheme
8 |
9 | isShown
10 |
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 | Generated by CocoaPods - https://cocoapods.org
4 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Generated by CocoaPods - https://cocoapods.org
18 | Title
19 |
20 | Type
21 | PSGroupSpecifier
22 |
23 |
24 | StringsTable
25 | Acknowledgements
26 | Title
27 | Acknowledgements
28 |
29 |
30 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_VideoLive_iOS : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_VideoLive_iOS
5 | @end
6 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-frameworks.sh
2 | ${PODS_ROOT}/ARtcKit_iOS/ARtcKit.framework
3 | ${PODS_ROOT}/ARtmKit_iOS/ARtmKit/ARtmKit.framework
4 | ${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework
5 | ${BUILT_PRODUCTS_DIR}/AttributedString/AttributedString.framework
6 | ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework
7 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
8 | ${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework
9 | ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
10 | ${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ARtcKit.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ARtmKit.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AttributedString.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework
6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework
8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-frameworks.sh
2 | ${PODS_ROOT}/ARtcKit_iOS/ARtcKit.framework
3 | ${PODS_ROOT}/ARtmKit_iOS/ARtmKit/ARtmKit.framework
4 | ${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework
5 | ${BUILT_PRODUCTS_DIR}/AttributedString/AttributedString.framework
6 | ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework
7 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
8 | ${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework
9 | ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
10 | ${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ARtcKit.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ARtmKit.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AttributedString.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework
6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework
8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_VideoLive_iOSVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_VideoLive_iOSVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
6 | PODS_ROOT = ${SRCROOT}/Pods
7 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
8 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
9 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_VideoLive_iOS {
2 | umbrella header "Pods-VideoLive-iOS-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/VideoLive-iOS/Pods/Target Support Files/Pods-VideoLive-iOS/Pods-VideoLive-iOS.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
6 | PODS_ROOT = ${SRCROOT}/Pods
7 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
8 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
9 |
--------------------------------------------------------------------------------
/VideoLive-iOS/README.md:
--------------------------------------------------------------------------------
1 | ## 项目说明
2 |
3 | 本demo演示了如何使用 anyRTC 音视频服务来实现音视频直播的场景,demo中使用的restful api 为该demo的业务服务,开发者可以先使用我们的业务服务,跑通demo,熟悉业务流程,以及SDK的使用步骤,后续在集成的时候,需要结合自身的业务服务。
4 |
5 | > demo中使用的开发者信息:为我们的测试开发者信息,开发者在集成项目的时候,需要使用自己的开发者信息,该demo中的开发者信息,会随时删除不可用。
6 |
7 | ## 主要功能
8 |
9 | 1、实时直播:主播、观众、连麦用户都是拉取实时流:低延迟直播,延迟 200ms 左右。
10 |
11 | 2、客户端推流到CDN:主播加入RTC后,把本地的音视频进行转协议直播出去,当有人连麦后本地合流后直播出去。连麦用户为观众转换而来,在没连麦的时候,使用播放器播放flv直播流,连麦的时候,关闭播放器,使用RTC发布实时流,并拉取主播的实时流。观众使用播放器播放flv的直播流。
12 |
13 | 3、服务端推流到CDN:主播加入RTC后,调用接口告知服务,让服务端把当前房间直播出去,当有人连麦或者连麦挂断后,通知服务端更新直播布局;连麦用户为观众转换而来,在没连麦的时候,使用播放器播放flv直播流,连麦的时候,关闭播放器,使用RTC发布实时流,并拉取主播的实时流。观众使用播放器播放flv的直播流。
14 |
15 | 上述3中直播方式可以满足市面上各种各样的直播场景,也可以根据自己的场景来用上述方式:
16 |
17 | - 如果预算比较低,想要直播连麦的,可以使用**客户端推流到CDN**的形式
18 | - 如果设备比较老,性能差,想要直播连麦的,可以使用**服务端推流到CDN**的形式
19 | - 如果对实时性比较高的,使用**实时直播**的方式
20 |
21 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcodeproj/project.xcworkspace/xcuserdata/a1.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS.xcodeproj/project.xcworkspace/xcuserdata/a1.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcodeproj/xcuserdata/a1.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | VideoLive-iOS.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 10
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 639BC718267C2E6E00DF365B
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcodeproj/xcuserdata/yusheng.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | VideoLive-iOS.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcworkspace/xcuserdata/a1.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS.xcworkspace/xcuserdata/a1.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcworkspace/xcuserdata/a1.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS.xcworkspace/xcuserdata/yusheng.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS.xcworkspace/xcuserdata/yusheng.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/ARBaseNavigationController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ARBaseNavigationController.swift
3 | // VideoLive-iOS
4 | //
5 | // Created by 余生丶 on 2021/06/18.
6 | //
7 |
8 | import UIKit
9 |
10 | class ARBaseNavigationController: UINavigationController {
11 | override func viewDidLoad() {
12 | super.viewDidLoad()
13 |
14 | // Do any additional setup after loading the view.
15 | if #available(iOS 15.0, *) {
16 | let appearance = UINavigationBarAppearance()
17 | appearance.configureWithTransparentBackground()
18 | // appearance.configureWithOpaqueBackground()
19 | appearance.backgroundColor = UIColor.white
20 | navigationBar.standardAppearance = appearance
21 | navigationBar.scrollEdgeAppearance = navigationBar.standardAppearance
22 | } else {
23 | // Fallback on earlier versions
24 | }
25 | }
26 |
27 | override var childForStatusBarStyle: UIViewController? {
28 | return topViewController
29 | }
30 |
31 | /*
32 | // MARK: - Navigation
33 |
34 | // In a storyboard-based application, you will often want to do a little preparation before navigation
35 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
36 | // Get the new view controller using segue.destination.
37 | // Pass the selected object to the new view controller.
38 | }
39 | */
40 | }
41 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // VideoLive-iOS
4 | //
5 | // Created by 余生丶 on 2021/6/18.
6 | //
7 |
8 | import UIKit
9 | import SVProgressHUD
10 |
11 | @main
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | var window: UIWindow?
15 |
16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
17 | // Override point for customization after application launch.
18 | SVProgressHUD.setDefaultStyle(.light)
19 | SVProgressHUD.setDefaultMaskType(.black)
20 | SVProgressHUD.setShouldTintImages(false)
21 | SVProgressHUD.setMinimumSize(CGSize.init(width: 120, height: 120))
22 |
23 | Thread.sleep(forTimeInterval: 0.5)
24 | return true
25 | }
26 |
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-1024.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-167@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-167@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small-1.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/AppIcon.appiconset/Icon@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_add.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_add@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_add@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_add.imageset/icon_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_add.imageset/icon_add@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_add.imageset/icon_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_add.imageset/icon_add@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_appversion.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_appversion@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_appversion@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_appversion.imageset/icon_appversion@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_appversion.imageset/icon_appversion@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_appversion.imageset/icon_appversion@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_appversion.imageset/icon_appversion@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_audio@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_audio@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio.imageset/icon_audio@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio.imageset/icon_audio@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio.imageset/icon_audio@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio.imageset/icon_audio@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_audio_close@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_audio_close@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio_close.imageset/icon_audio_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio_close.imageset/icon_audio_close@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio_close.imageset/icon_audio_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_audio_close.imageset/icon_audio_close@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back.imageset/icon_back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back.imageset/icon_back@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back.imageset/icon_back@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back.imageset/icon_back@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back0.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back0@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back0@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back0.imageset/icon_back0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back0.imageset/icon_back0@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back0.imageset/icon_back0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back0.imageset/icon_back0@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back1@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back1@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back1.imageset/icon_back1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back1.imageset/icon_back1@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back1.imageset/icon_back1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back1.imageset/icon_back1@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back2@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back2@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back2.imageset/icon_back2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back2.imageset/icon_back2@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back2.imageset/icon_back2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back2.imageset/icon_back2@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back3@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back3@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back3.imageset/icon_back3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back3.imageset/icon_back3@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back3.imageset/icon_back3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back3.imageset/icon_back3@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back4.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back4@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back4@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back4.imageset/icon_back4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back4.imageset/icon_back4@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back4.imageset/icon_back4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back4.imageset/icon_back4@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back5.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_back5@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_back5@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back5.imageset/icon_back5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back5.imageset/icon_back5@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back5.imageset/icon_back5@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_back5.imageset/icon_back5@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_chat.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_chat@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_chat@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_chat.imageset/icon_chat@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_chat.imageset/icon_chat@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_chat.imageset/icon_chat@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_chat.imageset/icon_chat@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_close@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_close@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_close.imageset/icon_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_close.imageset/icon_close@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_close.imageset/icon_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_close.imageset/icon_close@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_ear@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_ear@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear.imageset/icon_ear@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear.imageset/icon_ear@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear.imageset/icon_ear@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear.imageset/icon_ear@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_ear_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_ear_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear_selected.imageset/icon_ear_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear_selected.imageset/icon_ear_selected@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear_selected.imageset/icon_ear_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_ear_selected.imageset/icon_ear_selected@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_edit.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_edit@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_edit@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_edit.imageset/icon_edit@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_edit.imageset/icon_edit@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_edit.imageset/icon_edit@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_edit.imageset/icon_edit@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_exit.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_exit@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_exit@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_exit.imageset/icon_exit@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_exit.imageset/icon_exit@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_exit.imageset/icon_exit@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_exit.imageset/icon_exit@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_green.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_green@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_green@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_green.imageset/icon_green@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_green.imageset/icon_green@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_green.imageset/icon_green@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_green.imageset/icon_green@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_hangup.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_hangup@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_hangup@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_hangup.imageset/icon_hangup@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_hangup.imageset/icon_hangup@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_hangup.imageset/icon_hangup@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_hangup.imageset/icon_hangup@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_head.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_head@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_head@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_head.imageset/icon_head@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_head.imageset/icon_head@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_head.imageset/icon_head@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_head.imageset/icon_head@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_launch.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_launch@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_launch@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_launch.imageset/icon_launch@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_launch.imageset/icon_launch@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_launch.imageset/icon_launch@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_launch.imageset/icon_launch@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loading.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_loading@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_loading@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loading.imageset/icon_loading@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loading.imageset/icon_loading@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loading.imageset/icon_loading@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loading.imageset/icon_loading@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loadings.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_loadings@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_loadings@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loadings.imageset/icon_loadings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loadings.imageset/icon_loadings@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loadings.imageset/icon_loadings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_loadings.imageset/icon_loadings@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_lock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_lock@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_lock@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_lock.imageset/icon_lock@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_lock.imageset/icon_lock@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_lock.imageset/icon_lock@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_lock.imageset/icon_lock@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_log.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_log@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_log@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_log.imageset/icon_log@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_log.imageset/icon_log@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_log.imageset/icon_log@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_log.imageset/icon_log@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_logo@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_logo@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_logo.imageset/icon_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_logo.imageset/icon_logo@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_logo.imageset/icon_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_logo.imageset/icon_logo@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_more@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_more@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more.imageset/icon_more@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more.imageset/icon_more@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more.imageset/icon_more@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more.imageset/icon_more@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_equal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_more_equal@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_more_equal@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_equal.imageset/icon_more_equal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_equal.imageset/icon_more_equal@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_equal.imageset/icon_more_equal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_equal.imageset/icon_more_equal@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_switch.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_more_switch@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_more_switch@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_switch.imageset/icon_more_switch@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_switch.imageset/icon_more_switch@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_switch.imageset/icon_more_switch@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_switch.imageset/icon_more_switch@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_unequal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_more_unequal@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_more_unequal@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_unequal.imageset/icon_more_unequal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_unequal.imageset/icon_more_unequal@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_unequal.imageset/icon_more_unequal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_more_unequal.imageset/icon_more_unequal@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_music.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_music@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_music@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_music.imageset/icon_music@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_music.imageset/icon_music@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_music.imageset/icon_music@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_music.imageset/icon_music@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_red.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_red@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_red@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_red.imageset/icon_red@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_red.imageset/icon_red@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_red.imageset/icon_red@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_red.imageset/icon_red@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_refresh.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_refresh@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_refresh@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_refresh.imageset/icon_refresh@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_refresh.imageset/icon_refresh@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_refresh.imageset/icon_refresh@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_refresh.imageset/icon_refresh@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_register.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_register@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_register@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_register.imageset/icon_register@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_register.imageset/icon_register@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_register.imageset/icon_register@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_register.imageset/icon_register@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_sdkversion.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_sdkversion@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_sdkversion@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_sdkversion.imageset/icon_sdkversion@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_sdkversion.imageset/icon_sdkversion@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_sdkversion.imageset/icon_sdkversion@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_sdkversion.imageset/icon_sdkversion@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_switch.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_switch@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_switch@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_switch.imageset/icon_switch@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_switch.imageset/icon_switch@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_switch.imageset/icon_switch@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_switch.imageset/icon_switch@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_time.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_time@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_time@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_time.imageset/icon_time@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_time.imageset/icon_time@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_time.imageset/icon_time@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_time.imageset/icon_time@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tip_audio_close@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tip_audio_close@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_close.imageset/icon_tip_audio_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_close.imageset/icon_tip_audio_close@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_close.imageset/icon_tip_audio_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_close.imageset/icon_tip_audio_close@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_open.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tip_audio_open@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tip_audio_open@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_open.imageset/icon_tip_audio_open@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_open.imageset/icon_tip_audio_open@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_open.imageset/icon_tip_audio_open@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_audio_open.imageset/icon_tip_audio_open@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_head.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tip_head@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tip_head@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_head.imageset/icon_tip_head@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_head.imageset/icon_tip_head@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_head.imageset/icon_tip_head@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_head.imageset/icon_tip_head@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tip_video_close@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tip_video_close@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_close.imageset/icon_tip_video_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_close.imageset/icon_tip_video_close@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_close.imageset/icon_tip_video_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_close.imageset/icon_tip_video_close@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_open.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tip_video_open@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tip_video_open@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_open.imageset/icon_tip_video_open@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_open.imageset/icon_tip_video_open@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_open.imageset/icon_tip_video_open@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_video_open.imageset/icon_tip_video_open@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_warning.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tip_warning@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tip_warning@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_warning.imageset/icon_tip_warning@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_warning.imageset/icon_tip_warning@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_warning.imageset/icon_tip_warning@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_tip_warning.imageset/icon_tip_warning@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_video@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_video@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video.imageset/icon_video@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video.imageset/icon_video@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video.imageset/icon_video@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video.imageset/icon_video@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_video_close@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_video_close@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video_close.imageset/icon_video_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video_close.imageset/icon_video_close@2x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video_close.imageset/icon_video_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Assets.xcassets/resource/icon_video_close.imageset/icon_video_close@3x.png
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Common/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Common/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Common/Category/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Common/Category/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Common/Category/VideoLive-iOS-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import "UIAlertController+Blocks.h"
6 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | 视频互动连麦
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | ITSAppUsesNonExemptEncryption
24 |
25 | LSRequiresIPhoneOS
26 |
27 | NSAppTransportSecurity
28 |
29 | NSAllowsArbitraryLoads
30 |
31 |
32 | NSCameraUsageDescription
33 | 视频互动连麦请求访问麦克风用于视频通话?
34 | NSMicrophoneUsageDescription
35 | 视频互动连麦请求访问麦克风用于语音交流?
36 | UIApplicationSupportsIndirectInputEvents
37 |
38 | UIBackgroundModes
39 |
40 | audio
41 |
42 | UILaunchStoryboardName
43 | LaunchScreen
44 | UIMainStoryboardFile
45 | Main
46 | UIRequiredDeviceCapabilities
47 |
48 | armv7
49 |
50 | UISupportedInterfaceOrientations
51 |
52 | UIInterfaceOrientationPortrait
53 |
54 | UISupportedInterfaceOrientations~ipad
55 |
56 | UIInterfaceOrientationPortrait
57 | UIInterfaceOrientationPortraitUpsideDown
58 | UIInterfaceOrientationLandscapeLeft
59 | UIInterfaceOrientationLandscapeRight
60 |
61 | UIUserInterfaceStye
62 | Light
63 | UIViewControllerBasedStatusBarAppearance
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Settings/ARStatementViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ARStatementViewController.swift
3 | // VideoLive-iOS
4 | //
5 | // Created by 余生丶 on 2021/6/22.
6 | //
7 |
8 | import UIKit
9 |
10 | class ARStatementViewController: UIViewController {
11 | override func viewDidLoad() {
12 | super.viewDidLoad()
13 |
14 | // Do any additional setup after loading the view.
15 | self.navigationItem.leftBarButtonItem = createBarButtonItem(title: "产品免责声明")
16 | }
17 |
18 | override func viewWillAppear(_ animated: Bool) {
19 | super.viewWillAppear(animated)
20 | removeLogoImage()
21 | }
22 |
23 | override func viewWillDisappear(_ animated: Bool) {
24 | super.viewWillDisappear(animated)
25 | addLogoImage()
26 | }
27 |
28 | /*
29 | // MARK: - Navigation
30 |
31 | // In a storyboard-based application, you will often want to do a little preparation before navigation
32 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
33 | // Get the new view controller using segue.destination.
34 | // Pass the selected object to the new view controller.
35 | }
36 | */
37 | }
38 |
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Video/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/VideoLive-iOS/VideoLive-iOS/Video/.DS_Store
--------------------------------------------------------------------------------
/VideoLive-iOS/VideoLive-iOS/Video/LogViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LogViewController.swift
3 | // AudioLive-iOS
4 | //
5 | // Created by 余生丶 on 2021/3/9.
6 | //
7 |
8 | import AttributedString
9 | import UIKit
10 |
11 | struct ARLogModel {
12 | var userName: String?
13 | var uid: String?
14 | var text: String?
15 | }
16 |
17 | class LogCell: UITableViewCell {
18 | @IBOutlet var contentLabel: UILabel!
19 | @IBOutlet var colorView: UIView!
20 |
21 | override func awakeFromNib() {
22 | super.awakeFromNib()
23 | colorView.layer.cornerRadius = 12.25
24 | }
25 |
26 | func update(logModel: ARLogModel) {
27 | var userName = logModel.userName
28 | (userName == nil) ? userName = "" : nil
29 | if logModel.uid == UserDefaults.string(forKey: .uid) {
30 | contentLabel.attributed.text = """
31 | \(logModel.userName ?? "", .foreground(UIColor(hexString: "#FFBB8D"))) \(logModel.text ?? "", .foreground(UIColor.white))
32 | """
33 | } else {
34 | contentLabel.attributed.text = """
35 | \(logModel.userName ?? "", .foreground(UIColor(hexString: "#8DAEFF"))) \(logModel.text ?? "", .foreground(UIColor.white))
36 | """
37 | }
38 | }
39 | }
40 |
41 | class LogViewController: UITableViewController {
42 | private lazy var list = [ARLogModel]()
43 |
44 | override func viewDidLoad() {
45 | super.viewDidLoad()
46 | tableView.rowHeight = UITableView.automaticDimension
47 | tableView.estimatedRowHeight = 44
48 | }
49 |
50 | override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
51 | return list.count
52 | }
53 |
54 | override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
55 | let cell = tableView.dequeueReusableCell(withIdentifier: "LogCell", for: indexPath) as! LogCell
56 | cell.update(logModel: list[indexPath.row])
57 | return cell
58 | }
59 | }
60 |
61 | extension LogViewController {
62 | func log(logModel: ARLogModel) {
63 | DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.25) {
64 | self.list.append(logModel)
65 | let index = IndexPath(row: self.list.count - 1, section: 0)
66 | self.tableView.insertRows(at: [index], with: .automatic)
67 | self.tableView.scrollToRow(at: index, at: .middle, animated: false)
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/audience.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/audience.png
--------------------------------------------------------------------------------
/effect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/effect.png
--------------------------------------------------------------------------------
/host.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/host.png
--------------------------------------------------------------------------------
/native_to_cdn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyRTC-UseCase/VideoLive/8c3aa2803acf653eff2bc3441e3d913d5f2ec371/native_to_cdn.png
--------------------------------------------------------------------------------