├── 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 |
--------------------------------------------------------------------------------