ijkPlayer

IjkPlayer is an open source project maintained by BiliBili. It is a player software developed based on FFMPEG and supports Android and iOS platforms. The whole ijkPlayer is based on FFPlay. Use is similar to MediaPlayer, but there is a high threshold for customizing requirements. Support hard and soft codec, support double speed playback, can be customized integration required functions, integration occupies a small volume, see the following official introduction for more detailed explanation:

Features

  • Common
  • remove rarely used ffmpeg components to reduce binary size config/module-lite.sh
  • workaround for some buggy online video.
  • Android
  • platform: API 9~23
  • cpu: ARMv7a, ARM64v8a, x86 (ARMv5 is not tested on real devices)
  • api: MediaPlayer-like
  • Video-output: NativeWindow, OpenGL ES 2.0
  • audio-output: AudioTrack, OpenSL ES
  • Hw-decoder: MediaCodec (API 16+, Android 4.1+)
  • alternative-backend: android.media.MediaPlayer, ExoPlayer
  • iOS
  • Platform: iOS 7.0 ~ 10.2 x
  • cpu: armv7, arm64, i386, x86_64, (armv7s is obselete)
  • api: MediaPlayer.framework-like
  • Video – the output: OpenGL ES 2.0
  • audio-output: AudioQueue, AudioUnit
  • hw-decoder: VideoToolbox (iOS 8+)
  • alternative-backend: AVFoundation.Framework.AVPlayer, MediaPlayer.Framework.MPMoviePlayerControlelr (obselete since iOS 8)

VLC Media Player

VLC is a free, open source, cross-platform multimedia player and framework that can play most multimedia files, as well as DVDS, audio CDS, VCDS and various streaming media protocols.

Plays all formats

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).

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.

DVD, Text files (MicroDVD, SubRIP, SubViewer, SSA1-5, SAMI, VPlayer), Closed captions, Vobsub, Universal Subtitle Format (USF), SVCD / CVD, DVB, OGM, CMML, Kate.

ID3 tags, APEv2, Vorbis comment.

Advanced formats

 Input Media

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

SmartPlayer is a self-developed cross-platform (Windows/Android /iOS) streaming media kernel developed by Github, which supports RTSP and RTMP. It has complete functions, high stability, ultra-low latency and ultra-low resource occupancy. It is suitable for security, education, individual command and other industries. If not specified separately, it is supported by Windows, Android and iOS platforms.

  • [Supporting playback protocols]RTSP, RTMP;
  • [Multi-instance play] Supports multi-instance play.
  • [Event callback] Supports callback of network status and buffer status.
  • [Video format] support H.265, H.264, in addition, also support RTSP MJPEG playback;
  • [Audio format] AAC/PCMA/PCMU;
  • [H.264/H.265 soft decoding] Supports H.264/H.265 soft decoding;
  • [H.264 hard decoding]Windows/Android/iOS support certain models of H.264 hard decoding;
  • [H.265 hard solution]Windows/Android/iOS support certain models H.265 hard solution;
  • [H.264/H.265 hard decoding]Android supports Surface mode hard decoding and normal mode hard decoding;
  • [RTSP mode setting] Supports RTSP TCP/UDP mode setting.
  • [AUTOMATIC RTSP TCP/UDP switchover] Supports automatic RTSP TCP/UDP switchover.
  • [RTSP Timeout setting] The RTSP timeout setting is supported, in seconds.
  • [RTSP 401 Authentication Processing] RTSP 401 events are reported. For example, authentication information carried by URLS is automatically processed.
  • [Buffer time setting] Supports buffer time setting.
  • [First screen second on] Supports the first screen second on mode;
  • [Complex network processing] Automatic adaptation of various network environments such as disconnection and reconnection;
  • [Quick URL switching] During playback, you can quickly switch to other urls, and content switching is faster.
  • Android platform, video: SurfaceView /OpenGL ES, audio: AudioTrack/OpenSL ES;
  • [Real-time mute] You can mute or unmute a player in real time.
  • [Real-time volume adjustment] Support real-time volume adjustment during playback;
  • [Real-time snapshot] Capture the current screen during playback.
  • [Keyframe-only] The Windows platform supports real-time setting whether to play only keyframes.
  • [Render Angle] Support 0°, 90°, 180° and 270° video rendering Angle Settings;
  • [Render image] support horizontal inversion, vertical inversion mode Settings;
  • [equal scale scaling] support image equal scale drawing (Android Settings surface mode hard solution mode does not support);
  • [Real-time download speed update] Supports real-time callback of the current download speed (supports setting the callback interval);
  • [Video data callback before decoding] support H.264/H.265 data callback;
  • [Decoded video data callback] support decoded YUV/RGB data callback;
  • Support AAC/PCMA/PCMU data callback;
  • [Audio and video adaptive] Support audio and video information change in the playback process, self-adaptation;
  • [Extended video function] supports combined use with video SDK.

ExoPlayer

ExoPlayer is an open source player launched by Google. It mainly integrates a set of decoding system provided by Android to parse video and audio, and perfectly encapsulates MediaCodec, forming a development player with superior performance and good playback stability.

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 includes 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

  • The developer guide provides a wealth of information to help you get started.
  • The class reference documents the ExoPlayer library classes.
  • The release notes document the major changes in each release.

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'
Copy the code

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') }Copy the code

As a jar

If you want to use ExoPlayer as a jar, run:

./gradlew jarRelease
Copy the code

and copy library.jar to the libs folder of your new project.

conclusion

Ijkplayer has a relatively clear structure and poor scalability. It basically does not provide modules for developers to develop again. The official update is slow.

VLC supports voD well, but the project is huge, and the access or secondary development is difficult.

SmartPlayer for RTSP and RTMP live playback support is very good, millisecond delay, good stability;

ExoPlayer isn’t very good for live streaming, video decoding doesn’t plug into soft solutions, scalability is mediocre, and it only supports Android.