├── Android
├── AndroidManifest.xml
├── ant.properties
├── assets
│ ├── hook.js
│ ├── index.html
│ └── zepto.min.js
├── bin
│ └── m3u8player-debug.apk
├── build.xml
├── html
│ ├── index.html
│ └── play.html
├── libs
│ └── armeabi-v7a
│ │ └── libppeasy.so
├── local.properties
├── proguard-project.txt
├── project.properties
├── res
│ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ ├── drawable-ldpi
│ │ └── ic_launcher.png
│ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ ├── drawable-xhdpi
│ │ └── ic_launcher.png
│ ├── layout
│ │ └── main.xml
│ └── values
│ │ └── strings.xml
└── src
│ └── com
│ └── ppeasy
│ └── m3u8player
│ ├── VideoViewEx.java
│ └── m3u8player.java
├── HLS.js
├── hls.min.js
└── index.html
├── README.md
├── flashls-dev
├── .actionScriptProperties
├── .editorconfig
├── .flexLibProperties
├── .gitignore
├── .project
├── API.md
├── LICENSE
├── README.md
├── bin
│ ├── debug
│ │ ├── flashls.swc
│ │ ├── flashlsChromeless.swf
│ │ ├── flashlsFlowPlayer.swf
│ │ ├── flashlsOSMF.swc
│ │ └── flashlsOSMF.swf
│ └── release
│ │ ├── flashls.swc
│ │ ├── flashlsChromeless.swf
│ │ ├── flashlsFlowPlayer.swf
│ │ ├── flashlsOSMF.swc
│ │ └── flashlsOSMF.swf
├── build
│ ├── add-opt-in.py
│ ├── build.bat
│ ├── build.sh
│ └── build_chromeless.sh
├── docs
│ └── 10.1.1.300.5957.pdf
├── examples
│ ├── chromeless
│ │ ├── flashlsAPI.js
│ │ ├── index.html
│ │ ├── jQuery.min.js
│ │ └── metrics.html
│ ├── flowplayer
│ │ ├── flowplayer-3.2.12.min.js
│ │ ├── flowplayer.controls.swf
│ │ ├── flowplayer.ipad-3.2.12.min.js
│ │ ├── flowplayer.swf
│ │ ├── index.html
│ │ └── jQuery.min.js
│ ├── libs
│ │ ├── JSLoaderFragment.js
│ │ ├── JSLoaderPlaylist.js
│ │ ├── ParsedQueryString.js
│ │ ├── canvas.js
│ │ ├── js2flash.js
│ │ ├── jsonpack.js
│ │ ├── metrics.js
│ │ └── swfobject.js
│ └── osmf
│ │ ├── GrindPlayer.html
│ │ ├── GrindPlayer.swf
│ │ ├── StrobeMediaPlayback.html
│ │ ├── StrobeMediaPlayback.swf
│ │ └── images
│ │ ├── adobe-lq.png
│ │ ├── osmf_horizontal_red.png
│ │ └── poster.png
├── lib
│ ├── blooddy_crypto.swc
│ ├── flowplayer
│ │ ├── flowplayer-classes.xml
│ │ └── flowplayer.swc
│ └── osmf
│ │ ├── OSMF.swc
│ │ └── exclude-sources.xml
└── src
│ └── org
│ └── mangui
│ ├── basic
│ └── Player.as
│ ├── chromeless
│ ├── ChromelessPlayer.as
│ └── StatsHandler.as
│ ├── flowplayer
│ ├── HLSPluginFactory.as
│ └── HLSStreamProvider.as
│ ├── hls
│ ├── HLS.as
│ ├── HLSSettings.as
│ ├── constant
│ │ ├── HLSLoaderTypes.as
│ │ ├── HLSMaxLevelCappingMode.as
│ │ ├── HLSPlayStates.as
│ │ ├── HLSSeekMode.as
│ │ ├── HLSSeekStates.as
│ │ └── HLSTypes.as
│ ├── controller
│ │ ├── AudioTrackController.as
│ │ ├── BufferThresholdController.as
│ │ ├── FPSController.as
│ │ └── LevelController.as
│ ├── demux
│ │ ├── AACDemuxer.as
│ │ ├── AVCC.as
│ │ ├── AudioFrame.as
│ │ ├── DemuxHelper.as
│ │ ├── Demuxer.as
│ │ ├── ExpGolomb.as
│ │ ├── ID3.as
│ │ ├── ID3Tag.as
│ │ ├── MP3Demuxer.as
│ │ ├── Nalu.as
│ │ ├── PES.as
│ │ ├── SPSInfo.as
│ │ ├── TSDemuxer.as
│ │ └── VideoFrame.as
│ ├── event
│ │ ├── HLSError.as
│ │ ├── HLSEvent.as
│ │ ├── HLSLoadMetrics.as
│ │ ├── HLSMediatime.as
│ │ └── HLSPlayMetrics.as
│ ├── flv
│ │ └── FLVTag.as
│ ├── loader
│ │ ├── AltAudioFragmentLoader.as
│ │ ├── AltAudioLevelLoader.as
│ │ ├── FragmentLoader.as
│ │ └── LevelLoader.as
│ ├── model
│ │ ├── AudioTrack.as
│ │ ├── Fragment.as
│ │ ├── FragmentData.as
│ │ └── Level.as
│ ├── playlist
│ │ ├── AltAudioTrack.as
│ │ ├── DataUri.as
│ │ └── Manifest.as
│ ├── stream
│ │ ├── HLSNetStream.as
│ │ ├── HLSNetStreamClient.as
│ │ └── StreamBuffer.as
│ └── utils
│ │ ├── AES.as
│ │ ├── DateUtil.as
│ │ ├── FastAESKey.as
│ │ ├── Hex.as
│ │ ├── JSURLLoader.as
│ │ ├── JSURLStream.as
│ │ ├── Log.as
│ │ ├── PTS.as
│ │ ├── Params2Settings.as
│ │ ├── ScaleVideo.as
│ │ └── StringUtil.as
│ └── osmf
│ └── plugins
│ ├── HLSDynamicPlugin.as
│ ├── HLSMediaElement.as
│ ├── HLSPlugin.as
│ ├── loader
│ ├── HLSLoadFromDocumentElement.as
│ ├── HLSLoaderBase.as
│ └── HLSNetLoader.as
│ ├── traits
│ ├── HLSAlternativeAudioTrait.as
│ ├── HLSBufferTrait.as
│ ├── HLSClosedCaptionsState.as
│ ├── HLSClosedCaptionsTrait.as
│ ├── HLSDisplayObjectTrait.as
│ ├── HLSDynamicStreamTrait.as
│ ├── HLSMediaTraitType.as
│ ├── HLSNetStreamLoadTrait.as
│ ├── HLSPlayTrait.as
│ ├── HLSSeekTrait.as
│ └── HLSTimeTrait.as
│ └── utils
│ └── ErrorManager.as
├── index.html
├── ios-plat
├── m3u8player.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcuserdata
│ │ │ └── dzy.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata
│ │ └── dzy.xcuserdatad
│ │ ├── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
│ │ └── xcschemes
│ │ ├── m3u8player.xcscheme
│ │ └── xcschememanagement.plist
├── m3u8player
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── ViewController.h
│ ├── ViewController.m
│ ├── index.html
│ ├── libppeasy.a
│ ├── main.mm
│ ├── 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
├── m3u8playerTests
│ ├── Info.plist
│ └── m3u8playerTests.m
└── m3u8playerUITests
│ ├── Info.plist
│ └── m3u8playerUITests.m
└── nginx-rtmp
├── FAQ nginx-win version.txt
├── Readme nginx-win version.txt
├── Tweak-Optimize tcpip parameters for nginx connections.reg
├── conf
├── EBLB
│ ├── iworkcomproto.lua
│ ├── upstream_EBLB_with_IWCP.txt
│ ├── upstream_candc.conf
│ ├── upstreamcontrol.lua
│ └── upstreamstatus.lua
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── mysite.rules
├── naxsi_core.rules
├── nginx-org.conf
├── nginx-simple-WAF.conf
├── nginx-win.conf
├── nginx.conf
├── php-opcache-example.ini
├── php-xcache-example.ini
├── scgi_params
├── uwsgi_params
├── vhts
│ ├── VHTS.txt
│ ├── vtsvalues-eop.js
│ └── vtsvalues.js
└── win-utf
├── contrib
├── README
├── geo2nginx.pl
├── unicode2nginx
│ ├── koi-utf
│ ├── unicode-to-nginx.pl
│ └── win-utf
└── vim
│ ├── ftdetect
│ └── nginx.vim
│ ├── indent
│ └── nginx.vim
│ └── syntax
│ └── nginx.vim
├── docs
├── LICENSE
├── OpenSSL.LICENSE
├── PCRE.LICENCE
├── README
└── zlib.LICENSE
├── html
├── 50x.html
└── index.html
├── logs
├── access.log
├── error.log
└── nginx.pid
├── lua51.dll
├── nginx-rtmp-module
└── stat.xsl
├── nginx.exe
├── nginx_basic.exe
└── tmp
└── app
├── test-0.ts
├── test-1.ts
├── test-10.ts
├── test-11.ts
├── test-12.ts
├── test-2.ts
├── test-3.ts
├── test-4.ts
├── test-5.ts
├── test-6.ts
├── test-7.ts
├── test-8.ts
├── test-9.ts
└── test.m3u8
/Android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
19 |
20 |
21 |
22 |
23 |
24 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Android/ant.properties:
--------------------------------------------------------------------------------
1 | # This file is used to override default values used by the Ant build system.
2 | #
3 | # This file must be checked into Version Control Systems, as it is
4 | # integral to the build system of your project.
5 |
6 | # This file is only used by the Ant script.
7 |
8 | # You can use this to override default values such as
9 | # 'source.dir' for the location of your java source folder and
10 | # 'out.dir' for the location of your output folder.
11 |
12 | # You can also use it define how the release builds are signed by declaring
13 | # the following properties:
14 | # 'key.store' for the location of your keystore and
15 | # 'key.alias' for the name of the key to use.
16 | # The password will be asked during the build when you use the 'release' target.
17 |
18 |
--------------------------------------------------------------------------------
/Android/assets/hook.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | fetch('http://127.0.0.1:1960/Close?').then(function(res){
4 | if (res.ok) {
5 | var inth=null;
6 | inth=setInterval(function (){
7 | var addf=0;
8 | for(var k=0;k
2 |
3 |
4 |
5 |
17 |
20 |
21 |
34 |
35 |
36 |
输入域名
37 |
38 |
39 |
M3U8Player
40 |
41 |
42 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |