All Products
Search
Document Center

:Native RTS SDK for Windows

Last Updated:Sep 07, 2023

This topic describes how to integrate Native RTS SDK for Windows with a third-party player that is based on FFmpeg to use RTS in ApsaraVideo Live.

Procedure

This topic uses MSYS2 to compile FFmpeg as an example. In the MSYS2 installation directory, open the mingw64.exe command line interface.

  1. Download and decompress the Native RTS SDK package. For more information about the download URL, see Release notes.

  2. Copy the rtsdec.c and rtsenc.c files to the libavformat directory of the FFmpeg-based player.

    Modify the Makefile file. Add the descriptions of the rtsdec.o and rtsenc.o files to the Makefile file, as shown in the following figure.

    001
  3. Modify the allformats.c files to support the ARTC protocol.

    002
    extern AVInputFormat  ff_rtc_demuxer;
  4. Modify the ffplay.c file.

    ffplay.c
    /* connect rts library to rts plugin
     */
    struct rts_glue_funcs;
    extern const struct rts_glue_funcs *get_rts_funcs(int version);
    extern void av_set_rts_demuxer_funcs(const struct rts_glue_funcs *funcs);
    1.1
     || !strcmp(s->iformat->name, "artc")
    1
    av_set_rts_demuxer_funcs(get_rts_funcs(2));
  5. Modify the Makefile file where ffplay.c is located.

    2
    $(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(EXTRALIBS-$(1)) -lRtsSDK --verbose
    
    ifeq ($(TARGET_OS),windows)
    LDFLAGS += -L../../release/windows/x86_64/RtsSDK/lib/ -lRtsSDK
    endif
    ifeq  ($(TARGET_OS),mac)
      LDFLAGS += -L../../release/mac/x86_64/RtsSDK/lib -lRtsSDK
    endif
  6. Compile and run the code.

    ./ffplay -i "artc://<Streaming URL>"

    Note

    To use low-latency streaming: ./ffplay -fflags nobuffer -flags low_delay "artc://<Streaming URL>"

    PREFIX_DIR=`pwd`/"build-out-windows"
    CFLAGS="$CFLAGS -DWIN32  -D_WIN32 -DNDEBUG"
    
    ./configure \
        --prefix=$PREFIX_DIR \
        --extra-cflags="$CFLAGS" \
        --enable-shared \
        --disable-static \
        --enable-gpl \
        --enable-nonfree \
        --enable-libfdk-aac \
        --disable-decoder=hevc \
        --disable-parser=hevc  \
        --disable-encoders  || exit 1
    
    make TARGET_OS=windows -j8 && make install  || exit 1
    cp /mingw64/bin/SDL2.dll ${PREFIX_DIR}/bin
    cp ../../release/windows/x86_64/RtsSDK/lib/RtsSDK.dll ${PREFIX_DIR}/bin
    echo "FFmpeg created in $PREFIX_DIR"