├── VOLCDemo ├── .gitignore ├── VOLCDemo │ └── Base │ │ ├── Resources.xcassets │ │ ├── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── 1024.png │ │ │ ├── 114.png │ │ │ ├── 120.png │ │ │ ├── 128.png │ │ │ ├── 136.png │ │ │ ├── 152.png │ │ │ ├── 167.png │ │ │ ├── 180.png │ │ │ ├── 192.png │ │ │ ├── 40.png │ │ │ ├── 58.png │ │ │ ├── 60.png │ │ │ ├── 76.png │ │ │ ├── 80.png │ │ │ └── 87.png │ │ ├── AppDelegate.h │ │ ├── main.m │ │ └── VOLCDemoPrefix.pch ├── VEVodMain │ ├── Resources │ │ └── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── back.imageset │ │ │ ├── back@2x.png │ │ │ ├── back@3x.png │ │ │ └── Contents.json │ │ │ ├── ad_image.imageset │ │ │ ├── ad_image.png │ │ │ ├── ad_image@2x.png │ │ │ ├── ad_image@3x.png │ │ │ └── Contents.json │ │ │ ├── close.imageset │ │ │ ├── close_circle@2x.png │ │ │ ├── close_circle@3x.png │ │ │ └── Contents.json │ │ │ ├── fake_user.imageset │ │ │ ├── fake_user.png │ │ │ └── Contents.json │ │ │ ├── feed_like.imageset │ │ │ ├── feed_like@2x.png │ │ │ ├── feed_like@3x.png │ │ │ └── Contents.json │ │ │ ├── feed_play.imageset │ │ │ ├── feed_play@2x.png │ │ │ ├── feed_play@3x.png │ │ │ └── Contents.json │ │ │ ├── feed_star.imageset │ │ │ ├── feed_star@2x.png │ │ │ ├── feed_star@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_dot.imageset │ │ │ ├── 7.27圆点icon_dot.png │ │ │ ├── 7.27圆点icon_dot-1.png │ │ │ └── Contents.json │ │ │ ├── icon_feed.imageset │ │ │ ├── icon_feed@2x.png │ │ │ ├── icon_feed@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_long.imageset │ │ │ ├── icon_long@2x.png │ │ │ ├── icon_long@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_short.imageset │ │ │ ├── icon_short@2x.png │ │ │ ├── icon_short@3x.png │ │ │ └── Contents.json │ │ │ ├── video_pause.imageset │ │ │ ├── video_pause@2x.png │ │ │ ├── video_pause@3x.png │ │ │ └── Contents.json │ │ │ ├── video_play.imageset │ │ │ ├── video_play@2x.png │ │ │ ├── video_play@3x.png │ │ │ └── Contents.json │ │ │ ├── ad_detail_tag.imageset │ │ │ ├── ad_detail_tag.png │ │ │ ├── ad_detail_tag@2x.png │ │ │ ├── ad_detail_tag@3x.png │ │ │ └── Contents.json │ │ │ ├── fake_feed_holder.imageset │ │ │ ├── fake_img@2x.png │ │ │ ├── fake_img@3x.png │ │ │ └── Contents.json │ │ │ ├── feed_comment.imageset │ │ │ ├── feed_comment@2x.png │ │ │ ├── feed_comment@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_setting.imageset │ │ │ ├── icon_setting@2x.png │ │ │ ├── icon_setting@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_speed_0.imageset │ │ │ ├── icon_speed_1@2x.png │ │ │ ├── icon_speed_1@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_speed_1.imageset │ │ │ ├── icon_speed_2@2x.png │ │ │ ├── icon_speed_2@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_loopplay.imageset │ │ │ ├── 循环播放-off.png │ │ │ ├── 循环播放-off 1.png │ │ │ └── Contents.json │ │ │ ├── icon_close.imageset │ │ │ ├── _RoundBtnicon_close.png │ │ │ ├── _RoundBtnicon_close-1.png │ │ │ └── Contents.json │ │ │ ├── icon_dot_big.imageset │ │ │ ├── 当前锚点icon_dot_big-1.png │ │ │ ├── 当前锚点icon_dot_big.png │ │ │ └── Contents.json │ │ │ ├── icon_drama.imageset │ │ │ ├── icon_短剧首页icon_drama.png │ │ │ ├── icon_短剧首页icon_drama-1.png │ │ │ └── Contents.json │ │ │ ├── icon_money.imageset │ │ │ ├── Frameicon_money@2x.png │ │ │ ├── Frameicon_money@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_loopplay_sel.imageset │ │ │ ├── 循环播放-on.png │ │ │ ├── 循环播放-on 1.png │ │ │ └── Contents.json │ │ │ ├── long_video_sr.imageset │ │ │ ├── long_video_sr@2x.png │ │ │ ├── long_video_sr@3x.png │ │ │ └── Contents.json │ │ │ ├── video_drama_play.imageset │ │ │ ├── 播放icon_play_big.png │ │ │ ├── 播放icon_play_big-1.png │ │ │ └── Contents.json │ │ │ ├── icon_play_sign.imageset │ │ │ ├── Fill 1icon_play_sign.png │ │ │ ├── Fill 1icon_play_sign-1.png │ │ │ └── Contents.json │ │ │ ├── icon_praise_nor.imageset │ │ │ ├── icon_praise_nor@2x.png │ │ │ ├── icon_praise_nor@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_praise_sel.imageset │ │ │ ├── icon_praise_sel@2x.png │ │ │ ├── icon_praise_sel@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_shot_drama.imageset │ │ │ ├── icon_shot_drama@2x.png │ │ │ ├── icon_shot_drama@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_lock.imageset │ │ │ ├── long_video_lock@2x.png │ │ │ ├── long_video_lock@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_more.imageset │ │ │ ├── long_video_more@2x.png │ │ │ ├── long_video_more@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_speed.imageset │ │ │ ├── long_video_speed@2x.png │ │ │ ├── long_video_speed@3x.png │ │ │ └── Contents.json │ │ │ ├── main_arrow_right.imageset │ │ │ ├── main_arrow_right@2x.png │ │ │ ├── main_arrow_right@3x.png │ │ │ └── Contents.json │ │ │ ├── video_page_back.imageset │ │ │ ├── video_page_back@2x.png │ │ │ ├── video_page_back@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_sr_sel.imageset │ │ │ ├── long_video_sr_sel@2x.png │ │ │ ├── long_video_sr_sel@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_unlock.imageset │ │ │ ├── long_video_unlock@2x.png │ │ │ ├── long_video_unlock@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_collect_sel.imageset │ │ │ ├── collecticon_collect_sel.png │ │ │ ├── collecticon_collect_sel-1.png │ │ │ └── Contents.json │ │ │ ├── icon_drama_list_cover.imageset │ │ │ ├── icon_drama_list_cover.png │ │ │ ├── icon_drama_list_cover-1.png │ │ │ └── Contents.json │ │ │ ├── icon_drama_selec.imageset │ │ │ ├── Group 356icon_drama_selec.png │ │ │ ├── Group 356icon_drama_selec-1.png │ │ │ └── Contents.json │ │ │ ├── icon_up_arrow.imageset │ │ │ ├── ic_arrow_packupicon_up_arrow.png │ │ │ ├── ic_arrow_packupicon_up_arrow-1.png │ │ │ └── Contents.json │ │ │ ├── long_video_portrait.imageset │ │ │ ├── long_video_portrait@2x.png │ │ │ ├── long_video_portrait@3x.png │ │ │ └── Contents.json │ │ │ ├── video_slide_dragbar.imageset │ │ │ ├── video_slide_dragbar@2x.png │ │ │ ├── video_slide_dragbar@3x.png │ │ │ └── Contents.json │ │ │ ├── fake_long_top_holder.imageset │ │ │ ├── fake_long_top_holder@2x.png │ │ │ ├── fake_long_top_holder@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_collect_nor.imageset │ │ │ ├── icon collecticon_collect_nor.png │ │ │ ├── icon collecticon_collect_nor-1.png │ │ │ └── Contents.json │ │ │ ├── icon_drama_lock.imageset │ │ │ ├── Group 2036084238icon_lock@2x.png │ │ │ ├── Group 2036084238icon_lock@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_feed_cover.imageset │ │ │ ├── Mask Bottomicon_feed_backgroud.png │ │ │ ├── Mask Bottomicon_feed_backgroud-1.png │ │ │ └── Contents.json │ │ │ ├── icon_home_background.imageset │ │ │ ├── icon_home_background@2x.png │ │ │ ├── icon_home_background@3x.png │ │ │ └── Contents.json │ │ │ ├── long_video_resolution.imageset │ │ │ ├── long_video_resolution@2x.png │ │ │ ├── long_video_resolution@3x.png │ │ │ └── Contents.json │ │ │ ├── icon_palying_drama.imageset │ │ │ ├── Frame 2037234945icon_cur_play.png │ │ │ ├── Frame 2037234945icon_cur_play-1.png │ │ │ └── Contents.json │ │ │ ├── fake_long_normal_holder.imageset │ │ │ ├── fake_long_normal_holder@2x.png │ │ │ ├── fake_long_normal_holder@3x.png │ │ │ └── Contents.json │ │ │ └── icon_dis_record_screen.imageset │ │ │ ├── Subtracticon_dis_record_screen.png │ │ │ ├── Subtracticon_dis_record_screen-1.png │ │ │ └── Contents.json │ ├── Entry │ │ └── VEMainViewController.h │ └── VEVodMain.podspec ├── VOLCDemo.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── bytedance.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── VEPlayerKit │ ├── Classes │ │ ├── PlayerModule │ │ │ ├── PlayerModel │ │ │ │ ├── VEPlayerSeekState.m │ │ │ │ └── VEPlayerSeekState.h │ │ │ ├── PlayerModule │ │ │ │ ├── VEPlayerLockModule.h │ │ │ │ ├── VEPlayerSpeedModule.h │ │ │ │ ├── VEPlayerVisibleModule.h │ │ │ │ ├── VEPlayerResolutionModule.h │ │ │ │ ├── VEPlayerSeekModule.h │ │ │ │ ├── VEPlayerSeekProgressModule.h │ │ │ │ ├── VEPlayerFullScreenModule.h │ │ │ │ ├── VEPlayerSubtitleModule.h │ │ │ │ ├── VEPlayerBackModule.h │ │ │ │ ├── VEPlayerPipModule.h │ │ │ │ └── VEPlayerLoadingModule.h │ │ │ └── PlayerUI │ │ │ │ ├── VEPlayerSpeedView.h │ │ │ │ ├── VEPlayerSeekProgressView.h │ │ │ │ ├── Subtitle │ │ │ │ └── VEPlayerSubtitleView.h │ │ │ │ ├── VEPlayerResolutionView.h │ │ │ │ └── Loading │ │ │ │ └── VEActivityIndicator.h │ │ ├── Interaction │ │ │ ├── ControlView │ │ │ │ ├── VEPlayerControlView.h │ │ │ │ ├── VEPlayerControlView.m │ │ │ │ └── VEPlayerControlViewDefine.h │ │ │ ├── Context │ │ │ │ ├── VEPlayerContextDI.h │ │ │ │ ├── VEPlayerContextMacros.h │ │ │ │ ├── VEPlayerContextItem.h │ │ │ │ ├── VEPlayerContextItemHandler.h │ │ │ │ └── VEPlayerContextStorage.h │ │ │ ├── BaseModule │ │ │ │ ├── VEPlayerViewLifeCycleProtocol.h │ │ │ │ ├── VEDelegateMultiplexer.h │ │ │ │ ├── VEPlayerBaseModuleProtocol.h │ │ │ │ ├── VEPlayerBaseModule.h │ │ │ │ ├── VEPlayerModuleManager.h │ │ │ │ ├── VEPlayerModuleManagerInterface.h │ │ │ │ └── VEPlayerBaseModule.m │ │ │ ├── ActionViewInterface │ │ │ │ └── VEPlayerViewService.h │ │ │ ├── GestureService │ │ │ │ ├── VEPlayerGestureService.h │ │ │ │ └── Private │ │ │ │ │ ├── VEPlayerGestureDisableHandler.h │ │ │ │ │ ├── VEPlayerGestureDisableHandler.m │ │ │ │ │ └── VEPlayerGestureWrapper.h │ │ │ ├── ActionView │ │ │ │ └── VEPlayerActionView.h │ │ │ ├── Interaction │ │ │ │ ├── VEPlayerInteractionDefine.h │ │ │ │ └── VEPlayerInteraction.h │ │ │ └── ModuleLoader │ │ │ │ ├── VELoopScatterPerform.h │ │ │ │ ├── VEFrameScatterPerform.h │ │ │ │ └── VEScatterPerformProtocol.h │ │ ├── PlayerCore │ │ │ ├── VEVideoPlayerController+VEPlayCoreAbility.h │ │ │ ├── State │ │ │ │ ├── VEPlayFinishStatus.m │ │ │ │ └── VEPlayFinishStatus.h │ │ │ ├── VEVideoPlayerController+Tips.h │ │ │ ├── VEPlayerKit.h │ │ │ ├── VEVideoPlayerController+Observer.h │ │ │ ├── VEVideoPlayerController+Resolution.h │ │ │ ├── VEVideoPlayerController+DisRecordScreen.h │ │ │ ├── VEVideoPlayerController+Tips.m │ │ │ ├── VEVideoPlayerController+DebugTool.h │ │ │ ├── VEVideoPlayerController+Resolution.m │ │ │ ├── VEVideoPlayerController+Strategy.h │ │ │ ├── EnginePool │ │ │ │ └── VEVideoEnginePool.h │ │ │ └── VideoEngine │ │ │ │ └── TTVideoEngineSourceCategory.h │ │ └── PlayerLog │ │ │ ├── VEPlayerExceptionLogger.h │ │ │ └── VEPlayerExceptionLoggerDefine.h │ └── VEPlayerKit.podspec ├── VEBaseKit │ ├── Classes │ │ ├── Categorys │ │ │ ├── UIColor+RGB.h │ │ │ ├── UIView+BDShowView.h │ │ │ ├── UIColor+RGB.m │ │ │ ├── UIView+BDShowView.m │ │ │ ├── NSNumber+BTDAdditions.h │ │ │ └── NSTimer+BTDAdditions.h │ │ └── Utility │ │ │ ├── BTDWeakProxy.h │ │ │ ├── VELRUCache.h │ │ │ └── VEPlayerUtility.h │ └── VEBaseKit.podspec ├── VOLCDemo.xcworkspace │ ├── xcuserdata │ │ └── bytedance.xcuserdatad │ │ │ └── IDEFindNavigatorScopes.plist │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── VESceneModule │ └── Classes │ │ ├── ShortDrama │ │ ├── ShortDramaListController │ │ │ ├── VEShortDramaListViewController.h │ │ │ └── VEShortDramaVideoViewNormalCell.h │ │ ├── PlayerModules │ │ │ ├── ShortDramaPlayButtonModule.h │ │ │ ├── ShortDramaPayModule.h │ │ │ ├── ShortDramaIntroduceModule.h │ │ │ ├── ShortDramaPlayerMaskModule.h │ │ │ ├── ShortDramaPlayerSpeedModule.h │ │ │ ├── ShortDramaPlayerToastModule.h │ │ │ ├── ShortDramaRecommodIntroduceModule.h │ │ │ ├── ShortDramaRecordStartTimeModule.h │ │ │ ├── ShortDramaSeriesModule.h │ │ │ └── ShortDramaSelectionModule.h │ │ ├── ShortDramaFeedController │ │ │ ├── DramaRecommod │ │ │ │ ├── VEShortDramaVideoFeedViewController.h │ │ │ │ ├── ShortDramaRecommodPlayerModuleLoader.h │ │ │ │ └── VEShortDramaVideoCellController.h │ │ │ ├── DramaPraise │ │ │ │ └── ShortDramaPraiseViewController.h │ │ │ ├── DramaCollect │ │ │ │ └── ShortDramaCollectViewController.h │ │ │ ├── DramaSelection │ │ │ │ ├── ShortDramaSelectionCell.h │ │ │ │ └── ShortDramaSelectionViewController.h │ │ │ ├── DramaPay │ │ │ │ ├── ShortDramaCachePayManager.h │ │ │ │ └── ShortDramaPayViewController.h │ │ │ └── DramaDetail │ │ │ │ └── ShortDramaDetailPlayerModuleLoader.h │ │ ├── ShortDramaUIView │ │ │ ├── ShortDramaIntroduceView.h │ │ │ ├── ShortDramaSpeedTipView.h │ │ │ ├── ShortDramaSeriesView.h │ │ │ └── ShortDramaSelectionView.h │ │ ├── VEShortDramaPagingViewController.h │ │ └── Data │ │ │ ├── Model │ │ │ ├── VEDramaPayInfoModel.m │ │ │ ├── VEDramaEpisodeInfoModel.h │ │ │ ├── VEDramaPayInfoModel.h │ │ │ ├── VEDramaInfoModel.h │ │ │ ├── VEDramaInfoModel.m │ │ │ └── VEDramaEpisodeInfoModel.m │ │ │ └── DataManager │ │ │ └── VEDramaDataManager.h │ │ ├── LongVideo │ │ ├── VELongVideoViewController.h │ │ ├── PlayerModules │ │ │ ├── VELongVideoPlayButtonModule.h │ │ │ ├── VELongVideoOtherFunctionsModule.h │ │ │ ├── VELongVideoIntroduceModule.h │ │ │ └── VELongVideoSeekModule.h │ │ ├── LongVideoUIView │ │ │ ├── VELongVideoIntroduceView.h │ │ │ └── VELongVideoOtherFunctionsView.h │ │ ├── Cell │ │ │ ├── VELongVideoViewTopCell.h │ │ │ ├── VELongVideoViewNormalCell.h │ │ │ ├── VELongVideoViewNormalCell.m │ │ │ └── VELongVideoViewTopCell.m │ │ ├── VELongVideoPlayerModuleLoader.h │ │ ├── VELongVideoDetailViewController.h │ │ ├── VELongVideoViewLayout.h │ │ └── UIViewController+Orientation.h │ │ ├── Ad │ │ ├── ExampleAd │ │ │ ├── Utils │ │ │ │ └── UIColor+Hex.h │ │ │ ├── ExampleAdManager.h │ │ │ ├── PlayerModules │ │ │ │ ├── ExampleAdPlayButtonModule.h │ │ │ │ ├── ExampleAdLabelModule.h │ │ │ │ └── ExampleAdDetailModule.h │ │ │ ├── ExampleAdContextKeyDefine.m │ │ │ ├── ExampleAdContextKeyDefine.h │ │ │ ├── ExampleAdAction.h │ │ │ ├── ExampleAdPlayerModuleLoader.h │ │ │ ├── ExampleAdAction.m │ │ │ ├── ExampleAdProvider.h │ │ │ └── ExampleAdViewController.h │ │ ├── Protocol │ │ │ ├── VEAdActionResponderDelegate.h │ │ │ └── VEAdManagerDelegate.h │ │ ├── Data │ │ │ └── Model │ │ │ │ ├── VEAdInfoModel.m │ │ │ │ └── VEAdInfoModel.h │ │ ├── VEAdOperator.h │ │ └── VEAdCellController.h │ │ ├── UIComponents │ │ ├── BaseController │ │ │ ├── VEViewController.h │ │ │ └── VEViewController.m │ │ └── SectionUIKit │ │ │ └── VEScrollViewController.h │ │ ├── ShortVideo │ │ ├── PlayerModules │ │ │ └── ShortVideoPlayButtonModule.h │ │ ├── VEShortVideoViewController.h │ │ ├── VEShortVideoPlayerModuleLoader.h │ │ └── VEShortVideoCellController.h │ │ ├── Setting │ │ ├── VESettingViewController.h │ │ └── Cell │ │ │ ├── VESettingCell.h │ │ │ ├── VESettingDisplayCell.h │ │ │ ├── VESettingSwitcherCell.h │ │ │ ├── VESettingDisplayDetailCell.h │ │ │ ├── VESettingTypeMutilSelectorCell.h │ │ │ ├── VESettingCell.m │ │ │ ├── VESettingDisplayCell.m │ │ │ └── VESettingTypeMutilSelectorCell.m │ │ ├── CustomPlayVideo │ │ ├── VEVideoUrlParser.h │ │ └── VEPlayUrlConfigViewController.h │ │ ├── FeedVideo │ │ ├── VEFeedVideoPlayerModuleLoader.h │ │ ├── VEFeedVideoViewController.h │ │ ├── VEFeedVideoCellPlayerModuleLoader.h │ │ ├── VEFeedVideoDetailViewController.h │ │ ├── VEFeedVideoCellPlayerModuleLoader.m │ │ └── Cell │ │ │ └── VEFeedVideoNormalCell.h │ │ ├── Config │ │ └── VEVideoPlayerConfigurationFactory.h │ │ ├── Data │ │ ├── DataManager │ │ │ └── VESettingManager.h │ │ └── Network │ │ │ └── VENetworkHelper.h │ │ └── MediaModel │ │ └── VEMediaCellFactory.h └── LICENSE ├── VEVodPlayerAPIExample ├── VEVodPlayerAPIExample │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── VEVodPlayerAPIExample-Bridging-Header.h │ ├── AppDelegate.h │ ├── RootViewController.h │ ├── QuickStart │ │ ├── VidSourceOCViewController.h │ │ └── DirectUrlSourceOCViewController.h │ ├── AdvancedFeatures │ │ ├── DebugToolOCViewController.h │ │ ├── VidSubtitleOCViewController.h │ │ └── DirectUrlSubtitleOCViewController.h │ ├── BestPractice │ │ ├── ShortVideoOCViewController.h │ │ └── ShortVideoOCTableViewCell.h │ ├── Utils │ │ ├── VEAPIButton.h │ │ └── VEAPITools.h │ ├── BasicFeatures │ │ ├── DisplayModeOCViewController.h │ │ └── BasicPlaybackOCViewController.h │ ├── InitSDKExample.h │ ├── main.m │ ├── Info.plist │ └── VEAPIVideoModel │ │ └── VEAPIMediaSource.h ├── VEVodPlayerAPIExample.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── bytedance.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── bytedance.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── VEVodPlayerAPIExample.xcworkspace │ ├── xcuserdata │ │ └── bytedance.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── contents.xcworkspacedata └── LICENSE └── .gitignore /VOLCDemo/.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | 4 | # Cocoapods 5 | Pods/ 6 | 7 | # MacOS 8 | .DS_Store 9 | 10 | *.lock 11 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/114.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/128.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/136.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/192.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VOLCDemo/Base/Resources.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/back.imageset/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/back.imageset/back@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/back.imageset/back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/back.imageset/back@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/ad_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/ad_image.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/ad_image@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/ad_image@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/ad_image@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/ad_image@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/close.imageset/close_circle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/close.imageset/close_circle@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/close.imageset/close_circle@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/close.imageset/close_circle@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_user.imageset/fake_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_user.imageset/fake_user.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # gem 2 | .gem/ 3 | /Gemfile 4 | 5 | # Cocoapods 6 | Pods/ 7 | 8 | # project 9 | /ExportPlists 10 | /Provisions 11 | /License 12 | /.bitnest 13 | /.bits 14 | 15 | # MacOS 16 | .DS_Store 17 | 18 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_like.imageset/feed_like@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_like.imageset/feed_like@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_like.imageset/feed_like@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_like.imageset/feed_like@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_play.imageset/feed_play@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_play.imageset/feed_play@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_play.imageset/feed_play@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_play.imageset/feed_play@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_star.imageset/feed_star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_star.imageset/feed_star@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_star.imageset/feed_star@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_star.imageset/feed_star@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot.imageset/7.27圆点icon_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot.imageset/7.27圆点icon_dot.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed.imageset/icon_feed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed.imageset/icon_feed@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed.imageset/icon_feed@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed.imageset/icon_feed@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_long.imageset/icon_long@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_long.imageset/icon_long@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_long.imageset/icon_long@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_long.imageset/icon_long@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot.imageset/7.27圆点icon_dot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot.imageset/7.27圆点icon_dot-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_short.imageset/icon_short@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_short.imageset/icon_short@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_short.imageset/icon_short@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_short.imageset/icon_short@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_pause.imageset/video_pause@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_pause.imageset/video_pause@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_pause.imageset/video_pause@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_pause.imageset/video_pause@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_play.imageset/video_play@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_play.imageset/video_play@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_play.imageset/video_play@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_play.imageset/video_play@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/ad_detail_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/ad_detail_tag.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_feed_holder.imageset/fake_img@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_feed_holder.imageset/fake_img@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_feed_holder.imageset/fake_img@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_feed_holder.imageset/fake_img@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_comment.imageset/feed_comment@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_comment.imageset/feed_comment@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_comment.imageset/feed_comment@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_comment.imageset/feed_comment@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_setting.imageset/icon_setting@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_setting.imageset/icon_setting@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_setting.imageset/icon_setting@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_setting.imageset/icon_setting@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_0.imageset/icon_speed_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_0.imageset/icon_speed_1@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_0.imageset/icon_speed_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_0.imageset/icon_speed_1@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_1.imageset/icon_speed_2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_1.imageset/icon_speed_2@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_1.imageset/icon_speed_2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_1.imageset/icon_speed_2@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay.imageset/循环播放-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay.imageset/循环播放-off.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/ad_detail_tag@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/ad_detail_tag@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/ad_detail_tag@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/ad_detail_tag@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_close.imageset/_RoundBtnicon_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_close.imageset/_RoundBtnicon_close.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot_big.imageset/当前锚点icon_dot_big-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot_big.imageset/当前锚点icon_dot_big-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot_big.imageset/当前锚点icon_dot_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot_big.imageset/当前锚点icon_dot_big.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama.imageset/icon_短剧首页icon_drama.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama.imageset/icon_短剧首页icon_drama.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_money.imageset/Frameicon_money@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_money.imageset/Frameicon_money@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_money.imageset/Frameicon_money@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_money.imageset/Frameicon_money@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay.imageset/循环播放-off 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay.imageset/循环播放-off 1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay_sel.imageset/循环播放-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay_sel.imageset/循环播放-on.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr.imageset/long_video_sr@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr.imageset/long_video_sr@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr.imageset/long_video_sr@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr.imageset/long_video_sr@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModel/VEPlayerSeekState.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSeekState.m 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayerSeekState.h" 7 | 8 | @implementation VEPlayerSeekState 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_close.imageset/_RoundBtnicon_close-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_close.imageset/_RoundBtnicon_close-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama.imageset/icon_短剧首页icon_drama-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama.imageset/icon_短剧首页icon_drama-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay_sel.imageset/循环播放-on 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay_sel.imageset/循环播放-on 1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_drama_play.imageset/播放icon_play_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_drama_play.imageset/播放icon_play_big.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_play_sign.imageset/Fill 1icon_play_sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_play_sign.imageset/Fill 1icon_play_sign.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_nor.imageset/icon_praise_nor@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_nor.imageset/icon_praise_nor@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_nor.imageset/icon_praise_nor@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_nor.imageset/icon_praise_nor@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_sel.imageset/icon_praise_sel@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_sel.imageset/icon_praise_sel@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_sel.imageset/icon_praise_sel@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_sel.imageset/icon_praise_sel@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_shot_drama.imageset/icon_shot_drama@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_shot_drama.imageset/icon_shot_drama@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_shot_drama.imageset/icon_shot_drama@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_shot_drama.imageset/icon_shot_drama@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_lock.imageset/long_video_lock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_lock.imageset/long_video_lock@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_lock.imageset/long_video_lock@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_lock.imageset/long_video_lock@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_more.imageset/long_video_more@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_more.imageset/long_video_more@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_more.imageset/long_video_more@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_more.imageset/long_video_more@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_speed.imageset/long_video_speed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_speed.imageset/long_video_speed@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_speed.imageset/long_video_speed@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_speed.imageset/long_video_speed@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/main_arrow_right.imageset/main_arrow_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/main_arrow_right.imageset/main_arrow_right@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/main_arrow_right.imageset/main_arrow_right@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/main_arrow_right.imageset/main_arrow_right@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_drama_play.imageset/播放icon_play_big-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_drama_play.imageset/播放icon_play_big-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_page_back.imageset/video_page_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_page_back.imageset/video_page_back@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_page_back.imageset/video_page_back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_page_back.imageset/video_page_back@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_play_sign.imageset/Fill 1icon_play_sign-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_play_sign.imageset/Fill 1icon_play_sign-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr_sel.imageset/long_video_sr_sel@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr_sel.imageset/long_video_sr_sel@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr_sel.imageset/long_video_sr_sel@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr_sel.imageset/long_video_sr_sel@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_unlock.imageset/long_video_unlock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_unlock.imageset/long_video_unlock@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_unlock.imageset/long_video_unlock@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_unlock.imageset/long_video_unlock@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_sel.imageset/collecticon_collect_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_sel.imageset/collecticon_collect_sel.png -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Categorys/UIColor+RGB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+RGB.h 3 | // VEPlayModule 4 | // 5 | 6 | @import UIKit; 7 | 8 | @interface UIColor (RGB) 9 | 10 | + (instancetype)colorWithRGB:(int)rgb alpha:(float)alpha; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_sel.imageset/collecticon_collect_sel-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_sel.imageset/collecticon_collect_sel-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_list_cover.imageset/icon_drama_list_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_list_cover.imageset/icon_drama_list_cover.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_selec.imageset/Group 356icon_drama_selec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_selec.imageset/Group 356icon_drama_selec.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_up_arrow.imageset/ic_arrow_packupicon_up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_up_arrow.imageset/ic_arrow_packupicon_up_arrow.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_portrait.imageset/long_video_portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_portrait.imageset/long_video_portrait@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_portrait.imageset/long_video_portrait@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_portrait.imageset/long_video_portrait@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_slide_dragbar.imageset/video_slide_dragbar@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_slide_dragbar.imageset/video_slide_dragbar@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_slide_dragbar.imageset/video_slide_dragbar@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_slide_dragbar.imageset/video_slide_dragbar@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_top_holder.imageset/fake_long_top_holder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_top_holder.imageset/fake_long_top_holder@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_top_holder.imageset/fake_long_top_holder@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_top_holder.imageset/fake_long_top_holder@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_nor.imageset/icon collecticon_collect_nor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_nor.imageset/icon collecticon_collect_nor.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_list_cover.imageset/icon_drama_list_cover-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_list_cover.imageset/icon_drama_list_cover-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_lock.imageset/Group 2036084238icon_lock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_lock.imageset/Group 2036084238icon_lock@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_lock.imageset/Group 2036084238icon_lock@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_lock.imageset/Group 2036084238icon_lock@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_selec.imageset/Group 356icon_drama_selec-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_selec.imageset/Group 356icon_drama_selec-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed_cover.imageset/Mask Bottomicon_feed_backgroud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed_cover.imageset/Mask Bottomicon_feed_backgroud.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_home_background.imageset/icon_home_background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_home_background.imageset/icon_home_background@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_home_background.imageset/icon_home_background@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_home_background.imageset/icon_home_background@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_up_arrow.imageset/ic_arrow_packupicon_up_arrow-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_up_arrow.imageset/ic_arrow_packupicon_up_arrow-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_resolution.imageset/long_video_resolution@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_resolution.imageset/long_video_resolution@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_resolution.imageset/long_video_resolution@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_resolution.imageset/long_video_resolution@3x.png -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/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 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_nor.imageset/icon collecticon_collect_nor-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_nor.imageset/icon collecticon_collect_nor-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed_cover.imageset/Mask Bottomicon_feed_backgroud-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed_cover.imageset/Mask Bottomicon_feed_backgroud-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_palying_drama.imageset/Frame 2037234945icon_cur_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_palying_drama.imageset/Frame 2037234945icon_cur_play.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_normal_holder.imageset/fake_long_normal_holder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_normal_holder.imageset/fake_long_normal_holder@2x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_normal_holder.imageset/fake_long_normal_holder@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_normal_holder.imageset/fake_long_normal_holder@3x.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_palying_drama.imageset/Frame 2037234945icon_cur_play-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_palying_drama.imageset/Frame 2037234945icon_cur_play-1.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dis_record_screen.imageset/Subtracticon_dis_record_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dis_record_screen.imageset/Subtracticon_dis_record_screen.png -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Entry/VEMainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEMainViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2021/5/23. 6 | // 7 | 8 | @interface VEMainViewController : UIViewController 9 | 10 | -(void)applicationDidBecomeActive; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dis_record_screen.imageset/Subtracticon_dis_record_screen-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dis_record_screen.imageset/Subtracticon_dis_record_screen-1.png -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo.xcworkspace/xcuserdata/bytedance.xcuserdatad/IDEFindNavigatorScopes.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcworkspace/xcuserdata/bytedance.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcworkspace/xcuserdata/bytedance.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaListController/VEShortDramaListViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortDramaListViewController.h 3 | // VOLCDemo 4 | // 5 | 6 | #import "VEViewController.h" 7 | 8 | @interface VEShortDramaListViewController : VEViewController 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/VELongVideoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by RealZhao on 2021/12/23. 6 | // 7 | 8 | #import "VEViewController.h" 9 | 10 | @interface VELongVideoViewController : VEViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ControlView/VEPlayerControlView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerControlView.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | 11 | @interface VEPlayerControlView : UIView 12 | 13 | 14 | @end 15 | 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/Utils/UIColor+Hex.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Hex.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/11. 6 | // 7 | 8 | #import 9 | 10 | @interface UIColor (Hex) 11 | 12 | + (UIColor *)colorWithHexString:(NSString *)hexString; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcodeproj/project.xcworkspace/xcuserdata/bytedance.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volcengine/VEVodDemo-iOS/HEAD/VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcodeproj/project.xcworkspace/xcuserdata/bytedance.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/UIComponents/BaseController/VEViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2021/5/21. 6 | // Copyright © 2021 ByteDance. All rights reserved. 7 | // 8 | 9 | @interface VEViewController : UIViewController 10 | 11 | - (void)close; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAd.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import 9 | 10 | @interface ExampleAdManager : NSObject 11 | 12 | - (instancetype)initWithConfig:(NSDictionary*)config; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaPlayButtonModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPlayButtonModule.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayerBaseModule.h" 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @interface ShortDramaPlayButtonModule : VEPlayerBaseModule 11 | 12 | @end 13 | 14 | NS_ASSUME_NONNULL_END 15 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortVideo/PlayerModules/ShortVideoPlayButtonModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortVideoPlayButtonModule.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayerBaseModule.h" 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @interface ShortVideoPlayButtonModule : VEPlayerBaseModule 11 | 12 | @end 13 | 14 | NS_ASSUME_NONNULL_END 15 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+VEPlayCoreAbility.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+VEPlayCoreAbility.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/1/11. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | 10 | @interface VEVideoPlayerController (VEPlayCoreAbility) 11 | 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/VESettingViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VEViewController.h" 10 | 11 | @interface VESettingViewController : VEViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaRecommod/VEShortDramaVideoFeedViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortDramaVideoFeedViewController.h 3 | // VOLCDemo 4 | // 5 | 6 | #import "VEViewController.h" 7 | 8 | @class VEVideoModel; 9 | 10 | @interface VEShortDramaVideoFeedViewController : VEViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Categorys/UIView+BDShowView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+BDShowView.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/15. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface UIView (BDShowView) 13 | 14 | - (void)showView:(BOOL)show; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/State/VEPlayFinishStatus.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayFinishStatus.m 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayFinishStatus.h" 7 | 8 | @implementation VEPlayFinishStatus 9 | 10 | - (BOOL)playerFinishedSuccess { 11 | if (!self.error) { 12 | return YES; 13 | } 14 | return NO; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerLockModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerLockModule.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/21. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerLockModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerSpeedModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSpeedModule.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/21. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerSpeedModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/29. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface VESettingCell : UITableViewCell 12 | 13 | @property (nonatomic, assign) BOOL showTopLine; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Context/VEPlayerContextDI.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerContextDI.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerContextDIInterface.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @interface VEPlayerContextDI : NSObject 12 | 13 | @end 14 | 15 | NS_ASSUME_NONNULL_END 16 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerVisibleModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerVisibleModule.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/14. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerVisibleModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerResolutionModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerResolutionModule.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/20. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerResolutionModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Utility/BTDWeakProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // BTDWeakProxy.h 3 | // Pods 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @interface BTDWeakProxy : NSProxy 11 | 12 | @property (nonatomic, weak, readonly, nullable) id target; 13 | 14 | + (instancetype)proxyWithTarget:(id)target; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/PlayerModules/VELongVideoPlayButtonModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoPlayButtonModule.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/15. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELongVideoPlayButtonModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaListController/VEShortDramaVideoViewNormalCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortDramaVideoViewNormalCell.h 3 | // VOLCDemo 4 | // 5 | 6 | @import UIKit; 7 | 8 | @class VEDramaInfoModel; 9 | 10 | @interface VEShortDramaVideoViewNormalCell : UICollectionViewCell 11 | 12 | @property (nonatomic, strong) VEDramaInfoModel *dramaInfoModel; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerSeekModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSeekModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/8. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayerSeekModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/PlayerModules/ExampleAdPlayButtonModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdPlayButtonModule.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface ExampleAdPlayButtonModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/Protocol/VEAdActionResponderDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEAdActionResponderDelegate.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/8. 6 | // 7 | 8 | #import 9 | 10 | @protocol VEAdActionResponderDelegate 11 | 12 | - (void)adDidDisplay:(NSString*)adId; 13 | 14 | - (void)adPlayFinished:(NSString*)adId; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/CustomPlayVideo/VEVideoUrlParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoUrlParser.h 3 | // VideoPlaybackEdit 4 | // 5 | // Created by bytedance on 2023/11/2. 6 | // 7 | 8 | #import 9 | #import "VEVideoModel.h" 10 | 11 | 12 | @interface VEVideoUrlParser : NSObject 13 | 14 | + (NSArray *)parseUrl:(NSString *)urlString; 15 | 16 | @end 17 | 18 | 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/PlayerModules/VELongVideoOtherFunctionsModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoOtherFunctionsModule.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/15. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELongVideoOtherFunctionsModule : VEPlayerBaseModule 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaPayModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPayModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/24. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ShortDramaPayModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/PlayerModules/ExampleAdLabelModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdLabelModule.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/11. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ExampleAdLabelModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/LongVideoUIView/VELongVideoIntroduceView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoIntroduceView.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/14. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELongVideoIntroduceView : UIView 13 | 14 | - (void)updateTitle:(NSString *)title; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2021/5/21. 6 | // 7 | 8 | @interface AppDelegate : UIResponder 9 | 10 | @property (nonatomic, strong) UIWindow *window; 11 | 12 | @property (nonatomic, assign) BOOL shouldRotation;//是否允许横屏,默认为NO 13 | 14 | - (void)updateShouldRotation:(NSNumber *)shouldRotation; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEPlayerViewLifeCycleProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerViewLifeCycleProtocol.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @protocol VEPlayerViewLifeCycleProtocol 11 | 12 | - (void)viewDidLoad; 13 | 14 | - (void)controlViewTemplateDidUpdate; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+Tips.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+Tips.h 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/12/8. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEVideoPlayerController (ShowTips) 13 | 14 | - (void)showTips:(NSString *)message; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/PlayerModules/ExampleAdDetailModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdDetailModule.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/11. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ExampleAdDetailModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/VEVodPlayerAPIExample-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // Use this file to import your target's public headers that you would like to expose to Swift. 5 | // 6 | 7 | #import "VEAPIVideoModel.h" 8 | #import "VEAPITools.h" 9 | #import "VEAPIButton.h" 10 | #import "VEAPIMediaSource.h" 11 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerSeekProgressModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSeekProgressModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/8. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayerSeekProgressModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/CustomPlayVideo/VEPlayUrlConfigViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayUrlConfigViewController.h 3 | // VideoPlaybackEdit 4 | // 5 | // Created by bytedance on 2023/11/1. 6 | // 7 | 8 | #import 9 | #import "VEViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayUrlConfigViewController : VEViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/PlayerModules/VELongVideoIntroduceModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoIntroduceModule.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/14. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VELongVideoIntroduceModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaIntroduceModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaIntroduceModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/15. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ShortDramaIntroduceModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaPlayerMaskModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPlayerMaskModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/8. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ShortDramaPlayerMaskModule : VEPlayerBaseModule 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/PlayerModules/VELongVideoSeekModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoSeekModule.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/15. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELongVideoSeekModule : VEPlayerBaseModule 13 | 14 | - (instancetype)initForCell:(BOOL)isForCell; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaPraise/ShortDramaPraiseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPraiseViewController.h 3 | // JSONModel 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | #define ShortDramaPraiseViewControllerWdithHeight 56 11 | 12 | @interface ShortDramaPraiseViewController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerUI/VEPlayerSpeedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSpeedView.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/21. 6 | // 7 | 8 | #import 9 | #import "VEPlayerContext.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayerSpeedView : UIView 14 | 15 | @property (nonatomic, weak) VEPlayerContext *context; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/Cell/VELongVideoViewTopCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoViewTopCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/18. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | @class VEVideoModel; 11 | 12 | @interface VELongVideoViewTopCell : UICollectionViewCell 13 | 14 | @property (nonatomic, strong) VEVideoModel *videoModel; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaCollect/ShortDramaCollectViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaCollectViewController.h 3 | // JSONModel 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | #define ShortDramaCollectViewControllerWdithHeight 56 11 | 12 | @interface ShortDramaCollectViewController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEPlayerKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerKitHeader.h 3 | // Pods 4 | // 5 | // Created by real on 2022/9/1. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | #import "VEVideoPlayerController+DebugTool.h" 10 | #import "VEVideoPlayerController+Observer.h" 11 | #import "VEVideoPlayerController+Resolution.h" 12 | #import "VEVideoPlayerController+Strategy.h" 13 | #import "VEVideoPlayerController+Tips.h" 14 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/Cell/VELongVideoViewNormalCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoViewNormalCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/18. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | @class VEVideoModel; 11 | 12 | @interface VELongVideoViewNormalCell : UICollectionViewCell 13 | 14 | @property (nonatomic, strong) VEVideoModel *videoModel; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaPlayerSpeedModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPlayerSpeedModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/16. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ShortDramaPlayerSpeedModule : VEPlayerBaseModule 14 | 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaPlayerToastModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPlayerToastModule.h 3 | // VESceneModule 4 | // 5 | // Created by zyw on 2024/8/7. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ShortDramaPlayerToastModule : VEPlayerBaseModule 14 | 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerFullScreenModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerFullScreenModule.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/20. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerFullScreenModule : VEPlayerBaseModule 13 | 14 | - (instancetype)initWithCurVC:(UIViewController *)vc; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Categorys/UIColor+RGB.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+RGB.m 3 | // VEPlayModule 4 | // 5 | 6 | #import "UIColor+RGB.h" 7 | 8 | @implementation UIColor (RGB) 9 | 10 | + (instancetype)colorWithRGB:(int)rgbValue alpha:(float)alpha { 11 | return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:alpha]; 12 | } 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/Data/Model/VEAdInfoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEAdsInfoModel.m 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import "VEAdInfoModel.h" 9 | 10 | @implementation VEAdInfoModel 11 | 12 | - (instancetype)initByUniqueId:(NSString* _Nonnull)uniqueId { 13 | self = [super init]; 14 | if (self) { 15 | _uniqueId = uniqueId; 16 | } 17 | return self; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // AppDelegate.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdContextKeyDefine.m: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdContextKeyDefine.m 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/12. 6 | // 7 | 8 | #import "ExampleAdContextKeyDefine.h" 9 | 10 | #pragma mark - Ad 11 | NSString * const ExampleAdContextKeyDataModelChanged = @"ExampleAdContextKeyDataModelChanged"; 12 | NSString * const ExampleAdContextKeyActionTriggered = @"ExampleAdContextKeyActionTriggered"; 13 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/FeedVideo/VEFeedVideoPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEFeedVideoPlayerModuleLoader.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/21. 6 | // 7 | 8 | #import "VEPlayerBaseModuleLoader.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEFeedVideoPlayerModuleLoader : VEPlayerBaseModuleLoader 13 | 14 | @property (nonatomic, weak) UIViewController *curVC; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/VELongVideoPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoPlayerModuleLoader.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/13. 6 | // 7 | 8 | #import "VEPlayerBaseModuleLoader.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELongVideoPlayerModuleLoader : VEPlayerBaseModuleLoader 13 | 14 | @property (nonatomic, weak) UIViewController *curVC; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaRecommodIntroduceModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaRecommodIntroduceModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/16. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ShortDramaRecommodIntroduceModule : VEPlayerBaseModule 14 | 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/RootViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // RootViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface RootViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/VELongVideoDetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoDetailViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @class VEVideoModel; 10 | #import "VEViewController.h" 11 | 12 | @interface VELongVideoDetailViewController : VEViewController 13 | 14 | @property (nonatomic, strong) VEVideoModel *videoModel; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Categorys/UIView+BDShowView.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+BDShowView.m 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/15. 6 | // 7 | 8 | #import "UIView+BDShowView.h" 9 | 10 | @implementation UIView (BDShowView) 11 | 12 | - (void)showView:(BOOL)show { 13 | [UIView animateWithDuration:.3f animations:^{ 14 | self.alpha = show ? 1 : 0; 15 | } completion:^(BOOL finished) { 16 | 17 | }]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerSubtitleModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSubtitleModule.h 3 | // VEPlayModule 4 | // 5 | // Created by litao.he on 2025/3/10. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayerSubtitleModule : VEPlayerBaseModule 14 | 15 | - (void)setSubtitle:(NSString *)subtitle; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdContextKeyDefine.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdContextKeyDefine.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/12. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | #pragma mark - Ad 13 | 14 | extern NSString * const ExampleAdContextKeyDataModelChanged; 15 | extern NSString * const ExampleAdContextKeyActionTriggered; 16 | 17 | NS_ASSUME_NONNULL_END 18 | 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/FeedVideo/VEFeedVideoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEFeedVideoViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/21. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VEViewController.h" 10 | 11 | @class VEVideoModel; 12 | 13 | @interface VEFeedVideoViewController : VEViewController 14 | 15 | - (instancetype)initWtihVideoSources:(NSArray *)videoModels; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/VELongVideoViewLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoViewLayout.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/18. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface VELongVideoViewLayout : UICollectionViewLayout 12 | 13 | @end 14 | 15 | @interface VELongVideoHeaderView : UICollectionReusableView 16 | 17 | @property (nonatomic, strong) NSString *title; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaUIView/ShortDramaIntroduceView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaIntroduceView.h 3 | // JSONModel 4 | // 5 | 6 | #import 7 | 8 | @class VEDramaVideoInfoModel; 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | #define ShortDramaIntroduceViewHeight 70 13 | 14 | @interface ShortDramaIntroduceView : UIView 15 | 16 | - (void)reloadData:(VEDramaVideoInfoModel *)dramaVideoInfo; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortVideo/VEShortVideoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortVideoViewController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VEViewController.h" 10 | 11 | @class VEVideoModel; 12 | 13 | @interface VEShortVideoViewController : VEViewController 14 | 15 | - (instancetype)initWtihVideoSources:(NSArray *)videoModels; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_user.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "fake_user.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdAction.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/12. 6 | // 7 | 8 | #import 9 | 10 | @interface ExampleAdAction : NSObject 11 | 12 | @property (nonatomic, strong) NSString* action; 13 | @property (nonatomic, strong) NSDictionary* params; 14 | 15 | - (instancetype) initWithAction:(NSString*)action andParams:(NSDictionary*)params; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerBackModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerBackModule.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/17. 6 | // 7 | 8 | #import "VEPlayerBaseModule.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerBackModule : VEPlayerBaseModule 13 | 14 | - (instancetype)initWithCurVC:(UIViewController *)vc; 15 | 16 | @property (nonatomic, weak) UIViewController *curVC; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerPipModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerPipModule.h 3 | // VEPlayModule 4 | // 5 | // Created by litao.he on 2025/3/17. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayerPipModule : VEPlayerBaseModule 14 | 15 | - (instancetype)initWithLeftOffset:(NSInteger)left TopOffset:(NSInteger)top; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/Data/Model/VEAdInfoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEAdsInfoModel.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEAdInfoModel : NSObject 13 | 14 | @property (nonatomic, strong, nonnull, readonly) NSString* uniqueId; 15 | 16 | - (instancetype)initByUniqueId:(NSString* _Nonnull)uniqueId; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingDisplayCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingDisplayCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @class VESettingModel; 10 | #import "VESettingCell.h" 11 | 12 | extern NSString *VESettingDisplayCellReuseID; 13 | 14 | @interface VESettingDisplayCell : VESettingCell 15 | 16 | @property (nonatomic, strong) VESettingModel *settingModel; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortVideo/VEShortVideoPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortVideoPlayerModuleLoader.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/29. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModuleLoader.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEShortVideoPlayerModuleLoader : VEPlayerBaseModuleLoader 14 | 15 | - (void)setSubtitle:(NSString *)subtitle; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/QuickStart/VidSourceOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // VidSourceOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface VidSourceOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Config/VEVideoPlayerConfigurationFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerConfigurationFactory.h 3 | // VOLCDemo 4 | // 5 | // Created by litao.he on 2025/3/7. 6 | // 7 | 8 | #import 9 | #import "VEVideoPlayerConfiguration.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEVideoPlayerConfigurationFactory : NSObject 14 | 15 | + (VEVideoPlayerConfiguration *)getConfiguration; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | 21 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/AdvancedFeatures/DebugToolOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // DebugToolOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/6/4. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface DebugToolOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/BestPractice/ShortVideoOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // ShortVideoOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/6/19. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface ShortVideoOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/Utils/VEAPIButton.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // VEAPIButton.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface VEAPIButton : UIButton 15 | 16 | - (instancetype)initWithTitle:(NSString *)title; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdPlayerModuleLoader.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModuleLoader.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ExampleAdPlayerModuleLoader : VEPlayerBaseModuleLoader 14 | 15 | - (instancetype)initWithSceneType:(NSInteger)sceneType; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingSwitcherCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingSwitcherCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | 10 | @class VESettingModel; 11 | #import "VESettingCell.h" 12 | 13 | extern NSString *VESettingSwitcherCellReuseID; 14 | 15 | @interface VESettingSwitcherCell : VESettingCell 16 | 17 | @property (nonatomic, strong) VESettingModel *settingModel; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/BasicFeatures/DisplayModeOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // DisplayModeOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/28. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface DisplayModeOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "back@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "back@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/AdvancedFeatures/VidSubtitleOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // VidSubtitleOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/29. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface VidSubtitleOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/BasicFeatures/BasicPlaybackOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // BasicPlaybackOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface BasicPlaybackOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+Observer.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+Observer.h 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/12/5. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEVideoPlayerController (Observer) 13 | 14 | @property (nonatomic, assign) BOOL needResumePlay; 15 | 16 | - (void)addObserver; 17 | 18 | - (void)removeObserver; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/QuickStart/DirectUrlSourceOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // DirectUrlSourceOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface DirectUrlSourceOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/VEAdOperator.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEAdsProvider.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/6. 6 | // 7 | 8 | #import 9 | #import "VEPageViewController.h" 10 | 11 | @protocol VEAdManagerDelegate; 12 | 13 | @interface VEAdOperator : NSObject 14 | 15 | - (NSInteger)insertAdsItems:(NSMutableArray *)mediaModels fromIndex:(NSInteger)startIndex; 16 | 17 | @property (nonatomic, weak) id delegate; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/FeedVideo/VEFeedVideoCellPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEFeedVideoCellPlayerModuleLoader.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/22. 6 | // 7 | 8 | #import "VEPlayerBaseModuleLoader.h" 9 | #import "VEPlayerBackModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEFeedVideoCellPlayerModuleLoader : VEPlayerBaseModuleLoader 14 | 15 | @property (nonatomic, strong) VEPlayerBackModule *backModule; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingDisplayDetailCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingDisplayDetailCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @class VESettingModel; 10 | #import "VESettingCell.h" 11 | 12 | extern NSString *VESettingDisplayDetailCellReuseID; 13 | 14 | @interface VESettingDisplayDetailCell : VESettingCell 15 | 16 | @property (nonatomic, strong) VESettingModel *settingModel; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerUI/VEPlayerSeekProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSeekProgressView.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @protocol VEPlayerSeekProgressViewProtocol 11 | 12 | - (void)updateProgress:(NSInteger)playbackTime duration:(NSInteger)duration; 13 | 14 | @end 15 | 16 | @interface VEPlayerSeekProgressView : UIView 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_like.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "feed_like@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "feed_like@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "feed_play@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "feed_play@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_star.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "feed_star@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "feed_star@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_feed@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_feed@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_long.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_long@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_long@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/AdvancedFeatures/DirectUrlSubtitleOCViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // DirectUrlSubtitleOCViewController.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/29. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface DirectUrlSubtitleOCViewController : UIViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEDelegateMultiplexer.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEDelegateMultiplexer.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @interface VEDelegateMultiplexer : NSObject 11 | 12 | - (instancetype)initWithProtocol:(Protocol *)protocol NS_DESIGNATED_INITIALIZER; 13 | 14 | - (void)addDelegate:(id)delegate; 15 | - (void)removeDelegate:(id)delegate; 16 | - (void)removeAllDelegates; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "close_circle@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "close_circle@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_feed_holder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "fake_img@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "fake_img@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "7.27圆点icon_dot.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "7.27圆点icon_dot-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_short.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_short@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_short@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "循环播放-off 1.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "循环播放-off.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_loopplay_sel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "循环播放-on.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "循环播放-on 1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_pause.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "video_pause@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "video_pause@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "video_play@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "video_play@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample.xcodeproj/xcuserdata/bytedance.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | VEVodPlayerAPIExample.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 8 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/State/VEPlayFinishStatus.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayFinishStatus.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEVideoPlaybackDefine.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | 12 | @interface VEPlayFinishStatus : NSObject 13 | 14 | @property (nonatomic, assign) VEVideoPlayFinishStatusType finishState; 15 | @property (nonatomic, strong) NSError * _Nullable error; 16 | 17 | - (BOOL)playerFinishedSuccess; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingTypeMutilSelectorCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingTypeMutilSelectorCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @class VESettingModel; 10 | #import "VESettingCell.h" 11 | 12 | extern NSString *VESettingTypeMutilSelectorCellReuseID; 13 | 14 | @interface VESettingTypeMutilSelectorCell : VESettingCell 15 | 16 | @property (nonatomic, strong) VESettingModel *settingModel; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/VEShortDramaPagingViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MXMyProgramViewController.h 3 | // VOLCDemo 4 | // 5 | 6 | #import "VESelectionViewController.h" 7 | 8 | typedef NS_ENUM(NSUInteger, VEShortDramaType) { 9 | VEShortDramaTypeDrama = 0, 10 | VEShortDramaTypeRecommend, 11 | 12 | VEShortDramaTypeCount 13 | }; 14 | 15 | @interface VEShortDramaPagingViewController : VESelectionViewController 16 | 17 | - (instancetype)initWithDefaultType:(VEShortDramaType)type; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/feed_comment.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "feed_comment@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "feed_comment@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_setting.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_setting@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_setting@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_0.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_speed_1@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_speed_1@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_speed_1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_speed_2@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_speed_2@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2021/5/21. 6 | // 7 | 8 | @import UIKit; 9 | #import "AppDelegate.h" 10 | 11 | int main(int argc, char * argv[]) { 12 | NSString * appDelegateClassName; 13 | @autoreleasepool { 14 | // Setup code that might create autoreleased objects goes here. 15 | appDelegateClassName = NSStringFromClass([AppDelegate class]); 16 | } 17 | return UIApplicationMain(argc, argv, nil, appDelegateClassName); 18 | } 19 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dot_big.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "当前锚点icon_dot_big.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "当前锚点icon_dot_big-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_money.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Frameicon_money@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Frameicon_money@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_sr@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_sr@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_drama_play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "播放icon_play_big.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "播放icon_play_big-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Utility/VELRUCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELRUCache.h 3 | // VEBaseKit 4 | // 5 | // Created by zyw on 2024/10/10. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELRUCache : NSObject 13 | 14 | // default capacity 200 15 | + (VELRUCache *)shareInstance; 16 | 17 | - (instancetype)initWithCapacity:(NSUInteger)capacity; 18 | 19 | - (id)getValueForKey:(id)key; 20 | 21 | - (void)setValue:(id)value forKey:(id)key; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "_RoundBtnicon_close.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "_RoundBtnicon_close-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_短剧首页icon_drama.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_短剧首页icon_drama-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_nor.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_praise_nor@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_praise_nor@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_praise_sel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_praise_sel@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_praise_sel@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_shot_drama.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_shot_drama@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_shot_drama@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_lock.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_lock@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_lock@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_more.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_more@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_more@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_speed.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_speed@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_speed@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/main_arrow_right.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "main_arrow_right@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "main_arrow_right@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_page_back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "video_page_back@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "video_page_back@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_play_sign.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Fill 1icon_play_sign.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Fill 1icon_play_sign-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_sr_sel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_sr_sel@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_sr_sel@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_unlock.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_unlock@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_unlock@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+Resolution.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+Resolution.h 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/12/5. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEVideoPlayerController (Resolution) 13 | 14 | + (TTVideoEngineResolutionType)getPlayerCurrentResolution; 15 | 16 | + (void)setPlayerCurrentResolution:(TTVideoEngineResolutionType)defaultResolution; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaUIView/ShortDramaSpeedTipView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSpeedTipView.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/16. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | #define ShortDramaSpeedTipViewViewWidth 120 13 | #define ShortDramaSpeedTipViewViewHeight 40 14 | 15 | @interface ShortDramaSpeedTipView : UIView 16 | 17 | - (void)showSpeedView:(NSString *)tip; 18 | 19 | - (void)hiddenSpeedView; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_sel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "collecticon_collect_sel.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "collecticon_collect_sel-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_portrait.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_portrait@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_portrait@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/video_slide_dragbar.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "video_slide_dragbar@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "video_slide_dragbar@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModule/VEPlayerLoadingModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerLoadingModule.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayerBaseModule.h" 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @protocol VEPlayerLoadingViewProtocol; 11 | 12 | @interface VEPlayerLoadingModule : VEPlayerBaseModule 13 | 14 | @property (nonatomic, strong, readonly, nullable) UIView *loadingView; 15 | 16 | - (UIView *)createLoadingView; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Data/DataManager/VESettingManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingManager.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import Foundation; 10 | #import "VESettingModel.h" 11 | 12 | @interface VESettingManager : NSObject 13 | 14 | + (VESettingManager *)universalManager; 15 | // 分区 16 | - (NSArray *)settingSections; 17 | // 分区/设置 18 | - (NSDictionary *)settings; 19 | 20 | - (VESettingModel *)settingForKey:(VESettingKey)key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaSelection/ShortDramaSelectionCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSelectionCell.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @class VEDramaVideoInfoModel; 11 | 12 | @interface ShortDramaSelectionCell : UICollectionViewCell 13 | 14 | @property (nonatomic, strong) VEDramaVideoInfoModel *dramaVideoInfo; 15 | @property (nonatomic, strong) VEDramaVideoInfoModel *curPlayDramaVideoInfo; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_top_holder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "fake_long_top_holder@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "fake_long_top_holder@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_list_cover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_drama_list_cover.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_drama_list_cover-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_selec.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Group 356icon_drama_selec.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Group 356icon_drama_selec-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_home_background.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon_home_background@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon_home_background@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/long_video_resolution.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "long_video_resolution@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "long_video_resolution@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_image.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ad_image.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "ad_image@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "ad_image@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_collect_nor.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "icon collecticon_collect_nor.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "icon collecticon_collect_nor-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_drama_lock.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Group 2036084238icon_lock@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Group 2036084238icon_lock@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_up_arrow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "ic_arrow_packupicon_up_arrow.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "ic_arrow_packupicon_up_arrow-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/Utils/VEAPITools.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // VEAPITools.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/28. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface VEAPITools : NSObject 15 | 16 | + (nullable NSString *)convertSecondsToStr:(CGFloat)seconds; 17 | + (NSString *)md5With:(NSString *)ori; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ActionViewInterface/VEPlayerViewService.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerViewService.h 3 | // VEPlayerKit 4 | // 5 | 6 | 7 | #import 8 | #import "VEPlayerActionViewInterface.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class VEPlayerModuleManager; 13 | 14 | @interface VEPlayerViewService : NSObject 15 | 16 | // weak reference module manager 17 | @property (nonatomic, weak, nullable) VEPlayerModuleManager *moduleManager; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/fake_long_normal_holder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "fake_long_normal_holder@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "fake_long_normal_holder@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_feed_cover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Mask Bottomicon_feed_backgroud.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Mask Bottomicon_feed_backgroud-1.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_palying_drama.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Frame 2037234945icon_cur_play-1.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Frame 2037234945icon_cur_play.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/Model/VEDramaPayInfoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaPayInfoModel.m 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/23. 6 | // 7 | 8 | #import "VEDramaPayInfoModel.h" 9 | 10 | @implementation VEDramaPayInfoModel 11 | 12 | - (instancetype)init { 13 | self = [super init]; 14 | if (self) { 15 | _payStatus = VEDramaPayStatus_Paid; 16 | _price = 990; 17 | } 18 | return self; 19 | } 20 | 21 | - (BOOL)isPaid { 22 | return _payStatus == VEDramaPayStatus_Paid; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/icon_dis_record_screen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Subtracticon_dis_record_screen-1.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "Subtracticon_dis_record_screen.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingCell.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/29. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VESettingCell.h" 10 | 11 | @implementation VESettingCell 12 | 13 | - (void)setShowTopLine:(BOOL)showTopLine { 14 | _showTopLine = showTopLine; 15 | UIView *topLine = [self valueForKeyPath:@"topSepLine"]; 16 | if ([topLine isKindOfClass:[UIView class]]) { 17 | topLine.hidden = !showTopLine; 18 | } 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdAction.m: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdAction.m 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/12. 6 | // 7 | 8 | #import "ExampleAdAction.h" 9 | 10 | @interface ExampleAdAction() 11 | 12 | @end 13 | 14 | @implementation ExampleAdAction 15 | 16 | - (instancetype) initWithAction:(NSString*)action andParams:(NSDictionary*)params { 17 | self = [super init]; 18 | if (self) { 19 | self.action = action; 20 | self.params = [params copy]; 21 | } 22 | return self; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/Model/VEDramaEpisodeInfoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaEpisodeInfoModel.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | #import "VEDramaInfoModel.h" 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEDramaEpisodeInfoModel : JSONModel 13 | 14 | @property (nonatomic, assign) NSInteger episodeNumber; 15 | @property (nonatomic, copy) NSString *episodeDesc; 16 | @property (nonatomic, strong) VEDramaInfoModel *dramaInfo; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaRecordStartTimeModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaRecordStartTimeModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/15. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | extern NSString * const VEPlayerContextKeyDramaSceneWillSwitch; 14 | extern NSString * const VEPlayerContextKeyDramaWillPlay; 15 | 16 | @interface ShortDramaRecordStartTimeModule : VEPlayerBaseModule 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/Resources/Assets.xcassets/ad_detail_tag.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ad_detail_tag.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "ad_detail_tag@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "ad_detail_tag@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/LongVideoUIView/VELongVideoOtherFunctionsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoOtherFunctionsView.h 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/15. 6 | // 7 | 8 | #import 9 | #import "VEPlayerContext.h" 10 | #import "VEVideoPlayback.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface VELongVideoOtherFunctionsView : UIView 15 | 16 | @property (nonatomic, weak) VEPlayerContext *context; 17 | 18 | @property (nonatomic, weak) id playerInterface; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/UIComponents/SectionUIKit/VEScrollViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEScrollViewController.h 3 | // VOLCDemo 4 | // 5 | 6 | #import 7 | 8 | @protocol VEScrollViewDelegate 9 | 10 | - (void)scrollViewDidEndScrolling:(UIScrollView * _Nonnull)scrollView; 11 | 12 | @end 13 | 14 | @interface VEScrollViewController : UIViewController 15 | 16 | @property (nonatomic, readonly, strong, nonnull) UIScrollView *scrollView; 17 | 18 | - (Class _Nullable)scrollViewClass; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/InitSDKExample.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // InitSDKExample.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/29. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface InitSDKExample : NSObject 15 | 16 | + (void)initSDKWithAppID:(NSString *)appID LicenseName:(NSString *)licenseName; 17 | + (void)clearUniqueID; 18 | + (NSString *)getDeviceID; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerUI/Subtitle/VEPlayerSubtitleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSubtitleView.h 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @protocol VEPlayerSubtitleViewProtocol 10 | 11 | @end 12 | 13 | @interface VEPlayerSubtitleView : UIView 14 | 15 | @property (nonatomic, assign) CGFloat fontSize; 16 | @property (nonatomic, copy) UIColor *textColor; 17 | @property (nonatomic, copy) UIColor *strokeColor; 18 | 19 | - (void)setSubtitle:(NSString *)subtitle; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEPlayerBaseModuleProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerBaseModuleProtocol.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerViewLifeCycleProtocol.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @class VEPlayerContext; 12 | 13 | @protocol VEPlayerBaseModuleProtocol 14 | 15 | @property (nonatomic, weak) VEPlayerContext *context; 16 | 17 | @property (nonatomic, strong) id data; 18 | 19 | - (void)moduleDidLoad; 20 | 21 | - (void)moduleDidUnLoad; 22 | 23 | @end 24 | 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/GestureService/VEPlayerGestureService.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerGestureService.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerGestureServiceInterface.h" 8 | #import "VEPlayerInteractionDefine.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /** 13 | * @locale zh 14 | * @type api 15 | * @brief 手势管理 service,请参考VEPlayerContext的DI接口获取该服务 16 | */ 17 | @interface VEPlayerGestureService : NSObject 18 | 19 | @property (nonatomic, strong) UIView *gestureView; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+DisRecordScreen.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+DisRecordScreen.h 3 | // VEPlayerKit 4 | // 5 | // Created by zyw on 2024/4/18. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEVideoPlayerController (DIsRecordScreen) 13 | 14 | @property (nonatomic, strong, nullable) UIView *disRecondScreenView; 15 | 16 | - (void)registerScreenCapturedDidChangeNotification; 17 | 18 | - (void)showRecordScreenView; 19 | 20 | - (void)removeecordScreenView; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaSeriesModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSeriesModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/16. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol ShortDramaSeriesModuleDelegate 14 | 15 | - (void)onClickSeriesViewCallback; 16 | 17 | @end 18 | 19 | @interface ShortDramaSeriesModule : VEPlayerBaseModule 20 | 21 | @property (nonatomic, weak) id delegate; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+Tips.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+Tips.m 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/12/8. 6 | // 7 | 8 | #import "VEVideoPlayerController+Tips.h" 9 | #import 10 | 11 | @implementation VEVideoPlayerController (ShowTips) 12 | 13 | - (void)showTips:(NSString *)message { 14 | MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.playerView animated:YES]; 15 | hud.mode = MBProgressHUDModeText; 16 | hud.label.text = message; 17 | [hud hideAnimated:YES afterDelay:2.0]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdProvider.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/12. 6 | // 7 | 8 | #import 9 | #import "VEVideoModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ExampleAdProvider : NSObject 14 | 15 | + (instancetype)sharedInstance; 16 | 17 | - (void)loadAdModels; 18 | 19 | - (NSMutableArray *)getAdModels; 20 | 21 | - (void)getAdModels:(BOOL)isLoadMore completion:(void (^)(NSMutableArray *))completion; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerUI/VEPlayerResolutionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerResolutionView.h 3 | // VEPlayerKit 4 | // 5 | // Created by zys on 2025/10/21. 6 | // 7 | 8 | #import 9 | #import "VEPlayerContext.h" 10 | #import "VEVideoPlayback.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface VEPlayerResolutionView : UIView 15 | 16 | @property (nonatomic, weak) VEPlayerContext *context; 17 | 18 | - (instancetype)initWithResolutionSet:(NSArray *> *)resolutionSet CurResolution:(NSString *)curResolution; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/VEBaseKit.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "VEBaseKit" 3 | s.version = "1.0.0" 4 | s.summary = "火山引擎点播基础组件" 5 | s.description = "火山引擎点播基础" 6 | s.homepage = "https://www.volcengine.com" 7 | s.license = 'MIT' 8 | s.author = { "wangzhiyong" => "wangzhiyong.7717@bytedance.com" } 9 | s.source = { :path => './Classes' } 10 | 11 | s.platform = :ios, '11.0' 12 | s.requires_arc = true 13 | 14 | s.source_files = 'Classes/**/*' 15 | s.public_header_files = 'Classes/**/*.{h}' 16 | 17 | s.dependency 'Masonry' 18 | s.dependency 'Reachability' 19 | 20 | s.static_framework = true 21 | end 22 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/PlayerModules/ShortDramaSelectionModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSelectionModule.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/15. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModule.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol ShortDramaSelectionModuleDelegate 14 | 15 | - (void)onClickDramaSelectionCallback; 16 | 17 | @end 18 | 19 | @interface ShortDramaSelectionModule : VEPlayerBaseModule 20 | 21 | @property (nonatomic, weak) id delegate; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo/Base/VOLCDemoPrefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // VOLCDemoPrefix.pch 3 | // VOLCDemo 4 | // 5 | // Created by real on 2021/5/21. 6 | // 7 | 8 | #ifndef VOLCDemoPrefix_pch 9 | #define VOLCDemoPrefix_pch 10 | 11 | // Include any system framework and library headers here that should be included in all compilation units. 12 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 13 | 14 | @import UIKit; 15 | @import CoreFoundation; 16 | @import Foundation; 17 | @import CoreMedia; 18 | @import AVFoundation; 19 | @import AVKit; 20 | 21 | #endif /* VOLCDemoPrefix_pch */ 22 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEPlayerBaseModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerBaseModule.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerBaseModuleProtocol.h" 8 | #import "VEPlayerContext.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerBaseModule : NSObject 13 | 14 | @property (nonatomic, weak) VEPlayerContext *context; 15 | 16 | @property (nonatomic, strong) id data; 17 | 18 | @property (nonatomic, assign, readonly) BOOL isLoaded; 19 | 20 | @property (nonatomic, assign, readonly) BOOL isViewLoaded; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/UIComponents/BaseController/VEViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEViewController.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2021/5/21. 6 | // Copyright © 2021 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VEViewController.h" 10 | 11 | @implementation VEViewController 12 | 13 | - (void)viewDidLoad { 14 | [super viewDidLoad]; 15 | } 16 | 17 | - (void)viewWillAppear:(BOOL)animated { 18 | [super viewWillAppear:animated]; 19 | [self.navigationController setNavigationBarHidden:YES]; 20 | } 21 | 22 | - (void)close { 23 | [self.navigationController popViewControllerAnimated:YES]; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+DebugTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+DebugTool.h 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/12/6. 6 | // 7 | 8 | #import "VEVideoPlayerController.h" 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEVideoPlayerController (DebugTool) 14 | 15 | @property (nonatomic, strong) TTVideoEngineDebugTools *videoEngineDebugTool; // debug tool 16 | 17 | - (void)showDebugViewInView:(UIView *)hudView; 18 | 19 | - (void)removeDebugTool; 20 | 21 | + (NSString *)deviceID; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/MediaModel/VEMediaCellFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEMediaCellFactory.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/15. 6 | // 7 | 8 | #import 9 | #import "VEPageViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEMediaCellFactory : NSObject 14 | 15 | + (UIViewController *)createCellViewControllerByMediaModel:(id)mediaModel pageViewController:(VEPageViewController*)pageViewController cellDelegate:(id)cellDelegate adDelegate:(id)adDelegate adRespDelegate:(id)adRespDelegate andSceneType:(NSInteger)sceneType; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaUIView/ShortDramaSeriesView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSeriesView.h 3 | // JSONModel 4 | // 5 | 6 | #import 7 | 8 | @class VEDramaVideoInfoModel; 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | #define ShortDramaSeriesViewHeight 48 13 | 14 | @protocol ShortDramaSeriesViewDelegate 15 | 16 | - (void)onClickSeriesViewCallback; 17 | 18 | @end 19 | 20 | @interface ShortDramaSeriesView : UIView 21 | 22 | @property (nonatomic, weak) id delegate; 23 | 24 | - (void)reloadData:(VEDramaVideoInfoModel *)dramaVideoInfo; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEPlayerModuleManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerModuleManager.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerViewLifeCycleProtocol.h" 8 | #import "VEPlayerModuleManagerInterface.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class VEPlayerContext; 13 | 14 | @interface VEPlayerModuleManager : NSObject< 15 | VEPlayerViewLifeCycleProtocol, 16 | VEPlayerModuleManagerInterface 17 | > 18 | 19 | - (instancetype)init NS_UNAVAILABLE; 20 | - (instancetype)initWithPlayerContext:(VEPlayerContext *)playerContext NS_DESIGNATED_INITIALIZER; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Context/VEPlayerContextMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerContextMacros.h 3 | // VEPlayerKit 4 | // 5 | 6 | #ifndef VEPlayerContextMacros_h 7 | #define VEPlayerContextMacros_h 8 | 9 | typedef void(^VEPlayerContextHandler)(id _Nullable object, NSString * _Nullable key); 10 | 11 | typedef id _Nullable (^VEPlayerContextObjectCreator)(void); 12 | 13 | static inline void VEPlayerContextRunOnMainThread(void (^ _Nullable block)(void)) { 14 | if ([NSThread isMainThread]) { 15 | block(); 16 | } else { 17 | dispatch_async(dispatch_get_main_queue(), block); 18 | } 19 | } 20 | 21 | #endif /* VEPlayerContextMacros_h */ 22 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/main.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // main.m 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/5/27. 8 | // 9 | 10 | #import 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) { 14 | NSString * appDelegateClassName; 15 | @autoreleasepool { 16 | // Setup code that might create autoreleased objects goes here. 17 | appDelegateClassName = NSStringFromClass([AppDelegate class]); 18 | } 19 | return UIApplicationMain(argc, argv, nil, appDelegateClassName); 20 | } 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/Model/VEDramaPayInfoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaPayInfoModel.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/23. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | typedef NS_ENUM(NSInteger, VEDramaPayStatus) { 13 | VEDramaPayStatus_Unpaid, 14 | VEDramaPayStatus_Paying, 15 | VEDramaPayStatus_Paid, 16 | }; 17 | 18 | @interface VEDramaPayInfoModel : NSObject 19 | 20 | @property (nonatomic, assign) VEDramaPayStatus payStatus; 21 | @property (nonatomic, assign) NSInteger price; // Unit: Cent 22 | 23 | - (BOOL)isPaid; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/BestPractice/ShortVideoOCTableViewCell.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // ShortVideoOCTableViewCell.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/6/19. 8 | // 9 | 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface ShortVideoOCTableViewCell : UITableViewCell 15 | @property (nonatomic, assign) NSInteger row; 16 | - (void)configureSource:(NSString *)sourceUrl cover:(NSString *)coverUrl; 17 | - (void)play; 18 | - (void)pause; 19 | - (void)closeAysnc; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSAppTransportSecurity 6 | 7 | NSExceptionDomains 8 | 9 | vodsdk-cover-example.byte-test.com 10 | 11 | NSExceptionAllowsInsecureHTTPLoads 12 | 13 | NSExceptionMinimumTLSVersion 14 | TLSv1.2 15 | NSIncludesSubdomains 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ActionView/VEPlayerActionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerActionView.h 3 | // VEPlayerKit 4 | // 5 | 6 | 7 | #import 8 | #import "VEPlayerControlView.h" 9 | #import "VEPlayerControlViewDefine.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface VEPlayerActionView : UIView 14 | 15 | - (void)addPlayerControlView:(VEPlayerControlView * _Nullable)controlView viewType:(VEPlayerControlViewType)viewType; 16 | 17 | - (void)removePlayerControlView:(VEPlayerControlViewType)viewType; 18 | 19 | - (VEPlayerControlView * _Nullable)getPlayerControlView:(VEPlayerControlViewType)viewType; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Interaction/VEPlayerInteractionDefine.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerInteractionDefine.h 3 | // VEPlayerKit 4 | // 5 | 6 | 7 | #ifndef VEPlayerInteractionDefine_h 8 | #define VEPlayerInteractionDefine_h 9 | 10 | typedef NS_OPTIONS(NSUInteger, VEGestureType) { 11 | VEGestureType_None = 0, 12 | VEGestureType_SingleTap = 1 << 0, 13 | VEGestureType_DoubleTap = 1 << 1, 14 | VEGestureType_Pan = 1 << 2, 15 | VEGestureType_LongPress = 1 << 3, 16 | VEGestureType_Pinch = 1 << 4, 17 | VEGestureType_All = NSUIntegerMax, 18 | }; 19 | 20 | #endif /* VEPlayerInteractionDefine_h */ 21 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaUIView/ShortDramaSelectionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSelectionView.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | 8 | @class VEDramaVideoInfoModel; 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | #define ShortDramaSelectionViewHeight 40 13 | 14 | @protocol ShortDramaSelectionViewDelegate 15 | 16 | - (void)onClickDramaSelectionCallback; 17 | 18 | @end 19 | 20 | @interface ShortDramaSelectionView : UIView 21 | 22 | @property (nonatomic, weak) id delegate; 23 | 24 | - (void)reloadData:(VEDramaVideoInfoModel *)dramaVideoInfo; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+Resolution.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+Resolution.m 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/12/5. 6 | // 7 | 8 | #import "VEVideoPlayerController+Resolution.h" 9 | 10 | static TTVideoEngineResolutionType kDefaultResolutionType = TTVideoEngineResolutionType1080P; 11 | 12 | @implementation VEVideoPlayerController (Resolution) 13 | 14 | + (TTVideoEngineResolutionType)getPlayerCurrentResolution { 15 | return kDefaultResolutionType; 16 | } 17 | 18 | + (void)setPlayerCurrentResolution:(TTVideoEngineResolutionType)defaultResolution { 19 | kDefaultResolutionType = defaultResolution; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/FeedVideo/VEFeedVideoDetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEFeedVideoDetailViewController.h 3 | // VEPlayModule 4 | // 5 | // Created by real on 2022/10/9. 6 | // 7 | 8 | #import "VEViewController.h" 9 | @class VEVideoPlayerController; 10 | @class VEVideoModel; 11 | 12 | @protocol VEFeedVideoDetailProtocol 13 | // playing player 14 | - (VEVideoPlayerController *)currentPlayerController:(VEVideoModel *)videoModel; 15 | 16 | @end 17 | 18 | @interface VEFeedVideoDetailViewController : VEViewController 19 | 20 | @property (nonatomic, strong) VEVideoModel *videoModel; 21 | 22 | @property (nonatomic, weak) id delegate; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaPay/ShortDramaCachePayManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaCachePayManager.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/24. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface ShortDramaCachePayManager : NSObject 13 | 14 | + (ShortDramaCachePayManager *)shareInstance; 15 | 16 | @property (nonatomic, assign, readonly) BOOL openPayTest; 17 | 18 | - (BOOL)isPaidDrama:(NSString *)dramaId episodeNumber:(NSInteger)episodeNumber; 19 | 20 | - (void)cachePaidDrama:(NSString *)dramaId episodeNumber:(NSInteger)episodeNumber; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/ExampleAd/ExampleAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAdViewController.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import 9 | @class VEVideoModel; 10 | @protocol VEAdActionResponderDelegate; 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface ExampleAdViewController : UIViewController 15 | 16 | @property (nonatomic, strong, readonly) VEVideoModel *adModel; 17 | @property (nonatomic, weak) id delegate; 18 | 19 | - (void)reloadData:(VEVideoModel *)adModel forAdId:(NSString*)adId andSceneType:(NSInteger)sceneType; 20 | - (void)play; 21 | - (void)ignore; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaDetail/ShortDramaDetailPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaDetailPlayerModuleLoader.h 3 | // ModularPlayerDemo 4 | // 5 | 6 | #import 7 | #import "VEPlayerBaseModuleLoader.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @protocol ShortDramaDetailPlayerModuleLoaderDelegate 12 | 13 | - (void)onClickDramaSelectionCallback; 14 | 15 | @end 16 | 17 | @interface ShortDramaDetailPlayerModuleLoader : VEPlayerBaseModuleLoader 18 | 19 | @property (nonatomic, weak) id delegate; 20 | 21 | - (void)setSubtitle:(NSString *)subtitle; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Categorys/NSNumber+BTDAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+BTDAdditions.h 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @interface NSNumber (BTDAdditions) 10 | 11 | /** 12 | Convert a NSString to a NSNumber. 13 | 14 | @param string A number NSString. For example, @"12", @"12.345", @" -0xFF", @" .23e99 ". 15 | @return A NSNumber. If an error happened, it would return nil. 16 | */ 17 | + (nullable NSNumber *)btd_numberWithString:(nonnull NSString *)string; 18 | 19 | /** 20 | Returns whether current NSNumber is `NaN` (Not a Number), which is not compatible in JSON Serialization. 21 | */ 22 | - (BOOL)btd_isNaN; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ModuleLoader/VELoopScatterPerform.h: -------------------------------------------------------------------------------- 1 | // 2 | // VELoopScatterPerform.h 3 | // VEPlayerKit.common 4 | // 5 | 6 | 7 | #import 8 | #import "VEScatterPerformProtocol.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VELoopScatterPerform : NSObject 13 | 14 | @property (nonatomic, assign) NSInteger loadCountPerTime; 15 | @property (nonatomic, copy, nullable) void(^performBlock)(NSArray *objects, BOOL load); 16 | @property (nonatomic, assign) BOOL enable; 17 | 18 | - (void)loadObjects:(NSArray *)objects; 19 | 20 | - (void)unloadObjects:(NSArray *)objects; 21 | 22 | - (void)invalidate; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Context/VEPlayerContextItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerContextItem.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerContextMacros.h" 8 | #import "VEPlayerContextItemHandler.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEPlayerContextItem : NSObject 13 | 14 | @property (nonatomic, copy, readwrite, nonnull) NSString *key; 15 | 16 | @property (nonatomic, strong, readwrite, nullable) id object; 17 | 18 | - (void)addHandler:(VEPlayerContextItemHandler *)handler; 19 | 20 | - (void)removeHandler:(VEPlayerContextItemHandler *)handler; 21 | - (void)removeAllHandler; 22 | 23 | - (void)notify:(id)value; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/Model/VEDramaInfoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaInfoModel.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | #import 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @interface VEDramaInfoModel : JSONModel 12 | 13 | @property (nonatomic, copy) NSString *dramaId; 14 | @property (nonatomic, copy) NSString *dramaTitle; 15 | @property (nonatomic, copy) NSString *dramaDes; 16 | @property (nonatomic, copy) NSString *coverUrl; 17 | @property (nonatomic, copy) NSString *authorId; 18 | 19 | @property (nonatomic, assign) NSInteger latestEpisodeNumber; 20 | @property (nonatomic, assign) NSInteger totalEpisodeNumber; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerModel/VEPlayerSeekState.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerSeekState.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | typedef NS_ENUM(NSUInteger, VEPlayerSeekStage) { 11 | VEPlayerSeekStageNone = 0, 12 | VEPlayerSeekStageSliderBegin, 13 | VEPlayerSeekStageSliderChanging, 14 | VEPlayerSeekStageSliderEnd, 15 | VEPlayerSeekStageSliderCancel 16 | }; 17 | 18 | @interface VEPlayerSeekState : NSObject 19 | 20 | @property (nonatomic, assign) VEPlayerSeekStage seekStage; 21 | 22 | @property (nonatomic, assign) CGFloat progress; 23 | 24 | @property (nonatomic, assign) NSTimeInterval duration; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/Protocol/VEAdManagerDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEAdEntityDelegate.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/7. 6 | // 7 | 8 | #import 9 | 10 | @protocol VEAdManagerDelegate 11 | 12 | - (NSString* _Nullable)getNextAdUniqueId; 13 | 14 | - (void)prepareAdById:(NSString* _Nonnull)adId andSceneType:(NSInteger)sceneType; 15 | 16 | - (void)showAdInRootViewController:(UIViewController * _Nonnull)viewController byId:(NSString* _Nonnull)adId andResponder:(id _Nullable)delegate; 17 | 18 | - (void)removeAdFromRootViewController:(UIViewController * _Nonnull)viewController byId:(NSString* _Nonnull)adId; 19 | 20 | - (void)didAppear:(NSString* _Nonnull)adId; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/Model/VEDramaInfoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaInfoModel.m 3 | // VEPlayModule 4 | // 5 | 6 | #import "VEDramaInfoModel.h" 7 | 8 | @implementation VEDramaInfoModel 9 | 10 | + (JSONKeyMapper*)keyMapper { 11 | return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{ 12 | @"dramaId": @"dramaId", 13 | @"dramaTitle": @"dramaTitle", 14 | @"dramaDes": @"description", 15 | @"coverUrl": @"coverUrl", 16 | @"authorId": @"authorId", 17 | @"latestEpisodeNumber": @"latestEpisodeNumber", 18 | @"totalEpisodeNumber": @"totalEpisodeNumber", 19 | }]; 20 | } 21 | 22 | + (BOOL)propertyIsOptional:(NSString*)propertyName { 23 | return YES; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/VEPlayerKit.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "VEPlayerKit" 3 | s.version = "1.0.0" 4 | s.summary = "火山引擎点播播放器封装层" 5 | s.description = "火山引擎点播播放器封装层" 6 | s.homepage = "https://www.volcengine.com" 7 | s.license = 'MIT' 8 | s.author = { "zhaoxiaoyu" => "zhaoxiaoyu.realxx@bytedance.com" } 9 | s.source = { :path => './Classes' } 10 | 11 | s.platform = :ios, '11.0' 12 | s.requires_arc = true 13 | 14 | s.source_files = 'Classes/**/*' 15 | s.public_header_files = 'Classes/**/*.{h}' 16 | 17 | s.dependency 'TTSDKFramework/Player-SR' 18 | s.dependency 'Masonry' 19 | s.dependency 'SDWebImage' 20 | s.dependency 'VEBaseKit' 21 | s.dependency 'MBProgressHUD' 22 | 23 | s.static_framework = true 24 | end 25 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaRecommod/ShortDramaRecommodPlayerModuleLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaRecommodPlayerModuleLoader.h 3 | // VEPlayModule 4 | // 5 | // Created by zyw on 2024/7/16. 6 | // 7 | 8 | #import 9 | #import "VEPlayerBaseModuleLoader.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol ShortDramaRecommodPlayerModuleLoaderDelegate 14 | 15 | - (void)onClickSeriesViewCallback; 16 | 17 | @end 18 | 19 | @interface ShortDramaRecommodPlayerModuleLoader : VEPlayerBaseModuleLoader 20 | 21 | @property (nonatomic, weak) id delegate; 22 | 23 | - (void)setSubtitle:(NSString *)subtitle; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /VOLCDemo/VEVodMain/VEVodMain.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "VEVodMain" 3 | s.version = "1.0.0" 4 | s.summary = "火山引擎点播短视频入口和资源文件" 5 | s.description = "火山引擎点播短视频入口和资源文件" 6 | s.homepage = "https://www.volcengine.com" 7 | s.license = 'MIT' 8 | s.author = { "zhaoxiaoyu" => "zhaoxiaoyu.realxx@bytedance.com" } 9 | s.source = { :path => './Classes' } 10 | 11 | s.platform = :ios, '11.0' 12 | s.requires_arc = true 13 | 14 | s.source_files = 'Entry/*.{m,h}' 15 | s.public_header_files = 'Entry/*.{h}' 16 | 17 | s.resources = ['Resources/**/*.{xcassets,lproj}', 18 | 'Entry/*.{xib}' 19 | ] 20 | 21 | s.dependency 'TTSDKFramework/Player-SR' 22 | s.dependency 'VESceneModule' 23 | 24 | s.static_framework = true 25 | end 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/GestureService/Private/VEPlayerGestureDisableHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerGestureDisableHandler.h 3 | // VEPlayerKit 4 | // 5 | 6 | 7 | #import 8 | #import "VEPlayerGestureHandlerProtocol.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /// 专门用于屏蔽指定手势类型 13 | @interface VEPlayerGestureDisableHandler : NSObject 14 | 15 | @property (nonatomic, assign, readonly) VEGestureType gestureType; 16 | @property (nonatomic, copy, readonly) NSString *scene; 17 | 18 | + (instancetype)new NS_UNAVAILABLE; 19 | - (instancetype)init NS_UNAVAILABLE; 20 | - (instancetype)initWithGestureType:(VEGestureType)gestureType scene:(NSString *)scene NS_DESIGNATED_INITIALIZER; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerLog/VEPlayerExceptionLogger.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerKitLogger.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | ///抓取异常调用的堆栈信息并上报的block 11 | typedef void(^ThreadExceptionLogBlock)(NSString *type, NSDictionary *_Nullable currentParams); 12 | 13 | @interface VEPlayerExceptionLogger : NSObject 14 | 15 | + (void)setThreadExceptionLogBlock:(ThreadExceptionLogBlock)threadExceptionLogBlock; 16 | 17 | 18 | /// 上报异常线程堆栈 19 | /// @param exceptionType 异常类型(自定义字符串) 20 | /// @param currentParams 自定义参数(必须能转成json) 21 | + (void)trackThreadExceptionLog:(NSString *)exceptionType currentParams:(NSDictionary *_Nullable)currentParams; 22 | 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ModuleLoader/VEFrameScatterPerform.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEFrameScatterPerform.h 3 | // VEPlayerKit.common 4 | // 5 | 6 | 7 | #import 8 | #import "VEScatterPerformProtocol.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface VEFrameScatterPerform : NSObject 13 | 14 | @property (nonatomic, assign) NSInteger framesPerSecond; 15 | @property (nonatomic, assign) NSInteger loadCountPerTime; 16 | 17 | @property (nonatomic, copy, nullable) void(^performBlock)(NSArray *objects, BOOL load); 18 | @property (nonatomic, assign) BOOL enable; 19 | 20 | - (void)loadObjects:(NSArray *)objects; 21 | 22 | - (void)unloadObjects:(NSArray *)objects; 23 | 24 | - (void)invalidate; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Ad/VEAdCellController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEAdsCellController.h 3 | // VESceneModule 4 | // 5 | // Created by litao.he on 2024/11/6. 6 | // 7 | 8 | @import UIKit; 9 | #import "VEPageViewController.h" 10 | #import "VEAdInfoModel.h" 11 | 12 | @protocol VEAdManagerDelegate; 13 | @protocol VEAdActionResponderDelegate; 14 | 15 | @interface VEAdCellController : UIViewController 16 | 17 | @property (nonatomic, weak) id adDelegate; 18 | @property (nonatomic, weak) id responderDelegate; 19 | @property (nonatomic, assign) NSInteger hostSceneType; // 1 短剧剧场,2 短剧推荐 20 | @property (nonatomic, strong, nonnull, readonly) VEAdInfoModel* adInfoModel; 21 | 22 | -(void)loadAd:(VEAdInfoModel* _Nonnull)adInfoModel; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /VOLCDemo/VOLCDemo.xcodeproj/xcuserdata/bytedance.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | VOLCDemo.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 16 11 | 12 | fwfew.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 15 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 2BEC93C12657907300C64503 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/Model/VEDramaEpisodeInfoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaEpisodeInfoModel.m 3 | // VEPlayModule 4 | // 5 | 6 | #import "VEDramaEpisodeInfoModel.h" 7 | 8 | @implementation VEDramaEpisodeInfoModel 9 | 10 | + (JSONKeyMapper*)keyMapper { 11 | return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{ 12 | @"episodeNumber": @"episodeNumber", 13 | @"episodeDesc": @"episodeDesc", 14 | @"dramaInfo": @"dramaInfo" 15 | }]; 16 | } 17 | 18 | + (Class)classForCollectionProperty:(NSString *)propertyName { 19 | if ([propertyName isEqualToString:@"dramaInfo"]) { 20 | return VEDramaInfoModel.class; 21 | } 22 | return nil; 23 | } 24 | 25 | + (BOOL)propertyIsOptional:(NSString*)propertyName { 26 | return YES; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VEVideoPlayerController+Strategy.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoPlayerController+Strategy.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VEVideoPlayerController.h" 10 | 11 | @interface VEVideoPlayerController (Strategy) 12 | 13 | @property (nonatomic, assign) BOOL preRenderOpen; 14 | 15 | @property (nonatomic, assign) BOOL preloadOpen; 16 | 17 | + (BOOL)enableEngineStrategy:(TTVideoEngineStrategyType)strategyType scene:(NSString *)scene; 18 | 19 | + (void)setStrategyVideoSources:(NSArray> *)videoSources; 20 | 21 | + (void)addStrategyVideoSources:(NSArray> *)videoSources; 22 | 23 | + (void)clearAllEngineStrategy; 24 | 25 | @end 26 | 27 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Context/VEPlayerContextItemHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerContextItemHandler.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerContextMacros.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @interface VEPlayerContextItemHandler : NSObject 12 | 13 | @property(nonatomic, copy, readonly) NSArray *keys; 14 | @property(nonatomic, copy, readonly) VEPlayerContextHandler handler; 15 | 16 | - (instancetype)init NS_UNAVAILABLE; 17 | + (instancetype)new NS_UNAVAILABLE; 18 | 19 | - (instancetype)initWithObserver:(id)observer keys:(NSArray *)keys handler:(VEPlayerContextHandler)handler NS_DESIGNATED_INITIALIZER; 20 | 21 | - (void)executeHandlerWithKey:(NSString *)key andValue:(id)value; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ControlView/VEPlayerControlView.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerControlView.m 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayerControlView.h" 7 | 8 | @interface VEPlayerControlView() 9 | 10 | 11 | @end 12 | 13 | @implementation VEPlayerControlView 14 | 15 | #pragma mark - Life Cycle 16 | - (instancetype)initWithFrame:(CGRect)frame { 17 | self = [super initWithFrame:frame]; 18 | if (self) { 19 | 20 | } 21 | return self; 22 | } 23 | 24 | - (void)layoutSubviews { 25 | [super layoutSubviews]; 26 | } 27 | 28 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 29 | UIView *hitTestView = [super hitTest:point withEvent:event]; 30 | if (hitTestView == self) { 31 | return nil; 32 | } 33 | return hitTestView; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Data/Network/VENetworkHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // VENetworkHelper.h 3 | // VOLCDemo 4 | // 5 | // Created by wangzhiyong on 2021/5/26. 6 | // Copyright © 2021 ByteDance. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | typedef void(^HttpSuccessResponseBlock)(id responseObject); 14 | typedef void(^HttpFailureResponseBlock)(NSString *errorMessage); 15 | 16 | @interface VENetworkHelper : NSObject 17 | 18 | + (void)requestDataWithUrl:(NSString *)url 19 | httpMethod:(NSString *)method 20 | parameters:(NSDictionary * __nullable)parameters 21 | success:(HttpSuccessResponseBlock)success 22 | failure:(HttpFailureResponseBlock)failure; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingDisplayCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingDisplayCell.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VESettingDisplayCell.h" 10 | #import "VESettingModel.h" 11 | 12 | const NSString *VESettingDisplayCellReuseID = @"VESettingDisplayCellReuseID"; 13 | 14 | @interface VESettingDisplayCell () 15 | 16 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 17 | 18 | @property (weak, nonatomic) IBOutlet UIView *topSepLine; 19 | 20 | @end 21 | 22 | @implementation VESettingDisplayCell 23 | 24 | - (void)setSettingModel:(VESettingModel *)settingModel { 25 | _settingModel = settingModel; 26 | self.titleLabel.text = [NSString stringWithFormat:@"%@", settingModel.displayText]; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | }, 8 | { 9 | "appearances" : [ 10 | { 11 | "appearance" : "luminosity", 12 | "value" : "dark" 13 | } 14 | ], 15 | "idiom" : "universal", 16 | "platform" : "ios", 17 | "size" : "1024x1024" 18 | }, 19 | { 20 | "appearances" : [ 21 | { 22 | "appearance" : "luminosity", 23 | "value" : "tinted" 24 | } 25 | ], 26 | "idiom" : "universal", 27 | "platform" : "ios", 28 | "size" : "1024x1024" 29 | } 30 | ], 31 | "info" : { 32 | "author" : "xcode", 33 | "version" : 1 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/GestureService/Private/VEPlayerGestureDisableHandler.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerGestureDisableHandler.m 3 | // VEPlayerKit 4 | // 5 | 6 | 7 | #import "VEPlayerGestureDisableHandler.h" 8 | 9 | @implementation VEPlayerGestureDisableHandler 10 | 11 | - (instancetype)initWithGestureType:(VEGestureType)gestureType scene:(nonnull NSString *)scene { 12 | self = [super init]; 13 | if (self) { 14 | _gestureType = gestureType; 15 | _scene = scene; 16 | } 17 | return self; 18 | } 19 | 20 | #pragma mark - VEPlayerGestureHandlerProtocol 21 | - (BOOL)gestureRecognizerShouldDisable:(UIGestureRecognizer *)gestureRecognizer gestureType:(VEGestureType)gestureType location:(CGPoint)location { 22 | if (self.gestureType & gestureType) { 23 | return YES; 24 | } 25 | return NO; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Utility/VEPlayerUtility.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerUtility.h 3 | // Article 4 | // 5 | 6 | #import 7 | 8 | @interface VEPlayerUtility : NSObject 9 | 10 | + (void)quitCurrentViewController; 11 | 12 | + (UIViewController *)lm_topmostViewController; 13 | + (UIViewController *)lm_topViewControllerRecursivityWithRootViewController:(UIViewController *)rootViewController; 14 | 15 | + (CGRect)landscapeFullScreenBounds; 16 | 17 | + (CGRect)portraitFullScreenBounds; 18 | 19 | + (UIInterfaceOrientation)currentOrientation; 20 | 21 | + (BOOL)ttv_isNetworkConnected; 22 | + (BOOL)ttv_isNetworkWifi; 23 | 24 | + (NSString *)ttv_platformString; 25 | + (BOOL)ttv_isSimulator; 26 | + (BOOL)ttv_isvalidNumber:(NSTimeInterval)number; 27 | 28 | + (NSString *)netWorkSpeedStringWithKBPerSeconds:(NSInteger)netWorkSpeed; 29 | 30 | @end 31 | 32 | 33 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortVideo/VEShortVideoCellController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortVideoCellController.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | @class VEVideoModel; 11 | @class VEShortVideoCellController; 12 | #import "VEPageViewController.h" 13 | 14 | @protocol VEShortVideoCellControllerDelegate 15 | 16 | - (void)shortVideoController:(VEShortVideoCellController *)controller shouldLockVerticalScroll:(BOOL)shouldLock; 17 | 18 | @end 19 | 20 | @interface VEShortVideoCellController : UIViewController 21 | 22 | @property (nonatomic, weak) id delegate; 23 | 24 | @property (nonatomic, strong, readonly) VEVideoModel *videoModel; 25 | 26 | - (void)reloadData:(VEVideoModel *)videoModel; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaRecommod/VEShortDramaVideoCellController.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEShortDramaVideoCellController.h 3 | // VOLCDemo 4 | // 5 | 6 | #import "VEPageViewController.h" 7 | 8 | @import UIKit; 9 | 10 | @class VEDramaVideoInfoModel; 11 | 12 | @protocol VEShortDramaVideoCellControllerDelegate 13 | 14 | - (void)onDramaDetailVideoPlayFinish:(VEDramaVideoInfoModel *)dramaVideoInfo; 15 | 16 | - (void)dramaVideoWatchDetail:(VEDramaVideoInfoModel *)dramaVideoInfo; 17 | 18 | @end 19 | 20 | @interface VEShortDramaVideoCellController : UIViewController 21 | 22 | @property (nonatomic, weak) id delegate; 23 | 24 | @property (nonatomic, strong, readonly) VEDramaVideoInfoModel *dramaVideoInfo; 25 | 26 | - (void)reloadData:(VEDramaVideoInfoModel *)dramaVideoInfo; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaSelection/ShortDramaSelectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaSelectionViewController.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | @class VEDramaVideoInfoModel; 11 | 12 | @protocol ShortDramaSelectionViewControllerDelegate 13 | 14 | - (void)onDramaSelectionCallback:(VEDramaVideoInfoModel *)dramaVideoInfo; 15 | 16 | - (void)onCloseHandleCallback; 17 | 18 | @end 19 | 20 | @interface ShortDramaSelectionViewController : UIViewController 21 | 22 | @property (nonatomic, weak) id delegate; 23 | 24 | - (instancetype)initWtihDramaVideoInfo:(VEDramaVideoInfoModel *)dramaVideoInfo; 25 | 26 | - (void)updateCurrentDramaVideoInfo:(VEDramaVideoInfoModel *)dramaVideoInfo; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ModuleLoader/VEScatterPerformProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEScatterPerformProtocol.h 3 | // VEPlayerKit 4 | // 5 | 6 | #ifndef VEScatterPerformProtocol_h 7 | #define VEScatterPerformProtocol_h 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @protocol VEScatterPerformProtocol 12 | 13 | /// The number of modules to load at once, default is 1 14 | @property (nonatomic, assign) NSInteger loadCountPerTime; 15 | 16 | @property (nonatomic, copy, nullable) void(^performBlock)(NSArray *objects, BOOL load); 17 | /// enable , default no 18 | @property (nonatomic, assign) BOOL enable; 19 | 20 | - (void)loadObjects:(NSArray *)objects; 21 | 22 | - (void)unloadObjects:(NSArray *)objects; 23 | 24 | - (void)removeLoadObjects:(NSArray *)objects; 25 | 26 | - (void)invalidate; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | 32 | #endif /* VEScatterPerformProtocol_h */ 33 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/UIViewController+Orientation.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Orientation.h 3 | // quickstart 4 | // 5 | // Created by bytedance on 2021/3/24. 6 | // Copyright © 2021 bytedance. All rights reserved. 7 | // 8 | 9 | #import 10 | typedef NS_ENUM(NSInteger, ScreenOrientation) { 11 | ScreenOrientationLandscapeAndPortrait = 1, 12 | ScreenOrientationLandscape, 13 | ScreenOrientationPortrait, 14 | }; 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @interface UIViewController (Orientation) 19 | @property(nonatomic, assign) UIInterfaceOrientation orientation; 20 | - (void)setDeviceInterfaceOrientation:(UIDeviceOrientation)orientation; 21 | 22 | - (void)addOrientationNotice; 23 | 24 | - (void)orientationDidChang:(BOOL)isLandscape; 25 | 26 | - (void)setAllowAutoRotate:(ScreenOrientation)screenOrientation; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/ShortDramaFeedController/DramaPay/ShortDramaPayViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortDramaPayViewController.h 3 | // Pods 4 | // 5 | // Created by zyw on 2024/7/23. 6 | // 7 | 8 | #import 9 | #import "VEDramaVideoInfoModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol ShortDramaPayViewControllerDelegate 14 | 15 | - (void)onPayingCallback:(VEDramaVideoInfoModel *)dramaVideoInfo; 16 | 17 | - (void)onPaySuccessCallback:(VEDramaVideoInfoModel *)dramaVideoInfo; 18 | 19 | - (void)onPayCancelCallback:(VEDramaVideoInfoModel *)dramaVideoInfo; 20 | 21 | @end 22 | 23 | @interface ShortDramaPayViewController : UIViewController 24 | 25 | @property (nonatomic, weak) id delegate; 26 | 27 | - (void)reloadData:(VEDramaVideoInfoModel *)dramaVideoInfo; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/VEVodPlayerAPIExample/VEAPIVideoModel/VEAPIMediaSource.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. 2 | // SPDX-License-Identifier: MIT 3 | // 4 | // VEAPIMediaSource.h 5 | // VEVodPlayerAPIExample 6 | // 7 | // Created by ByteDance on 2025/6/25. 8 | // 9 | 10 | #import 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @class VEAPIVideoModel; 16 | 17 | @interface VEAPIMediaSource : NSObject 18 | 19 | + (TTVideoEngineUrlSource *)initDirectUrlSource:(NSString *)directUrl; 20 | + (TTVideoEngineVidSource *)initVidSource:(NSString *)vid playAuthToken:(NSString *)playAuthToken resolution:(TTVideoEngineResolutionType)resolution; 21 | + (NSArray> *)covertVideoModelsToTTVideoEngineSources:(NSArray *)videoModels; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerLog/VEPlayerExceptionLoggerDefine.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerExceptionLoggerDefine.h 3 | // VEPlayerKit 4 | // 5 | 6 | #ifndef VEPlayerExceptionLoggerDefine_h 7 | #define VEPlayerExceptionLoggerDefine_h 8 | #import "VEPlayerExceptionLogger.h" 9 | 10 | #define VEPlayerAssertMainThreadException() \ 11 | NSAssert([NSThread isMainThread], @"This method must be called on the main thread");\ 12 | if(![NSThread isMainThread]) { \ 13 | [VEPlayerExceptionLogger trackThreadExceptionLog:NSStringFromClass(self.class) currentParams:nil]; \ 14 | } \ 15 | 16 | static inline void VEPlayerThreadExceptionTrack(NSString * _Nullable exceptionType, NSDictionary *_Nullable currentParams) { 17 | [VEPlayerExceptionLogger trackThreadExceptionLog:exceptionType currentParams:currentParams]; 18 | } 19 | 20 | #endif /* VEPlayerExceptionLoggerDefine_h */ 21 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEPlayerModuleManagerInterface.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerModuleManagerInterface.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerBaseModuleProtocol.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @protocol VEPlayerModuleManagerInterface 12 | 13 | - (void)addModule:(id)module; 14 | 15 | - (void)removeModule:(id)module; 16 | 17 | - (void)addModules:(NSArray> *)modules; 18 | 19 | - (void)removeModules:(NSArray> *)modules; 20 | 21 | - (void)addModuleByClzz:(Class)clzz; 22 | 23 | - (void)addModulesByClzzArray:(NSArray *)clzzArray; 24 | 25 | - (void)removeModuleByClzz:(Class)clzz; 26 | 27 | - (void)removeAllModules; 28 | 29 | - (void)setupData:(id)data; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Interaction/VEPlayerInteraction.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerInteraction.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerViewLifeCycleProtocol.h" 8 | #import "VEPlayerModuleManagerInterface.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol VEPlayerViewLifeCycleProtocol; 13 | 14 | @protocol VEPlayerInteractionPlayerProtocol 15 | 16 | @end 17 | 18 | @class VEPlayerContext; 19 | 20 | @interface VEPlayerInteraction : NSObject 21 | 22 | @property (nonatomic, weak) UIView *playerContainerView; 23 | @property (nonatomic, weak) UIView *playerVCView; 24 | 25 | + (instancetype)new NS_UNAVAILABLE; 26 | - (instancetype)init NS_UNAVAILABLE; 27 | - (instancetype)initWithContext:(VEPlayerContext *)context NS_DESIGNATED_INITIALIZER; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/EnginePool/VEVideoEnginePool.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEVideoEnginePool.h 3 | // Pods 4 | // 5 | // Created by zyw on 2024/7/16. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | typedef NS_ENUM(NSInteger, VECreateEngineFrom) { 14 | VECreateEngineFrom_Init, 15 | VECreateEngineFrom_Cache, 16 | VECreateEngineFrom_Prerender, 17 | }; 18 | 19 | typedef void(^VEEnginePoolBlock)(TTVideoEngine * _Nullable engine, VECreateEngineFrom engineFrom); 20 | 21 | @interface VEVideoEnginePool : NSObject 22 | 23 | + (VEVideoEnginePool *)shareInstance; 24 | 25 | - (void)createVideoEngine:(id _Nonnull)mediaSource needPrerenderEngine:(BOOL)needPrerender block:(VEEnginePoolBlock)block; 26 | 27 | - (void)removeVideoEngine:(id _Nonnull)mediaSource; 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/FeedVideo/VEFeedVideoCellPlayerModuleLoader.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEFeedVideoCellPlayerModuleLoader.m 3 | // VESceneModule 4 | // 5 | // Created by zys on 2025/10/22. 6 | // 7 | 8 | #import "VEFeedVideoCellPlayerModuleLoader.h" 9 | #import "VELongVideoPlayButtonModule.h" 10 | #import "VEPlayerBackModule.h" 11 | #import "VEPlayerVisibleModule.h" 12 | #import "VELongVideoSeekModule.h" 13 | #import "VEPlayerLoadingModule.h" 14 | 15 | @implementation VEFeedVideoCellPlayerModuleLoader 16 | 17 | - (NSArray> *)getCoreModules { 18 | NSMutableArray *coreModules = [NSMutableArray array]; 19 | [coreModules addObject:[VELongVideoPlayButtonModule new]]; 20 | [coreModules addObject:[VEPlayerLoadingModule new]]; 21 | [coreModules addObject:[VEPlayerVisibleModule new]]; 22 | [coreModules addObject:[[VELongVideoSeekModule alloc] initForCell:YES]]; 23 | 24 | return coreModules; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/ControlView/VEPlayerControlViewDefine.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerControlViewDefine.h 3 | // VEPlayerKit 4 | // 5 | 6 | #ifndef VEPlayerControlViewDefine_h 7 | #define VEPlayerControlViewDefine_h 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, VEPlayerControlViewType) { 12 | VEPlayerControlViewType_Underlay = 11, 13 | VEPlayerControlViewType_Playback = 12, 14 | VEPlayerControlViewType_PlaybackLock = 13, 15 | VEPlayerControlViewType_Overlay = 14, 16 | }; 17 | 18 | typedef NS_OPTIONS(NSUInteger, VEPlayerControlViewArea) { 19 | VEPlayerControlViewAreaNone = 0, 20 | VEPlayerControlViewAreaTop = 1 << 0, 21 | VEPlayerControlViewAreaLeft = 1 << 1, 22 | VEPlayerControlViewAreaBottom = 1 << 2, 23 | VEPlayerControlViewAreaRight = 1 << 3, 24 | VEPlayerControlViewAreaCenter = 1 << 4, 25 | }; 26 | 27 | #endif /* VEPlayerControlViewDefine_h */ 28 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/GestureService/Private/VEPlayerGestureWrapper.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerGestureWrapper.h 3 | // VEPlayerKit 4 | // 5 | 6 | 7 | #import 8 | #import "VEPlayerInteractionDefine.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol VEPlayerGestureHandlerProtocol; 13 | 14 | @interface VEPlayerGestureWrapper : NSObject 15 | 16 | @property (nonatomic, strong, readonly) UIGestureRecognizer *gestureRecognizer; 17 | 18 | @property (nonatomic, assign, readonly) VEGestureType gestureType; 19 | 20 | + (instancetype)new NS_UNAVAILABLE; 21 | - (instancetype)init NS_UNAVAILABLE; 22 | - (instancetype)initWithGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer gestureType:(VEGestureType)gestureType NS_DESIGNATED_INITIALIZER; 23 | 24 | - (void)addGestureHandler:(id)handler; 25 | 26 | - (void)removeGestureHandler:(id)handler; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/ShortDrama/Data/DataManager/VEDramaDataManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEDramaDataManager.h 3 | // VEPlayModule 4 | // 5 | 6 | #import 7 | #import "VEDramaInfoModel.h" 8 | #import "VEDramaVideoInfoModel.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | typedef void(^RequestDataComplete)(id _Nullable responseData, NSString * _Nullable errorMsg); 13 | 14 | @interface VEDramaDataManager : NSObject 15 | 16 | + (void)requestDramaList:(NSInteger)offset pageSize:(NSInteger)pageSize result:(RequestDataComplete)complete; 17 | 18 | + (void)requestDramaRecommondList:(NSInteger)offset pageSize:(NSInteger)pageSize result:(RequestDataComplete)complete; 19 | 20 | + (void)requestDramaEpisodeList:(NSString *)dramaId episodeNumber:(NSInteger)episodeNumber offset:(NSInteger)offset pageSize:(NSInteger)pageSize result:(RequestDataComplete)complete; 21 | 22 | + (NSDictionary *)buildSubtitleModels:(NSArray *)dramaVideoModels; 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/FeedVideo/Cell/VEFeedVideoNormalCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEFeedVideoNormalCell.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/19. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | @class VEVideoModel; 11 | @class VEFeedVideoNormalCell; 12 | 13 | @protocol VEFeedVideoNormalCellDelegate 14 | 15 | - (id)feedVideoCellShouldPlay:(VEFeedVideoNormalCell *)cell; 16 | 17 | @end 18 | 19 | @interface VEFeedVideoNormalCell : UITableViewCell 20 | 21 | @property (nonatomic, strong) VEVideoModel *videoModel; 22 | 23 | @property (weak, nonatomic) IBOutlet UIView *centerContainerView; 24 | 25 | @property (weak, nonatomic) IBOutlet UIImageView *coverImgView; 26 | 27 | @property (weak, nonatomic) IBOutlet UIImageView *playIconView; 28 | 29 | @property (nonatomic, weak) id delegate; 30 | 31 | - (void)cellDidEndDisplay:(BOOL)force; 32 | 33 | + (CGFloat)cellHeight:(VEVideoModel *)videoModel; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/BaseModule/VEPlayerBaseModule.m: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerBaseModule.m 3 | // VEPlayerKit 4 | // 5 | 6 | #import "VEPlayerBaseModule.h" 7 | #import "VEPlayerContext.h" 8 | 9 | @interface VEPlayerBaseModule () 10 | 11 | @end 12 | 13 | @implementation VEPlayerBaseModule 14 | 15 | #pragma mark - Life cycle 16 | - (void)moduleDidLoad { 17 | NSAssert(!self.isLoaded, @"duplicate loading module:%@", self); 18 | _isLoaded = YES; 19 | } 20 | 21 | - (void)viewDidLoad { 22 | NSAssert(!self.isViewLoaded, @"duplicate loading module:%@", self); 23 | _isViewLoaded = YES; 24 | } 25 | 26 | - (void)controlViewTemplateDidUpdate { 27 | 28 | } 29 | 30 | - (void)moduleDidUnLoad { 31 | NSAssert(self.isLoaded, @"duplicate loading module:%@", self); 32 | _isLoaded = NO; 33 | _isViewLoaded = NO; 34 | } 35 | 36 | #pragma mark - Public Mehtod 37 | 38 | 39 | #pragma mark - Private Mehtod 40 | 41 | #pragma mark -- XXX Private Method 42 | 43 | #pragma mark - Setter & Getter 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/Interaction/Context/VEPlayerContextStorage.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEPlayerContextStorage.h 3 | // VEPlayerKit 4 | // 5 | 6 | #import 7 | #import "VEPlayerContextMacros.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @class VEPlayerContextItem; 12 | 13 | @interface VEPlayerContextStorage : NSObject 14 | 15 | /// should cache object in memory, defaults to yes 16 | @property (nonatomic, assign) BOOL enableCache; 17 | 18 | - (nullable id)objectForKey:(nonnull NSString *)key; 19 | - (nullable id)objectForKey:(nonnull NSString *)key creator:(nullable VEPlayerContextObjectCreator)creator; 20 | - (nonnull VEPlayerContextItem *)contextItemForKey:(nonnull NSString *)key; 21 | - (nullable VEPlayerContextItem *)contextItemForKey:(nonnull NSString *)key creator:(nullable VEPlayerContextObjectCreator)creator; 22 | - (nullable id)setObject:(id)object forKey:(nonnull NSString *)key; 23 | - (void)removeObjectForKey:(nonnull NSString *)key; 24 | - (void)removeAllObject; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /VOLCDemo/VEBaseKit/Classes/Categorys/NSTimer+BTDAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSTimer+BTDAdditions.h 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @interface NSTimer (BTDAdditions) 10 | 11 | #pragma mark - Block Timer 12 | 13 | + (NSTimer *)btd_scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer * _Nonnull timer))block; 14 | 15 | + (NSTimer *)btd_timerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer * _Nonnull timer))block; 16 | 17 | #pragma mark - Not Retain Target Timer 18 | 19 | + (NSTimer *)btd_scheduledTimerWithTimeInterval:(NSTimeInterval)interval weakTarget:(id)weakTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo; 20 | 21 | + (NSTimer *)btd_timerWithTimeInterval:(NSTimeInterval)interval weakTarget:(id)weakTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo; 22 | 23 | - (void)btd_pause; 24 | 25 | - (void)btd_resume; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/Cell/VELongVideoViewNormalCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoViewNormalCell.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/18. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VELongVideoViewNormalCell.h" 10 | #import "VEVideoModel.h" 11 | #import 12 | 13 | @interface VELongVideoViewNormalCell () 14 | 15 | @property (weak, nonatomic) IBOutlet UIImageView *coverImgView; 16 | 17 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 18 | 19 | @end 20 | 21 | @implementation VELongVideoViewNormalCell 22 | 23 | - (void)setVideoModel:(VEVideoModel *)videoModel { 24 | _videoModel = videoModel; 25 | if ([videoModel isKindOfClass:[VEVideoModel class]]) { 26 | self.titleLabel.text = [NSString stringWithFormat:@"%@", videoModel.title]; 27 | [self.coverImgView sd_setImageWithURL:[NSURL URLWithString:videoModel.coverUrl]]; 28 | } else { 29 | self.titleLabel.text = @""; 30 | self.coverImgView.image = nil; 31 | } 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/Setting/Cell/VESettingTypeMutilSelectorCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // VESettingTypeMutilSelectorCell.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VESettingTypeMutilSelectorCell.h" 10 | #import "VESettingModel.h" 11 | 12 | const NSString *VESettingTypeMutilSelectorCellReuseID = @"VESettingTypeMutilSelectorCellReuseID"; 13 | 14 | @interface VESettingTypeMutilSelectorCell () 15 | 16 | @property (weak, nonatomic) IBOutlet UIView *topSepLine; 17 | 18 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 19 | 20 | @property (weak, nonatomic) IBOutlet UILabel *detailLabel; 21 | 22 | @end 23 | 24 | @implementation VESettingTypeMutilSelectorCell 25 | 26 | - (void)setSettingModel:(VESettingModel *)settingModel { 27 | _settingModel = settingModel; 28 | self.titleLabel.text = [NSString stringWithFormat:@"%@", settingModel.displayText ?: @""]; 29 | self.detailLabel.text = [NSString stringWithFormat:@"%@", settingModel.detailText ?: @""]; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerModule/PlayerUI/Loading/VEActivityIndicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // VEActivityIndicator.h 3 | // Article 4 | // 5 | 6 | #import 7 | 8 | 9 | @interface VEActivityIndicator : UIView 10 | 11 | /** Sets the line width of the spinner's circle. */ 12 | @property (nonatomic) CGFloat lineWidth; 13 | 14 | /** Sets whether the view is hidden when not animating. */ 15 | @property (nonatomic) BOOL hidesWhenStopped; 16 | 17 | /** Specifies the timing function to use for the control's animation. Defaults to kCAMediaTimingFunctionEaseInEaseOut */ 18 | @property (nonatomic, strong) CAMediaTimingFunction *timingFunction; 19 | 20 | /** Property indicating whether the view is currently animating. */ 21 | @property (nonatomic, readonly) BOOL isAnimating; 22 | 23 | /** Property indicating the duration of the animation, default is 1.5s. Should be set prior to -[startAnimating] */ 24 | @property (nonatomic, readwrite) NSTimeInterval duration; 25 | 26 | - (void)setAnimating:(BOOL)animate; 27 | 28 | - (void)startAnimating; 29 | 30 | - (void)stopAnimating; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /VOLCDemo/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Bytedance Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /VEVodPlayerAPIExample/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Bytedance Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /VOLCDemo/VESceneModule/Classes/LongVideo/Cell/VELongVideoViewTopCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // VELongVideoViewTopCell.m 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/18. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | #import "VELongVideoViewTopCell.h" 10 | #import "VEVideoModel.h" 11 | #import 12 | 13 | @interface VELongVideoViewTopCell () 14 | 15 | @property (weak, nonatomic) IBOutlet UIImageView *coverImgView; 16 | 17 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 18 | 19 | @end 20 | 21 | @implementation VELongVideoViewTopCell 22 | 23 | - (void)setVideoModel:(VEVideoModel *)videoModel { 24 | _videoModel = videoModel; 25 | if ([videoModel isKindOfClass:[VEVideoModel class]]) { 26 | self.titleLabel.text = [NSString stringWithFormat:@"%@", videoModel.title]; 27 | if (NSRunLoop.currentRunLoop.currentMode != UITrackingRunLoopMode) { 28 | [self.coverImgView sd_setImageWithURL:[NSURL URLWithString:videoModel.coverUrl]]; 29 | } 30 | } else { 31 | self.titleLabel.text = @""; 32 | self.coverImgView.image = nil; 33 | } 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /VOLCDemo/VEPlayerKit/Classes/PlayerCore/VideoEngine/TTVideoEngineSourceCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // TTVideoEngineSourceCategory.h 3 | // VOLCDemo 4 | // 5 | // Created by real on 2022/8/22. 6 | // Copyright © 2022 ByteDance. All rights reserved. 7 | // 8 | 9 | @import Foundation; 10 | #import 11 | #import 12 | #import 13 | 14 | 15 | @interface TTVideoEngineMultiEncodingUrlSource (VECodecUrlSource) 16 | 17 | @property (nonatomic, copy) NSString *title; 18 | @property (nonatomic, copy) NSString *cover; 19 | @property (nonatomic, assign) NSInteger startTime; 20 | 21 | @end 22 | 23 | @interface TTVideoEngineVidSource (VEVidSource) 24 | 25 | @property (nonatomic, copy) NSString *title; 26 | @property (nonatomic, copy) NSString *cover; 27 | @property (nonatomic, assign) NSInteger startTime; 28 | 29 | @end 30 | 31 | @interface TTVideoEngineUrlSource (VEUrlSource) 32 | 33 | @property (nonatomic, copy) NSString *title; 34 | @property (nonatomic, copy) NSString *cover; 35 | @property (nonatomic, assign) NSInteger startTime; 36 | 37 | @end 38 | 39 | --------------------------------------------------------------------------------