Comparison and selection of mobile open source players (ExoPlayer/ijkplayer/VLC/GStreamer/SmarterPlayer)

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

Guess you like

Origin blog.csdn.net/u011520181/article/details/129689500