ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay为基础,若是只是使用它进行播放,集成也较为简单,使用也和MediaPlayer差很少,可是要定制化需求,就有必定的门槛高度。支持软硬编解码,支持倍速播放,能够定制化集成须要的功能,集成占用体积也很小,更详细的解释参看下面官方介绍:html
VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各种流媒体协议。java
Plays all formatsnode
MPEG-1/2, DivX® (1/2/3/4/5/6), MPEG-4 ASP, XviD, 3ivX D4, H.261, H.263 / H.263i, H.264 / MPEG-4 AVC, Cinepak, Theora, Dirac / VC-2, MJPEG (A/B), WMV 1/2, WMV 3 / WMV-9 / VC-1, Sorenson 1/3, DV, On2 VP3/VP5/VP6, Indeo Video v3 (IV32), Real Video (1/2/3/4).android
MPEG Layer 1/2, MP3 - MPEG Layer 3, AAC - MPEG-4 part3, Vorbis, AC3 - A/52, E-AC-3, MLP / TrueHD>3, DTS, WMA 1/2, WMA 3, FLAC, ALAC, Speex, Musepack / MPC, ATRAC 3, Wavpack, Mod, TrueAudio, APE, Real Audio, Alaw/µlaw, AMR (3GPP), MIDI, LPCM, ADPCM, QCELP, DV Audio, QDM2/QDMC, MACE.ios
DVD, Text files (MicroDVD, SubRIP, SubViewer, SSA1-5, SAMI, VPlayer), Closed captions, Vobsub, Universal Subtitle Format (USF), SVCD / CVD, DVB, OGM, CMML, Kate.git
ID3 tags, APEv2, Vorbis comment.github
Advanced formatswindows
Input Mediaapi
UDP/RTP Unicast, UDP/RTP Multicast, HTTP / FTP, MMS, TCP/RTP Unicast, DCCP/RTP Unicast, File, DVD Video, Video CD / VCD, SVCD, Audio CD (no DTS-CD), DVB (Satellite, Digital TV, Cable TV), MPEG encoder, Video acquisition.网络
Input Formats
MPEG (ES,PS,TS,PVA,MP3), AVI, ASF / WMV / WMA, MP4 / MOV / 3GP, OGG / OGM / Annodex, Matroska (MKV), Real, WAV (including DTS), Raw Audio: DTS, AAC, AC3/A52, Raw DV, FLAC, FLV (Flash), MXF, Nut, Standard MIDI / SMF, Creative™ Voice.
Miscellaneous
SAP/SDP announces, Bonjour protocol, Mozilla/Firefox plugin, ActiveX plugin, SVCD Menus, Localization, CD-Text, CDDB CD info, IGMPv3, IPv6, MLDv2, CPU acceleration.
SmartPlayer是大牛直播SDK(Github)开发的全自研跨平台(windows/android/iOS)流媒体内核,支持RTSP、RTMP,功能齐全、高稳定、超低延迟,超低资源占用,适用于安防、教育、单兵指挥等行业。如不单独说明,系Windows、Android、iOS全平台支持。
ExoPlayer 是google推出的开源播放器,主要是集成了Android 提供的一套解码系统来解析视频和音频,将MediaCodec封装地很是完善,造成了一个性能优越,播放稳定性较好的一个开发播放器。
ExoPlayer is an application level media player for Android. It provides an alternative to Android’s MediaPlayer API for playing audio and video both locally and over the Internet. ExoPlayer supports features not currently supported by Android’s MediaPlayer API, including DASH and SmoothStreaming adaptive playbacks. Unlike the MediaPlayer API, ExoPlayer is easy to customize and extend, and can be updated through Play Store application updates.
Documentation
Using ExoPlayer
Via jCenter
The easiest way to get started using ExoPlayer is by including the following in your project's build.gradle
file:
compile 'com.google.android.exoplayer:exoplayer:rX.X.X'
where rX.X.X
is the your preferred version. For the latest version, see the project's Releases. For more details, see the project on Bintray.
As source
ExoPlayer can also be built from source using Gradle. You can include it as a dependent project like so:
// settings.gradle include ':app', ':..:ExoPlayer:library' // app/build.gradle dependencies { compile project(':..:ExoPlayer:library') }
As a jar
If you want to use ExoPlayer as a jar, run:
./gradlew jarRelease
and copy library.jar
to the libs folder of your new project.
ijkplayer结构比较相对比较清晰,可扩展性较差,基本上没有提供modules供开发者二次开发,官方更新比较慢,值得欣慰的是,好多开发者基于ijkplayer作了扩展,填了很是多的坑,往上资料很是多;
VLC对点播的支持比较好,可是工程庞大,接入或二次开发难度比较大;
SmartPlayer对RTSP和RTMP直播播放支持很是优秀,毫秒级延迟,稳定性比较好;
ExoPlayer不太适合直播,视频解码没法接入软解,可扩展性通常,并且只支持Android平台。