Skip to main content


ZLMediaKitAbout 4 min

1. Obtain the Source Code

Please refrain from downloading the source code in zip package format directly from GitHub. Instead, you should clone the ZLMediaKit code using git. This is due to ZLMediaKit's reliance on multiple third-party project codes which are not included in the zip package. Follow these steps to do this:

# It's recommended for users in China to download from the synchronized mirror site, gitee
git clone --depth 1
cd ZLMediaKit
# Remember to execute this command
git submodule update --init

If you're a beginner, we highly recommend compiling ZLMediaKit using Ubuntu16 or later versions. macOS is the second recommended platform. The least recommended platforms are CentOS6.* and Windows.

zlmediakit has been launched on vcpkg, please refer to install zlmediakit using vcpkg for convenient installation.

3. Compiler

3.1. Compiler Version Requirements

ZLMediaKit utilizes C++11 syntax and libraries, hence, it's required that your compiler fully supports the C++11 standard. This means:

  • On Linux, gcc version >= 4.8 (4.7 should also be supported)
  • On macOS, clang >= ??? (it's uncertain, but most likely won't encounter any issues)
  • On Windows, Visual Studio >= 2015 (some versions of VS2013 can also compile, but for a smoother experience, VS2017 is recommended)

3.2. Installing the Compiler

  • If you're using a Debian-based operating system (including Ubuntu), the built-in gcc version is usually recent enough. Here's how to install the gcc compiler:

    sudo apt-get install build-essential
  • If you're a CentOS7 or above user, here's how to install the gcc compiler:

    sudo yum -y install gcc
    sudo yum -y install gcc-c++
  • If you're a CentOS6.* user, you can install the gcc compiler this way:

    sudo yum install centos-release-scl -y
    sudo yum install devtoolset-4-toolchain -y
    # Switch to a higher version gcc
    scl enable devtoolset-4 bash
  • If you're a macOS user, you can install Xcode directly.

  • If you're a Windows user, it's recommended to install VS2017 or later versions.

4. CMake

ZLMediaKit uses CMake to build the project. CMake is needed to generate Makefile (or Xcode/VS project), so you must install CMake to complete the subsequent steps.

  • If you're using a Debian-based operating system (including Ubuntu), the built-in cmake version is usually recent enough. Here's how to install cmake:

    sudo apt-get install cmake
  • If you're a CentOS7 or above user, you might be able to install cmake this way:

    sudo yum -y install cmake
  • If you're a CentOS6.* user, then you need to download the new version of cmake source code and then compile and install cmake:

    tar -xvf cmake-3.17.0-rc3.tar.gz
    cd cmake-3.17.0-rc3
    make -j4
    sudo make install
  • If you're a macOS user, here's how you can install cmake:

    brew install cmake
  • If you're a Windows user and your Visual Studio version is 2017 or later, you don't need to install cmake separately. Otherwise, you need to install cmake-gui:

    # Install win64 version of cmake
    # Install win32 version of cmake

5. Dependencies

5.1 Dependency List

Most of the third-party libraries that ZLMediaKit depends on are optional. During the building of ZLMediaKit, cmake can search for these libraries in the system path and enable relevant features based on their installation status. You may choose to install these dependencies to activate associated features:

  • openssl

    • Flash player uses complex handshake mode when playing rtmp, and if this library is not installed, flash player will not be able to play rtmp url provided by zlmediakit.

    • At the same time, features such as https/rtsps/webrtc of ZLMediaKit also require openssl to be activated.

  • ffmpeg

    • ZLMediaKit can support multiple protocols for pulling streams by forking ffmpeg as a subprocess. FFmpeg does not need to be installed during compilation.
  • sdl, avcodec, avutil

    • These three libraries are used by the test_player test program of ZLMediaKit. You usually do not need to install these three libraries.

5.2 Installing Dependencies

  • On Debian systems (including Ubuntu), use the following commands to install dependencies:

    # Everything but openssl is optional
    sudo apt-get install libssl-dev
    sudo apt-get install libsdl-dev
    sudo apt-get install libavcodec-dev
    sudo apt-get install libavutil-dev
    sudo apt-get install ffmpeg
  • Users of centos6.* can refer to this articleopen in new window.

  • To install dependencies on macOS/CentOS:

    The basic installation is similar to Debian. Replace the installation commands with brew/yum. However, some library names may be different from Debian, please search for relevant information.

  • To install dependencies on Windows:

6. Building and Compiling the Project

The activation of webrtc related features is complex and is not enabled for compilation by default. If you are interested in the webrtc feature of zlmediakit, you can refer to here.

  • On Linux or macOS systems, you should operate as follows:

    cd ZLMediaKit
    mkdir build
    cd build
    # You may need to specify the openssl path on macOS as follows: cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/
    cmake ..
    make -j4
  • On Windows system:

    • If you are using VS2017 or above, you can directly open the project folder from the VS menu bar:

      [File] -> [Open] -> [Folder] -> [Select ZLMediaKit code root directory and open]
    • If you are using VS2017 or earlier, you need to use cmake-gui to generate the VS project and then compile:

      1 Enter the ZLMediaKit directory and execute git submodule update --init to download the code of ZLToolKit

2 Use cmake-gui to open the project and generate the vs project file. 3 Locate the project file (ZLMediaKit.sln), double-click to open with vs2017. 4 Choose to compile the Release version. 5 Locate the target file and run the test case.

  • Also, you can refer to here for Windows compilation.

  • If you want to compile the Android version, you can open the Android directory in Android Studio.

  • If you want to compile the iOS version, you can generate the Xcode project and then compile the C API static library. In addition, you can refer to this documentopen in new window.

    cd ZLMediaKit
    mkdir -p build
    cd build
    # Generate the Xcode project, the project file is in the build directory
    cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake  -DPLATFORM=OS64COMBINED

7. Execution

The ZLMediaKit project mainly generates three types of binary target files, which are generated in the release directory. These target files mainly include:

  • MediaServer Process

    This is the main process of ZLMediaKit as a server. This process can be used directly as a streaming media server for testing without any development. If you need more complex business logic, you can implement it through Web HOOK and RESTful API. At the same time, you can control its parameters through the configuration file.

    • Start on Linux:

      cd ZLMediaKit/release/linux/Debug
      # You can learn about the startup parameters with -h
      ./MediaServer -h
      # Start in daemon mode
      ./MediaServer -d &
    • Start on macOS:

      The target file directory is in ZLMediaKit/mac/Debug, and all other operations are the same.

    • Start on Windows:

      1 Go to the ZLMediaKit/release/windows/Debug directory
      2 Double-click MediaServer to start
      3 You can also start in cmd or powershell, and learn about startup parameters through MediaServer -h

    ZLMediaKit also provides a C language-based API for secondary development of the SDK library. The header file is in ZLMediaKit/api/include. The library files are:

    • On Linux:

    • On macOS:

    • On Windows:


    The SDK header file has detailed comments, which are generally sufficient for secondary development.

  • Test programs starting with test_

    The related code is in the ZLMediaKit/tests directory, and you can refer to the code to start the test process.

8. Testing

Please refer to this article to complete the stream push and play test.