1. Brief introduction of each player
1、ExoPlayer
ExoPlayer is an open source player launched by Google. It mainly integrates a decoding system provided by Android to analyze video and audio. It encapsulates MediaCodec very well, and adds support for live broadcast protocols such as DASH and HLS, forming a performance Superior, a development player with better playback stability.
Github : https://github.com/google/ExoPlayer
star | fork | issue |
---|---|---|
20.5k | 5.9k | 723 |
Cross-platform feature: only supports Android
advantage:
- The access package is small in size, 1.1M
- The maintenance team is strong and the update speed is fast
shortcoming:
- Not cross-platform, not suitable for live broadcast
- The scalability is average, and the video software solution access is more troublesome
- It is suitable for projects with simple playback scenarios, and there is no need to switch streams during playback
2、ijkplayer
ijkplayer is an open source player of Bilibili Company, developed based on FFmpeg, supports Android's MediaCodec, iOS's VideoToolBox hard decoding , can realize the free switching between soft and hard decoding, and thanks to the ability of FFmpeg, it can also support multiple streaming media protocols. It is an audio and video encoding format with high flexibility and can be customized to implement its own unique player.
Github : https://github.com/bilibili/ijkplayer
star | fork | issue |
---|---|---|
31.2k | 8k | 2.7k |
Cross-platform features: cross-platform, support Android/iOS
Advantages:
- The structure is relatively simple, basically unfolded with ffplay, and it is relatively simple to start
- Smaller package size than VLC
- Wide range of applications, rich issue and information
shortcoming:
- Poor scalability, basically no modules are provided for secondary development by developers
- The official is currently basically not maintained, not updated
3、VLC
VLC is a project developed by the VideoLAN project. It was first started in 1996 and is a complete cross-platform player. The overall framework of VLC is designed as a module management mechanism, which classifies and abstracts functions into modules.
Github : https://github.com/videolan/vlc
star | fork | issue |
---|---|---|
10.5k | 3.3k | / |
Cross-platform features: cross-platform, support Android/iOS/MacOS/Windows/Linux/BSD/Haiku
Advantages:
- Cross-platform, good compatibility
- Comprehensive functions, support rtsp, rtmp, ftp, http, https and other protocols
- The code is completely decoupled, the modules are independent of each other and do not affect each other, and it is convenient to introduce new modules
- Strong maintenance team, frequent updates
shortcoming:
- The package compiled by the Android platform is relatively large, about 16M;
- There may be performance issues on the Android platform and need to be optimized
4、GStreamer
GStreamer is a cross-platform multimedia framework. The application can connect the various steps of multimedia processing in series through the pipeline (Pipeline) to achieve the desired effect. Each step is implemented by means of plugins based on the GObject object system based on the Element (Element), which facilitates the expansion of various functions.
Github : https://github.com/GStreamer/gstreamer
star | fork | issue |
---|---|---|
1.6k | 458 | / |
Cross-platform features: Cross-platform, support Android/iOS/Windows/Linux
Advantages:
- The GStreamer framework is based on plug-ins, and its pluggable components can be easily connected to any pipeline
- Clear structure and flexible scalability: all GStreamer objects can be extended using methods inherited from GObject, and all plug-ins can be dynamically loaded.
shortcoming:
- more complicated to use
- Poor performance, large package size
5、SmarterPlayer
SmarterPlayer is one of the few super self-developed cross-platform streaming media kernels in the industry produced by Daniu Live that is dedicated to the ultimate experience. Through modular free combination, it supports real-time RTMP/RTSP streaming, RTMP/RTSP players, video recording, and more. Streaming media forwarding, audio and video guidance, dynamic video synthesis, audio mixing, live broadcast interaction, built-in lightweight RTSP service, etc., faster than fast, the industry's truly reliable ultra-low-latency live broadcast SDK (within 1 second, low-latency mode 200~400ms).
Github : https://github.com/daniulive/SmarterStreaming
star | fork | issue |
---|---|---|
1.4k | 2.7k | 5 |
Cross-platform features: Cross-platform, support Android/iOS/Windows/Linux
Advantages:
- Support a variety of common streaming media protocols, such as HLS, RTMP, FLV, etc.
- Offers a variety of player skins and customization options
- Support P2P network protocol, can realize on-demand and live broadcast functions
shortcoming:
- SmartPlayer is a commercial software, you need to buy a license to use
- Compatibility issues may exist on certain hardware and software platforms
2. Conclusion of player selection
In terms of model selection, I personally prefer to choose ijkplayer for the following reasons:
- ijkplayer is based on ffmpeg, the soft solution effect is very good, you can configure the protocol you want to support, the project itself also uses ffmpeg, it can be reused, and the newly added package is small
- ijkplayer mobile terminal is cross-platform, meets the needs of both ends, and supports Android's MediaCodec and iOS's VideoToolBox hard decoding, which can realize free switching between soft and hard decoding
- ijkplayer is relatively simple, rich in information, relatively quick to get started
- In view of the problem that the official does not update, in the long run, it can be gradually evolved and iteratively transformed into its own player based on ijkplayer
Reasons not to choose other:
- In order to be compatible with all platforms, VLC chooses some libraries unreasonably, resulting in a large package compiled by the Android platform.
- Although the VLC code is highly decoupled, it uses many uncommon libraries, and the learning cost is relatively high
- ExoPlayer only supports Android
- GStreamer is complicated to use and has a large package size
- SmarterPlayer requires purchase license