├── .gitignore ├── GSYVideoPlayer-master ├── .github │ └── FUNDING.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── app │ ├── .gitignore │ ├── build.gradle │ ├── libs │ │ ├── arm64-v8a │ │ │ └── libppeasy.so │ │ ├── armeabi-v7a │ │ │ └── libppeasy.so │ │ ├── armeabi │ │ │ └── libppeasy.so │ │ ├── x86 │ │ │ └── libppeasy.so │ │ └── x86_64 │ │ │ └── libppeasy.so │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── gsyvideoplayer │ │ │ ├── AutoPlayRecyclerViewActivity.java │ │ │ ├── DanmkuVideoActivity.java │ │ │ ├── DetailADPlayer.java │ │ │ ├── DetailADPlayer2.java │ │ │ ├── DetailControlActivity.java │ │ │ ├── DetailFilterActivity.java │ │ │ ├── DetailListPlayer.java │ │ │ ├── DetailMoreTypeActivity.java │ │ │ ├── DetailPlayer.java │ │ │ ├── EmptyActivity.java │ │ │ ├── FragmentVideoActivity.java │ │ │ ├── GSYApplication.java │ │ │ ├── InputUrlDetailActivity.java │ │ │ ├── ListADVideoActivity.java │ │ │ ├── ListADVideoActivity2.java │ │ │ ├── ListMultiVideoActivity.java │ │ │ ├── ListVideo2Activity.java │ │ │ ├── ListVideoActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── PlayActivity.java │ │ │ ├── PlayEmptyControlActivity.java │ │ │ ├── PlayPickActivity.java │ │ │ ├── RecyclerView2Activity.java │ │ │ ├── RecyclerView3Activity.java │ │ │ ├── RecyclerViewActivity.java │ │ │ ├── ScrollingActivity.java │ │ │ ├── WebDetailActivity.java │ │ │ ├── WindowActivity.java │ │ │ ├── adapter │ │ │ ├── DanamakuAdapter.java │ │ │ ├── ListMultiNormalAdapter.java │ │ │ ├── ListNormalAdapter.java │ │ │ ├── ListVideoAdapter.java │ │ │ ├── RecyclerBaseAdapter.java │ │ │ └── RecyclerNormalAdapter.java │ │ │ ├── effect │ │ │ ├── BitmapEffect.java │ │ │ ├── BitmapIconEffect.java │ │ │ ├── GSYVideoGLViewCustomRender.java │ │ │ ├── GSYVideoGLViewCustomRender2.java │ │ │ ├── GSYVideoGLViewCustomRender3.java │ │ │ ├── GSYVideoGLViewCustomRender4.java │ │ │ └── PixelationEffect.java │ │ │ ├── exo │ │ │ ├── DetailExoListPlayer.java │ │ │ ├── GSYExo2MediaPlayer.java │ │ │ ├── GSYExo2PlayerView.java │ │ │ ├── GSYExoModel.java │ │ │ ├── GSYExoPlayerManager.java │ │ │ └── GSYExoVideoManager.java │ │ │ ├── fragment │ │ │ └── VideoFragment.java │ │ │ ├── holder │ │ │ ├── RecyclerItemBaseHolder.java │ │ │ ├── RecyclerItemNormalHolder.java │ │ │ └── RecyclerItemViewHolder.java │ │ │ ├── listener │ │ │ ├── AppBarStateChangeListener.java │ │ │ ├── OnTransitionListener.java │ │ │ └── SampleListener.java │ │ │ ├── mediacodec │ │ │ ├── MediaCodecRenderView.java │ │ │ ├── MediaCodecTextureView.java │ │ │ └── MediaCodecVideo.java │ │ │ ├── model │ │ │ ├── SwitchVideoModel.java │ │ │ └── VideoModel.java │ │ │ ├── simple │ │ │ ├── SimpleActivity.java │ │ │ ├── SimpleDetailActivityMode1.java │ │ │ ├── SimpleDetailActivityMode2.java │ │ │ ├── SimpleListVideoActivityMode1.java │ │ │ ├── SimpleListVideoActivityMode2.java │ │ │ ├── SimplePlayer.java │ │ │ └── adapter │ │ │ │ ├── SimpleListVideoMode2Adapter.java │ │ │ │ └── SimpleListVideoModeAdapter.java │ │ │ ├── source │ │ │ ├── CustomSourceTag.java │ │ │ ├── DefaultHttpDataSource.java │ │ │ └── DefaultHttpDataSourceFactory.java │ │ │ ├── switchplay │ │ │ ├── SwitchDetailActivity.java │ │ │ ├── SwitchListVideoActivity.java │ │ │ ├── SwitchListVideoAdapter.java │ │ │ ├── SwitchUtil.java │ │ │ └── SwitchVideo.java │ │ │ ├── utils │ │ │ ├── BiliDanmukuParser.java │ │ │ ├── CommonUtil.java │ │ │ ├── JumpUtils.java │ │ │ ├── ScrollCalculatorHelper.java │ │ │ ├── SmallVideoHelper.java │ │ │ └── floatUtil │ │ │ │ ├── FloatActivity.java │ │ │ │ ├── FloatLifecycle.java │ │ │ │ ├── FloatPhone.java │ │ │ │ ├── FloatToast.java │ │ │ │ ├── FloatView.java │ │ │ │ ├── FloatWindow.java │ │ │ │ ├── IFloatWindow.java │ │ │ │ ├── IFloatWindowImpl.java │ │ │ │ ├── LifecycleListener.java │ │ │ │ ├── MoveType.java │ │ │ │ ├── PermissionListener.java │ │ │ │ ├── Screen.java │ │ │ │ └── Util.java │ │ │ ├── video │ │ │ ├── CustomRenderVideoPlayer.java │ │ │ ├── DanmakuVideoPlayer.java │ │ │ ├── EmptyControlVideo.java │ │ │ ├── FloatingVideo.java │ │ │ ├── LandLayoutVideo.java │ │ │ ├── ListADVideoPlayer.java │ │ │ ├── MultiSampleVideo.java │ │ │ ├── PreViewGSYVideoPlayer.java │ │ │ ├── RequestListADVideoPlayer.java │ │ │ ├── SampleControlVideo.java │ │ │ ├── SampleCoverVideo.java │ │ │ ├── SampleVideo.java │ │ │ ├── SmartPickVideo.java │ │ │ └── manager │ │ │ │ └── CustomManager.java │ │ │ └── view │ │ │ ├── CustomInputDialog.java │ │ │ ├── CustomRenderView.java │ │ │ ├── CustomTextureSurface.java │ │ │ ├── FloatPlayerView.java │ │ │ ├── LoadingDialog.java │ │ │ ├── ScrollWebView.java │ │ │ └── SwitchVideoTypeDialog.java │ │ └── res │ │ ├── drawable-xhdpi │ │ ├── custom_enlarge.png │ │ └── custom_shrink.png │ │ ├── drawable │ │ ├── bg_wiht_shadow.xml │ │ ├── dialog_btn_bg.xml │ │ ├── video_new_progress.xml │ │ ├── video_new_seekbar_progress.xml │ │ ├── video_new_seekbar_thumb.xml │ │ ├── video_new_volume_progress_bg.xml │ │ ├── video_seek_new_thumb_normal.xml │ │ └── video_seek_new_thumb_press.xml │ │ ├── layout │ │ ├── activity_danmaku_layout.xml │ │ ├── activity_deatil_exo_list_player.xml │ │ ├── activity_deatil_list_player.xml │ │ ├── activity_detail_ad_player.xml │ │ ├── activity_detail_ad_player2.xml │ │ ├── activity_detail_control.xml │ │ ├── activity_detail_filter.xml │ │ ├── activity_detail_more_type.xml │ │ ├── activity_detail_player.xml │ │ ├── activity_empty.xml │ │ ├── activity_fragment.xml │ │ ├── activity_input_url_detail.xml │ │ ├── activity_list_video.xml │ │ ├── activity_list_video2.xml │ │ ├── activity_main.xml │ │ ├── activity_play.xml │ │ ├── activity_play_empty_control.xml │ │ ├── activity_play_pick.xml │ │ ├── activity_recycler_view.xml │ │ ├── activity_recycler_view2.xml │ │ ├── activity_scrolling.xml │ │ ├── activity_simple.xml │ │ ├── activity_simple_detail_player.xml │ │ ├── activity_simple_play.xml │ │ ├── activity_web_detail.xml │ │ ├── activity_window.xml │ │ ├── content_scrolling.xml │ │ ├── danmaku_layout.xml │ │ ├── empty_control_video.xml │ │ ├── fragment_video.xml │ │ ├── layout_custom_dialog.xml │ │ ├── layout_floating_play.xml │ │ ├── layout_floating_video.xml │ │ ├── layout_loading_dialog.xml │ │ ├── list_video_item.xml │ │ ├── list_video_item_ad.xml │ │ ├── list_video_item_ad2.xml │ │ ├── list_video_item_mutli.xml │ │ ├── list_video_item_normal.xml │ │ ├── list_video_simple_mode1.xml │ │ ├── list_video_simple_mode2.xml │ │ ├── sample_control_video.xml │ │ ├── sample_video.xml │ │ ├── sample_video_land.xml │ │ ├── sample_video_normal.xml │ │ ├── sample_video_pick.xml │ │ ├── switch_activity_detail_player.xml │ │ ├── switch_list_video_item.xml │ │ ├── switch_video.xml │ │ ├── switch_video_dialog.xml │ │ ├── switch_video_dialog_item.xml │ │ ├── video_layout_cover.xml │ │ └── video_layout_preview.xml │ │ ├── menu │ │ └── menu_scrolling.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── xxx1.jpg │ │ └── xxx2.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── raw │ │ ├── comments.xml │ │ └── test.mp4 │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── id.xml │ │ ├── strings.xml │ │ └── styles.xml ├── bintray.gradle ├── build.gradle ├── debug.jks ├── dependencies.gradle ├── doc │ ├── DECODERS.md │ ├── DEPENDENCIES.md │ ├── FURTURE.md │ ├── GSYVIDEO_PLAYER_PROJECT_INFO.md │ ├── QUESTION.md │ ├── UPDATE_VERSION.md │ └── USE.md ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── gsyVideoPlayer-armv7a │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── libs │ │ └── armeabi-v7a │ │ │ ├── libijkffmpeg.so │ │ │ ├── libijkplayer.so │ │ │ └── libijksdl.so │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── shuyu │ │ │ └── gsyvideoplayer │ │ │ └── armv7a │ │ │ └── CarGuo.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── gsyVideoPlayer-base │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── shuyu │ │ └── gsyvideoplayer │ │ ├── cache │ │ └── ICacheManager.java │ │ ├── model │ │ ├── GSYModel.java │ │ └── VideoOptionModel.java │ │ └── player │ │ └── IPlayerManager.java ├── gsyVideoPlayer-ex_so │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── libs │ │ └── armeabi-v7a │ │ │ ├── libijkffmpeg.so │ │ │ ├── libijkplayer.so │ │ │ └── libijksdl.so │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── shuyu │ │ │ └── gsyvideoplayer │ │ │ └── ex_so │ │ │ └── CarGuo.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── gsyVideoPlayer-exo_player2 │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── tv │ │ │ └── danmaku │ │ │ └── ijk │ │ │ └── media │ │ │ └── exo2 │ │ │ ├── Exo2PlayerManager.java │ │ │ ├── ExoMediaSourceInterceptListener.java │ │ │ ├── ExoPlayerCacheManager.java │ │ │ ├── ExoSourceManager.java │ │ │ ├── IjkExo2MediaPlayer.java │ │ │ ├── demo │ │ │ └── EventLogger.java │ │ │ └── source │ │ │ ├── GSYExoHttpDataSource.java │ │ │ └── GSYExoHttpDataSourceFactory.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── gsyVideoPlayer-java │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ ├── com │ │ │ └── shuyu │ │ │ │ └── gsyvideoplayer │ │ │ │ ├── GSYBaseADActivityDetail.java │ │ │ │ ├── GSYBaseActivityDetail.java │ │ │ │ ├── GSYVideoADManager.java │ │ │ │ ├── GSYVideoBaseManager.java │ │ │ │ ├── GSYVideoManager.java │ │ │ │ ├── builder │ │ │ │ └── GSYVideoOptionBuilder.java │ │ │ │ ├── cache │ │ │ │ ├── CacheFactory.java │ │ │ │ ├── ProxyCacheManager.java │ │ │ │ └── ProxyCacheUserAgentHeadersInjector.java │ │ │ │ ├── listener │ │ │ │ ├── GSYMediaPlayerListener.java │ │ │ │ ├── GSYSampleCallBack.java │ │ │ │ ├── GSYVideoGifSaveListener.java │ │ │ │ ├── GSYVideoProgressListener.java │ │ │ │ ├── GSYVideoShotListener.java │ │ │ │ ├── GSYVideoShotSaveListener.java │ │ │ │ ├── LockClickListener.java │ │ │ │ └── VideoAllCallBack.java │ │ │ │ ├── model │ │ │ │ └── GSYVideoModel.java │ │ │ │ ├── player │ │ │ │ ├── IjkPlayerManager.java │ │ │ │ ├── PlayerFactory.java │ │ │ │ └── SystemPlayerManager.java │ │ │ │ ├── render │ │ │ │ ├── GSYRenderView.java │ │ │ │ ├── effect │ │ │ │ │ ├── AutoFixEffect.java │ │ │ │ │ ├── BarrelBlurEffect.java │ │ │ │ │ ├── BlackAndWhiteEffect.java │ │ │ │ │ ├── BrightnessEffect.java │ │ │ │ │ ├── ContrastEffect.java │ │ │ │ │ ├── CrossProcessEffect.java │ │ │ │ │ ├── DocumentaryEffect.java │ │ │ │ │ ├── DuotoneEffect.java │ │ │ │ │ ├── FillLightEffect.java │ │ │ │ │ ├── GammaEffect.java │ │ │ │ │ ├── GaussianBlurEffect.java │ │ │ │ │ ├── GrainEffect.java │ │ │ │ │ ├── GreyScaleEffect.java │ │ │ │ │ ├── HueEffect.java │ │ │ │ │ ├── InvertColorsEffect.java │ │ │ │ │ ├── LamoishEffect.java │ │ │ │ │ ├── NoEffect.java │ │ │ │ │ ├── OverlayEffect.java │ │ │ │ │ ├── PosterizeEffect.java │ │ │ │ │ ├── SampleBlurEffect.java │ │ │ │ │ ├── SaturationEffect.java │ │ │ │ │ ├── SepiaEffect.java │ │ │ │ │ ├── SharpnessEffect.java │ │ │ │ │ ├── TemperatureEffect.java │ │ │ │ │ ├── TintEffect.java │ │ │ │ │ └── VignetteEffect.java │ │ │ │ ├── glrender │ │ │ │ │ ├── GSYVideoGLViewBaseRender.java │ │ │ │ │ └── GSYVideoGLViewSimpleRender.java │ │ │ │ └── view │ │ │ │ │ ├── GSYSurfaceView.java │ │ │ │ │ ├── GSYTextureView.java │ │ │ │ │ ├── GSYVideoGLView.java │ │ │ │ │ ├── IGSYRenderView.java │ │ │ │ │ └── listener │ │ │ │ │ ├── GLSurfaceListener.java │ │ │ │ │ ├── GSYVideoGLRenderErrorListener.java │ │ │ │ │ └── IGSYSurfaceListener.java │ │ │ │ ├── utils │ │ │ │ ├── AnimatedGifEncoder.java │ │ │ │ ├── CommonUtil.java │ │ │ │ ├── Debuger.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── GSYVideoHelper.java │ │ │ │ ├── GSYVideoType.java │ │ │ │ ├── GifCreateHelper.java │ │ │ │ ├── ListVideoUtil.java │ │ │ │ ├── MeasureHelper.java │ │ │ │ ├── NetInfoModule.java │ │ │ │ ├── NetworkUtils.java │ │ │ │ ├── OrientationUtils.java │ │ │ │ ├── RawDataSourceProvider.java │ │ │ │ └── StorageUtils.java │ │ │ │ ├── video │ │ │ │ ├── GSYADVideoPlayer.java │ │ │ │ ├── GSYSampleADVideoPlayer.java │ │ │ │ ├── ListGSYVideoPlayer.java │ │ │ │ ├── NormalGSYVideoPlayer.java │ │ │ │ ├── StandardGSYVideoPlayer.java │ │ │ │ └── base │ │ │ │ │ ├── GSYBaseVideoPlayer.java │ │ │ │ │ ├── GSYTextureRenderView.java │ │ │ │ │ ├── GSYVideoControlView.java │ │ │ │ │ ├── GSYVideoPlayer.java │ │ │ │ │ ├── GSYVideoView.java │ │ │ │ │ ├── GSYVideoViewBridge.java │ │ │ │ │ └── PPeasyService.java │ │ │ │ └── view │ │ │ │ └── SmallVideoTouch.java │ │ └── moe │ │ │ └── codeest │ │ │ └── enviews │ │ │ ├── ENDownloadView.java │ │ │ └── ENPlayView.java │ │ └── res │ │ ├── drawable-xxhdpi │ │ ├── lock.png │ │ ├── unlock.png │ │ ├── video_back.png │ │ ├── video_backward_icon.png │ │ ├── video_brightness_6_white_36dp.png │ │ ├── video_enlarge.png │ │ ├── video_error_normal.png │ │ ├── video_error_pressed.png │ │ ├── video_forward_icon.png │ │ ├── video_loading_bg.png │ │ ├── video_pause_normal.png │ │ ├── video_pause_pressed.png │ │ ├── video_play_normal.png │ │ ├── video_play_pressed.png │ │ ├── video_shrink.png │ │ ├── video_small_close.png │ │ └── video_volume_icon.png │ │ ├── drawable │ │ ├── empty_drawable.xml │ │ ├── video_click_error_selector.xml │ │ ├── video_click_pause_selector.xml │ │ ├── video_click_play_selector.xml │ │ ├── video_dialog_progress.xml │ │ ├── video_dialog_progress_bg.xml │ │ ├── video_jump_btn_bg.xml │ │ ├── video_loading.xml │ │ ├── video_progress.xml │ │ ├── video_seek_progress.xml │ │ ├── video_seek_thumb.xml │ │ ├── video_seek_thumb_normal.xml │ │ ├── video_seek_thumb_pressed.xml │ │ ├── video_title_bg.xml │ │ └── video_volume_progress_bg.xml │ │ ├── layout │ │ ├── video_brightness.xml │ │ ├── video_layout_ad.xml │ │ ├── video_layout_custom.xml │ │ ├── video_layout_normal.xml │ │ ├── video_layout_sample_ad.xml │ │ ├── video_layout_standard.xml │ │ ├── video_progress_dialog.xml │ │ └── video_volume_dialog.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── id.xml │ │ ├── strings.xml │ │ └── style.xml ├── gsyVideoPlayer-proxy_cache │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── danikula │ │ │ └── videocache │ │ │ ├── ByteArrayCache.java │ │ │ ├── ByteArraySource.java │ │ │ ├── Cache.java │ │ │ ├── CacheListener.java │ │ │ ├── Config.java │ │ │ ├── GetRequest.java │ │ │ ├── HttpProxyCache.java │ │ │ ├── HttpProxyCacheDebuger.java │ │ │ ├── HttpProxyCacheServer.java │ │ │ ├── HttpProxyCacheServerClients.java │ │ │ ├── HttpUrlSource.java │ │ │ ├── IgnoreHostProxySelector.java │ │ │ ├── InterruptedProxyCacheException.java │ │ │ ├── Pinger.java │ │ │ ├── Preconditions.java │ │ │ ├── ProxyCache.java │ │ │ ├── ProxyCacheException.java │ │ │ ├── ProxyCacheUtils.java │ │ │ ├── Source.java │ │ │ ├── SourceInfo.java │ │ │ ├── StorageUtils.java │ │ │ ├── file │ │ │ ├── DiskUsage.java │ │ │ ├── FileCache.java │ │ │ ├── FileNameGenerator.java │ │ │ ├── Files.java │ │ │ ├── LruDiskUsage.java │ │ │ ├── Md5FileNameGenerator.java │ │ │ ├── TotalCountLruDiskUsage.java │ │ │ ├── TotalSizeLruDiskUsage.java │ │ │ └── UnlimitedDiskUsage.java │ │ │ ├── headers │ │ │ ├── EmptyHeadersInjector.java │ │ │ └── HeaderInjector.java │ │ │ └── sourcestorage │ │ │ ├── DatabaseSourceInfoStorage.java │ │ │ ├── NoSourceInfoStorage.java │ │ │ ├── SourceInfoStorage.java │ │ │ └── SourceInfoStorageFactory.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── gsyVideoPlayer │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── shuyu │ │ │ └── gsyvideoplayer │ │ │ └── lib │ │ │ └── CarGuo.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── issue_template.md ├── module-lite-more.sh ├── module-lite.sh └── settings.gradle ├── README.md ├── android ├── .gitignore ├── android-ndk-prof ├── build-on-travis.sh ├── compile-ijk.sh ├── contrib │ ├── .gitignore │ ├── compile-ffmpeg.sh │ ├── compile-libsoxr.sh │ ├── compile-openssl.sh │ ├── setup-as-commiter.sh │ ├── sync-mirrors.sh │ └── tools │ │ ├── do-compile-ffmpeg.sh │ │ ├── do-compile-libsoxr.sh │ │ ├── do-compile-openssl.sh │ │ └── do-detect-env.sh ├── ijk-addr2line.sh ├── ijk-ndk-stack.sh ├── ijkplayer │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── ijkplayer-arm64 │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_arm64 │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings │ │ │ └── org.eclipse.jdt.core.prefs │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_arm64 │ │ │ │ └── Pragma.java │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ ├── ffmpeg │ │ │ └── ijkmedia │ │ │ ├── project.properties │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── ijkplayer-armv5 │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_armv5 │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings │ │ │ └── org.eclipse.jdt.core.prefs │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_armv5 │ │ │ │ └── Pragma.java │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ ├── ffmpeg │ │ │ └── ijkmedia │ │ │ ├── project.properties │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── ijkplayer-armv7a │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_armv7a │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings │ │ │ └── org.eclipse.jdt.core.prefs │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_armv7a │ │ │ │ └── Pragma.java │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ ├── ffmpeg │ │ │ │ └── Android.mk │ │ │ └── ijkmedia │ │ │ ├── project.properties │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── ijkplayer-example │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── example │ │ │ │ └── ApplicationTest.java │ │ │ ├── assets │ │ │ ├── black.png │ │ │ ├── index.html │ │ │ ├── msui │ │ │ │ ├── css │ │ │ │ │ ├── sm-extend.css │ │ │ │ │ ├── sm-extend.min.css │ │ │ │ │ ├── sm.css │ │ │ │ │ └── sm.min.css │ │ │ │ └── js │ │ │ │ │ ├── sm-city-picker.js │ │ │ │ │ ├── sm-city-picker.min.js │ │ │ │ │ ├── sm-extend.js │ │ │ │ │ ├── sm-extend.min.js │ │ │ │ │ ├── sm.js │ │ │ │ │ └── sm.min.js │ │ │ └── zepto.min.js │ │ │ └── main │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings │ │ │ └── org.eclipse.jdt.core.prefs │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── example │ │ │ │ ├── activities │ │ │ │ ├── FileExplorerActivity.java │ │ │ │ ├── RecentMediaActivity.java │ │ │ │ ├── SampleMediaActivity.java │ │ │ │ ├── SettingsActivity.java │ │ │ │ └── VideoActivity.java │ │ │ │ ├── application │ │ │ │ ├── AppActivity.java │ │ │ │ └── Settings.java │ │ │ │ ├── content │ │ │ │ ├── PathCursor.java │ │ │ │ ├── PathCursorLoader.java │ │ │ │ └── RecentMediaStorage.java │ │ │ │ ├── eventbus │ │ │ │ └── FileExplorerEvents.java │ │ │ │ ├── fragments │ │ │ │ ├── FileListFragment.java │ │ │ │ ├── RecentMediaListFragment.java │ │ │ │ ├── SampleMediaListFragment.java │ │ │ │ ├── SettingsFragment.java │ │ │ │ └── TracksFragment.java │ │ │ │ ├── services │ │ │ │ └── MediaPlayerService.java │ │ │ │ └── widget │ │ │ │ ├── media │ │ │ │ ├── AndroidMediaController.java │ │ │ │ ├── FileMediaDataSource.java │ │ │ │ ├── IMediaController.java │ │ │ │ ├── IRenderView.java │ │ │ │ ├── IjkVideoView.java │ │ │ │ ├── InfoHudViewHolder.java │ │ │ │ ├── MeasureHelper.java │ │ │ │ ├── MediaPlayerCompat.java │ │ │ │ ├── SurfaceRenderView.java │ │ │ │ ├── TableLayoutBinder.java │ │ │ │ └── TextureRenderView.java │ │ │ │ └── preference │ │ │ │ └── IjkListPreference.java │ │ │ ├── jniLibs │ │ │ └── armeabi-v7a │ │ │ │ ├── libijkffmpeg.so │ │ │ │ ├── libijkplayer.so │ │ │ │ ├── libijksdl.so │ │ │ │ └── libppeasy.so │ │ │ ├── project.properties │ │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── ic_action_dark_aspect_ratio.png │ │ │ ├── ic_action_dark_filter.png │ │ │ ├── ic_action_dark_settings.png │ │ │ ├── ic_theme_description.png │ │ │ ├── ic_theme_folder.png │ │ │ └── ic_theme_play_arrow.png │ │ │ ├── drawable-mdpi │ │ │ ├── ic_action_dark_aspect_ratio.png │ │ │ ├── ic_action_dark_filter.png │ │ │ ├── ic_action_dark_settings.png │ │ │ ├── ic_theme_description.png │ │ │ ├── ic_theme_folder.png │ │ │ └── ic_theme_play_arrow.png │ │ │ ├── drawable-xhdpi │ │ │ ├── ic_action_dark_aspect_ratio.png │ │ │ ├── ic_action_dark_filter.png │ │ │ ├── ic_action_dark_settings.png │ │ │ ├── ic_theme_description.png │ │ │ ├── ic_theme_folder.png │ │ │ └── ic_theme_play_arrow.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── ic_action_dark_aspect_ratio.png │ │ │ ├── ic_action_dark_filter.png │ │ │ ├── ic_action_dark_settings.png │ │ │ ├── ic_theme_description.png │ │ │ ├── ic_theme_folder.png │ │ │ └── ic_theme_play_arrow.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── ic_action_dark_aspect_ratio.png │ │ │ ├── ic_action_dark_filter.png │ │ │ ├── ic_action_dark_settings.png │ │ │ ├── ic_theme_description.png │ │ │ ├── ic_theme_folder.png │ │ │ └── ic_theme_play_arrow.png │ │ │ ├── layout │ │ │ ├── activity_app.xml │ │ │ ├── activity_player.xml │ │ │ ├── activity_setting.xml │ │ │ ├── fragment_file_list.xml │ │ │ ├── fragment_file_list_item.xml │ │ │ ├── fragment_track_list.xml │ │ │ ├── table_media_info.xml │ │ │ ├── table_media_info_row1.xml │ │ │ ├── table_media_info_row2.xml │ │ │ ├── table_media_info_section.xml │ │ │ └── widget_toolbar.xml │ │ │ ├── menu │ │ │ ├── menu_app.xml │ │ │ └── menu_player.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-v11 │ │ │ └── styles.xml │ │ │ ├── values-v14 │ │ │ └── styles.xml │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ ├── values │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── ids.xml │ │ │ ├── strings.xml │ │ │ ├── strings_pref.xml │ │ │ ├── styles.xml │ │ │ └── themes.xml │ │ │ └── xml │ │ │ └── settings.xml │ ├── ijkplayer-exo │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── exo │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── exo │ │ │ │ ├── IjkExoMediaPlayer.java │ │ │ │ └── demo │ │ │ │ ├── EventLogger.java │ │ │ │ ├── SmoothStreamingTestMediaDrmCallback.java │ │ │ │ └── player │ │ │ │ ├── DashRendererBuilder.java │ │ │ │ ├── DemoPlayer.java │ │ │ │ ├── ExtractorRendererBuilder.java │ │ │ │ ├── HlsRendererBuilder.java │ │ │ │ └── SmoothStreamingRendererBuilder.java │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── ijkplayer-java │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings │ │ │ └── org.eclipse.jdt.core.prefs │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player │ │ │ │ ├── AbstractMediaPlayer.java │ │ │ │ ├── AndroidMediaPlayer.java │ │ │ │ ├── IMediaPlayer.java │ │ │ │ ├── ISurfaceTextureHolder.java │ │ │ │ ├── ISurfaceTextureHost.java │ │ │ │ ├── IjkLibLoader.java │ │ │ │ ├── IjkMediaCodecInfo.java │ │ │ │ ├── IjkMediaMeta.java │ │ │ │ ├── IjkMediaPlayer.java │ │ │ │ ├── IjkTimedText.java │ │ │ │ ├── MediaInfo.java │ │ │ │ ├── MediaPlayerProxy.java │ │ │ │ ├── TextureMediaPlayer.java │ │ │ │ ├── annotations │ │ │ │ ├── AccessedByNative.java │ │ │ │ └── CalledByNative.java │ │ │ │ ├── exceptions │ │ │ │ └── IjkMediaException.java │ │ │ │ ├── ffmpeg │ │ │ │ └── FFmpegApi.java │ │ │ │ ├── misc │ │ │ │ ├── AndroidMediaFormat.java │ │ │ │ ├── AndroidTrackInfo.java │ │ │ │ ├── IAndroidIO.java │ │ │ │ ├── IMediaDataSource.java │ │ │ │ ├── IMediaFormat.java │ │ │ │ ├── ITrackInfo.java │ │ │ │ ├── IjkMediaFormat.java │ │ │ │ └── IjkTrackInfo.java │ │ │ │ └── pragma │ │ │ │ ├── DebugLog.java │ │ │ │ └── Pragma.java │ │ │ ├── project.properties │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── ijkplayer-x86 │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── ijkplayer │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings │ │ │ └── org.eclipse.jdt.core.prefs │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── danmaku │ │ │ │ └── ijk │ │ │ │ └── media │ │ │ │ └── player_x86 │ │ │ │ └── Pragma.java │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ ├── ffmpeg │ │ │ │ ├── Android.mk │ │ │ │ └── include │ │ │ └── ijkmedia │ │ │ ├── project.properties │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── ijkplayer-x86_64 │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── ijkplayer_x86_64 │ │ │ │ └── ApplicationTest.java │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ ├── ffmpeg │ │ │ │ ├── Android.mk │ │ │ │ └── include │ │ │ └── ijkmedia │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ ├── settings.gradle │ └── tools │ │ ├── gradle-bintray-upload.gradle │ │ ├── gradle-mvn-push.gradle │ │ └── gradle-on-demand.gradle ├── patch-debugging-with-lldb.sh └── patches │ ├── 0001-gitignore-ignore-.externalNativeBuild.patch │ ├── 0002-gradle-upgrade-build-tool-to-2.2.0-beta2.patch │ ├── 0003-arm64-enable-debugging-with-LLDB.patch │ ├── 0003-armv5-enable-debugging-with-LLDB.patch │ ├── 0003-armv7a-enable-debugging-with-LLDB.patch │ ├── 0003-x86-enable-debugging-with-LLDB.patch │ ├── 0003-x86_64-enable-debugging-with-LLDB.patch │ ├── 0004-arm64-link-prebuilt-staic-libraries-of-ffmepg.patch │ ├── 0004-armv5-link-prebuilt-staic-libraries-of-ffmepg.patch │ ├── 0004-armv7a-link-prebuilt-staic-libraries-of-ffmepg.patch │ ├── 0004-x86-link-prebuilt-staic-libraries-of-ffmepg.patch │ └── 0004-x86_64-link-prebuilt-staic-libraries-of-ffmepg.patch ├── ios ├── .gitignore ├── IJKMediaDemo │ ├── IJKMediaDemo.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── IJKMediaDemo │ │ ├── AppIcons.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── Barcode.h │ │ ├── Barcode.m │ │ ├── Default-568h@2x.png │ │ ├── Default.png │ │ ├── Default@2x.png │ │ ├── IJKAppDelegate.h │ │ ├── IJKAppDelegate.m │ │ ├── IJKCommon.h │ │ ├── IJKDemoHistory.h │ │ ├── IJKDemoHistory.m │ │ ├── IJKDemoInputURLViewController.h │ │ ├── IJKDemoInputURLViewController.m │ │ ├── IJKDemoInputURLViewController.xib │ │ ├── IJKDemoLocalFolderViewController.h │ │ ├── IJKDemoLocalFolderViewController.m │ │ ├── IJKDemoMainViewController.h │ │ ├── IJKDemoMainViewController.m │ │ ├── IJKDemoMainViewController.xib │ │ ├── IJKDemoSampleViewController.h │ │ ├── IJKDemoSampleViewController.m │ │ ├── IJKDemoSampleViewController.xib │ │ ├── IJKMediaControl.h │ │ ├── IJKMediaControl.m │ │ ├── IJKMediaDemo-Info.plist │ │ ├── IJKMediaDemo-Prefix.pch │ │ ├── IJKMoviePlayerViewController.h │ │ ├── IJKMoviePlayerViewController.m │ │ ├── IJKMoviePlayerViewController.xib │ │ ├── IJKQRCodeScanViewController.h │ │ ├── IJKQRCodeScanViewController.m │ │ ├── IJKQRCodeScanViewController.xib │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── LaunchImage.launchimage │ │ │ │ ├── Contents.json │ │ │ │ ├── Default-568h@2x.png │ │ │ │ ├── Default.png │ │ │ │ └── Default@2x.png │ │ ├── LaunchScreen.xib │ │ ├── en.lproj │ │ │ └── InfoPlist.strings │ │ └── main.m │ └── XCAssets │ │ ├── AppIcons.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── icapp_ipad_ios5_72pt.png │ │ │ ├── icapp_ipad_ios5_72pt@2x.png │ │ │ ├── icapp_ipad_ios7_76pt.png │ │ │ ├── icapp_ipad_ios7_76pt@2x.png │ │ │ ├── icapp_iphone_ios5_57pt.png │ │ │ ├── icapp_iphone_ios5_57pt@2x.png │ │ │ ├── icapp_iphone_ios7_60pt@2x.png │ │ │ ├── icapp_iphone_ios7_60pt@3x.png │ │ │ ├── icset_ipad_ios5_50pt.png │ │ │ ├── icset_ipad_ios5_50pt@2x.png │ │ │ ├── icset_ipad_ios7_40pt.png │ │ │ ├── icset_ipad_ios7_40pt@2x.png │ │ │ ├── icset_ipad_iosu_29pt.png │ │ │ ├── icset_ipad_iosu_29pt@2x.png │ │ │ ├── icset_iphone_ios7_40pt@2x.png │ │ │ ├── icset_iphone_ios7_40pt@3x.png │ │ │ ├── icset_iphone_iosu_29pt.png │ │ │ ├── icset_iphone_iosu_29pt@2x.png │ │ │ └── icset_iphone_iosu_29pt@3x.png │ │ ├── LaunchImages.xcassets │ │ └── LaunchImage.launchimage │ │ │ ├── Contents.json │ │ │ ├── iphone_ios5_320_480.png │ │ │ ├── iphone_ios5_640_1136.png │ │ │ ├── iphone_ios5_640_960.png │ │ │ ├── iphone_ios7_640_1136.png │ │ │ └── iphone_ios7_640_960.png │ │ └── MoviePlayerImages.xcassets │ │ └── MoviePlayer │ │ ├── btn_player_back_highlighted.imageset │ │ ├── Contents.json │ │ ├── btn_player_back_highlighted.png │ │ └── btn_player_back_highlighted@2x.png │ │ ├── btn_player_pause.imageset │ │ ├── Contents.json │ │ ├── btn_player_pause.png │ │ └── btn_player_pause@2x.png │ │ ├── btn_player_play.imageset │ │ ├── Contents.json │ │ ├── btn_player_play.png │ │ └── btn_player_play@2x.png │ │ ├── player_bottom_control_bg.imageset │ │ ├── Contents.json │ │ ├── player_bottom_control_bg.png │ │ └── player_bottom_control_bg@2x.png │ │ └── player_top_control_bg.imageset │ │ ├── Contents.json │ │ ├── player_top_control_bg.png │ │ └── player_top_control_bg@2x.png ├── IJKMediaPlayer │ ├── IJKMediaFramework │ │ ├── IJKMediaFramework.h │ │ └── Info.plist │ ├── IJKMediaFrameworkTests │ │ ├── IJKMediaFrameworkTests.m │ │ └── Info.plist │ ├── IJKMediaFrameworkWithSSL.plist │ ├── IJKMediaFrameworkWithSSL │ │ └── IJKMediaFrameworkWithSSL.h │ ├── IJKMediaPlayer.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── IJKMediaPlayer │ │ ├── IJKAVMoviePlayerController.h │ │ ├── IJKAVMoviePlayerController.m │ │ ├── IJKAVPlayerLayerView.h │ │ ├── IJKAVPlayerLayerView.m │ │ ├── IJKAudioKit.h │ │ ├── IJKAudioKit.m │ │ ├── IJKDeviceModel.h │ │ ├── IJKDeviceModel.m │ │ ├── IJKFFMonitor.h │ │ ├── IJKFFMonitor.m │ │ ├── IJKFFMoviePlayerController.h │ │ ├── IJKFFMoviePlayerController.m │ │ ├── IJKFFMoviePlayerDef.h │ │ ├── IJKFFMoviePlayerDef.m │ │ ├── IJKFFOptions.h │ │ ├── IJKFFOptions.m │ │ ├── IJKKVOController.h │ │ ├── IJKKVOController.m │ │ ├── IJKMPMoviePlayerController.h │ │ ├── IJKMPMoviePlayerController.m │ │ ├── IJKMediaModule.h │ │ ├── IJKMediaModule.m │ │ ├── IJKMediaPlayback.h │ │ ├── IJKMediaPlayback.m │ │ ├── IJKMediaPlayer-Prefix.pch │ │ ├── IJKMediaPlayer.h │ │ ├── IJKMediaUtils.h │ │ ├── IJKMediaUtils.m │ │ ├── IJKNotificationManager.h │ │ ├── IJKNotificationManager.m │ │ ├── NSString+IJKMedia.h │ │ ├── NSString+IJKMedia.m │ │ └── ijkmedia │ │ ├── ijkplayer │ │ └── ios │ │ │ ├── ijkplayer_ios.h │ │ │ ├── ijkplayer_ios.m │ │ │ └── pipeline │ │ │ ├── IJKVideoToolBox.h │ │ │ ├── IJKVideoToolBox.m │ │ │ ├── IJKVideoToolBoxAsync.h │ │ │ ├── IJKVideoToolBoxAsync.m │ │ │ ├── IJKVideoToolBoxSync.h │ │ │ ├── IJKVideoToolBoxSync.m │ │ │ ├── ffpipeline_ios.c │ │ │ ├── ffpipeline_ios.h │ │ │ ├── ffpipenode_ios_videotoolbox_vdec.h │ │ │ ├── ffpipenode_ios_videotoolbox_vdec.m │ │ │ └── h264_sps_parser.h │ │ └── ijksdl │ │ └── ios │ │ ├── IJKSDLAudioKit.h │ │ ├── IJKSDLAudioKit.m │ │ ├── IJKSDLAudioQueueController.h │ │ ├── IJKSDLAudioQueueController.m │ │ ├── IJKSDLAudioUnitController.h │ │ ├── IJKSDLAudioUnitController.m │ │ ├── IJKSDLGLView.h │ │ ├── IJKSDLGLView.m │ │ ├── IJKSDLHudViewCell.h │ │ ├── IJKSDLHudViewCell.m │ │ ├── IJKSDLHudViewController.h │ │ ├── IJKSDLHudViewController.m │ │ ├── ijksdl_aout_ios_audiounit.h │ │ ├── ijksdl_aout_ios_audiounit.m │ │ ├── ijksdl_ios.h │ │ ├── ijksdl_thread_ios.h │ │ ├── ijksdl_thread_ios.m │ │ ├── ijksdl_vout_ios_gles2.h │ │ ├── ijksdl_vout_ios_gles2.m │ │ ├── ijksdl_vout_overlay_videotoolbox.h │ │ └── ijksdl_vout_overlay_videotoolbox.m ├── IJKMediaPodDemo │ ├── .gitignore │ ├── IJKMediaPodDemo.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── IJKMediaPodDemo │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.xib │ │ │ └── Main.storyboard │ │ ├── Images.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── Info.plist │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ └── main.m │ ├── IJKMediaPodDemoTests │ │ ├── IJKMediaPodDemoTests.m │ │ └── Info.plist │ └── Podfile ├── build │ └── libppeasy.a ├── compile-ffmpeg.sh ├── compile-openssl.sh └── tools │ ├── avconfig.h │ ├── config.h │ ├── do-compile-ffmpeg.sh │ ├── do-compile-openssl.sh │ └── ffversion.h ├── ppeasyplayer ├── App.vue ├── main.js ├── manifest.json ├── nativeplugins │ └── PPeasy-P2P │ │ ├── android │ │ ├── libs │ │ │ ├── arm64-v8a │ │ │ │ └── libppeasy.so │ │ │ ├── armeabi-v7a │ │ │ │ └── libppeasy.so │ │ │ ├── armeabi │ │ │ │ └── libppeasy.so │ │ │ ├── x86 │ │ │ │ └── libppeasy.so │ │ │ └── x86_64 │ │ │ │ └── libppeasy.so │ │ └── uniplugin_richalert.aar │ │ ├── ios │ │ ├── libUniPluginRichAlert.a │ │ └── libppeasy.a │ │ └── package.json ├── pages.json ├── pages │ └── index │ │ └── index.vue ├── ppeasyplayer.rar ├── static │ └── logo.png ├── uni.scss └── unpackage │ └── dist │ ├── build │ └── app-plus │ │ ├── __uniappchooselocation.html │ │ ├── __uniappes6.js │ │ ├── __uniappmarker@3x.png │ │ ├── __uniappopenlocation.html │ │ ├── __uniapppicker.html │ │ ├── __uniappscan.html │ │ ├── __uniappsuccess.png │ │ ├── __uniapptabbar.html │ │ ├── __uniappview.html │ │ ├── app-config.js │ │ ├── app-service.js │ │ ├── app-view.js │ │ ├── manifest.json │ │ ├── pages │ │ └── index │ │ │ └── index.js │ │ └── static │ │ └── logo.png │ └── dev │ └── app-plus │ ├── __uniappchooselocation.html │ ├── __uniappes6.js │ ├── __uniappmarker@3x.png │ ├── __uniappopenlocation.html │ ├── __uniapppicker.html │ ├── __uniappscan.html │ ├── __uniappsuccess.png │ ├── __uniapptabbar.html │ ├── __uniappview.html │ ├── app-config.js │ ├── app-service.js │ ├── app-view.js │ ├── manifest.json │ ├── pages │ └── index │ │ └── index.js │ └── static │ └── logo.png └── 苹果CMS10 ├── 1 └── maccms10.zip /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [CarGuo] 4 | custom: https://raw.githubusercontent.com/CarGuo/GSYGithubAppFlutter/master/thanks.jpg 5 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | .DS_Store 5 | /build 6 | /.idea 7 | /captures 8 | .externalNativeBuild 9 | *.apk 10 | keyid -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/libs/arm64-v8a/libppeasy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/libs/arm64-v8a/libppeasy.so -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/libs/armeabi-v7a/libppeasy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/libs/armeabi-v7a/libppeasy.so -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/libs/armeabi/libppeasy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/libs/armeabi/libppeasy.so -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/libs/x86/libppeasy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/libs/x86/libppeasy.so -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/libs/x86_64/libppeasy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/libs/x86_64/libppeasy.so -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/EmptyActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import androidx.appcompat.app.AppCompatActivity; 6 | import android.widget.Button; 7 | 8 | import butterknife.BindView; 9 | import butterknife.ButterKnife; 10 | import butterknife.OnClick; 11 | 12 | public class EmptyActivity extends AppCompatActivity { 13 | 14 | @BindView(R.id.jump_other) 15 | Button jumpOther; 16 | 17 | @Override 18 | protected void onCreate(Bundle savedInstanceState) { 19 | super.onCreate(savedInstanceState); 20 | setContentView(R.layout.activity_empty); 21 | ButterKnife.bind(this); 22 | } 23 | 24 | @OnClick(R.id.jump_other) 25 | public void onViewClicked() { 26 | startActivity(new Intent(this, EmptyActivity.class)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/exo/GSYExoModel.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.exo; 2 | 3 | import com.shuyu.gsyvideoplayer.model.GSYModel; 4 | 5 | import java.io.File; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * Created by guoshuyu on 2018/5/16. 12 | * 自定义列表数据model 13 | */ 14 | 15 | public class GSYExoModel extends GSYModel { 16 | 17 | List urls = new ArrayList<>(); 18 | 19 | public GSYExoModel(List urls, Map mapHeadData, boolean loop, float speed, boolean cache, File cachePath) { 20 | super("", mapHeadData, loop, speed, cache, cachePath, ""); 21 | this.urls = urls; 22 | } 23 | 24 | public List getUrls() { 25 | return urls; 26 | } 27 | 28 | public void setUrls(List urls) { 29 | this.urls = urls; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/holder/RecyclerItemBaseHolder.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.holder; 2 | 3 | import android.view.View; 4 | 5 | import androidx.recyclerview.widget.RecyclerView; 6 | 7 | /** 8 | * Created by shuyu on 2016/12/3. 9 | */ 10 | 11 | public class RecyclerItemBaseHolder extends RecyclerView.ViewHolder { 12 | 13 | RecyclerView.Adapter recyclerBaseAdapter; 14 | 15 | public RecyclerItemBaseHolder(View itemView) { 16 | super(itemView); 17 | } 18 | 19 | public RecyclerView.Adapter getRecyclerBaseAdapter() { 20 | return recyclerBaseAdapter; 21 | } 22 | 23 | public void setRecyclerBaseAdapter(RecyclerView.Adapter recyclerBaseAdapter) { 24 | this.recyclerBaseAdapter = recyclerBaseAdapter; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/model/SwitchVideoModel.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.model; 2 | 3 | /** 4 | * Created by shuyu on 2016/12/7. 5 | */ 6 | 7 | public class SwitchVideoModel { 8 | private String url; 9 | private String name; 10 | 11 | public SwitchVideoModel(String name, String url) { 12 | this.name = name; 13 | this.url = url; 14 | } 15 | 16 | public String getUrl() { 17 | return url; 18 | } 19 | 20 | public void setUrl(String url) { 21 | this.url = url; 22 | } 23 | 24 | public String getName() { 25 | return name; 26 | } 27 | 28 | public void setName(String name) { 29 | this.name = name; 30 | } 31 | 32 | @Override 33 | public String toString() { 34 | return this.name; 35 | } 36 | } -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/model/VideoModel.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.model; 2 | 3 | /** 4 | * Created by shuyu on 2016/11/11. 5 | */ 6 | 7 | public class VideoModel { 8 | } 9 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/utils/floatUtil/FloatView.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.utils.floatUtil; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * Created by yhao on 17-11-14. 7 | * https://github.com/yhaolpz 8 | */ 9 | 10 | abstract class FloatView { 11 | 12 | abstract void setSize(int width, int height); 13 | 14 | abstract void setView(View view); 15 | 16 | abstract void setGravity(int gravity, int xOffset, int yOffset); 17 | 18 | abstract void init(); 19 | 20 | abstract void dismiss(); 21 | 22 | void updateXY(int x, int y) { 23 | } 24 | 25 | void updateX(int x) { 26 | } 27 | 28 | void updateY(int y) { 29 | } 30 | 31 | int getX() { 32 | return 0; 33 | } 34 | 35 | int getY() { 36 | return 0; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/utils/floatUtil/IFloatWindow.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.utils.floatUtil; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * Created by yhao on 2017/12/22. 7 | * https://github.com/yhaolpz 8 | */ 9 | 10 | public abstract class IFloatWindow { 11 | public abstract void show(); 12 | 13 | public abstract void hide(); 14 | 15 | public abstract int getX(); 16 | 17 | public abstract int getY(); 18 | 19 | public abstract void updateX(int x); 20 | 21 | public abstract void updateX(@Screen.screenType int screenType,float ratio); 22 | 23 | public abstract void updateY(int y); 24 | 25 | public abstract void updateY(@Screen.screenType int screenType,float ratio); 26 | 27 | public abstract View getView(); 28 | 29 | abstract void dismiss(); 30 | } 31 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/utils/floatUtil/LifecycleListener.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.utils.floatUtil; 2 | 3 | /** 4 | * Created by yhao on 2017/12/22. 5 | * https://github.com/yhaolpz 6 | */ 7 | 8 | interface LifecycleListener { 9 | 10 | void onShow(); 11 | 12 | void onHide(); 13 | 14 | void onPostHide(); 15 | } 16 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/utils/floatUtil/MoveType.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.utils.floatUtil; 2 | 3 | import androidx.annotation.IntDef; 4 | 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | 8 | /** 9 | * Created by yhao on 2017/12/22. 10 | * https://github.com/yhaolpz 11 | */ 12 | 13 | public class MoveType { 14 | static final int fixed = 0; 15 | public static final int free = 1; 16 | public static final int active = 2; 17 | public static final int slide = 3; 18 | public static final int back = 4; 19 | 20 | @IntDef({fixed, free, active, slide, back}) 21 | @Retention(RetentionPolicy.SOURCE) 22 | @interface MOVE_TYPE { 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/utils/floatUtil/PermissionListener.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.utils.floatUtil; 2 | 3 | /** 4 | * Created by yhao on 2017/11/14. 5 | * https://github.com/yhaolpz 6 | */ 7 | interface PermissionListener { 8 | void onSuccess(); 9 | 10 | void onFail(); 11 | } 12 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/java/com/example/gsyvideoplayer/utils/floatUtil/Screen.java: -------------------------------------------------------------------------------- 1 | package com.example.gsyvideoplayer.utils.floatUtil; 2 | 3 | import androidx.annotation.IntDef; 4 | 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | 8 | /** 9 | * Created by yhao on 2017/12/23. 10 | * https://github.com/yhaolpz 11 | */ 12 | 13 | public class Screen { 14 | public static final int width = 0; 15 | public static final int height = 1; 16 | 17 | @IntDef({width, height}) 18 | @Retention(RetentionPolicy.SOURCE) 19 | @interface screenType { 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable-xhdpi/custom_enlarge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/src/main/res/drawable-xhdpi/custom_enlarge.png -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable-xhdpi/custom_shrink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SeaHaige/pkplayer/a43b5df685f0a5676fe5db438a0c1dc7b150b4e3/GSYVideoPlayer-master/app/src/main/res/drawable-xhdpi/custom_shrink.png -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable/bg_wiht_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable/dialog_btn_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable/video_new_seekbar_thumb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable/video_new_volume_progress_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable/video_seek_new_thumb_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/drawable/video_seek_new_thumb_press.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /GSYVideoPlayer-master/app/src/main/res/layout/activity_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 |