This guide explains how to integrate the Native RTS SDK into a player (built on the FFmpeg framework) on Windows for Real-time Streaming (RTS).
Procedure
This topic uses MSYS2 to compile FFmpeg 4.2 as an example. In the MSYS2 installation directory, open the mingw64.exe terminal.
Download and decompress the Windows package of the Native RTS SDK. For the download link, see Release notes.
Copy the
rtsdec.candrtsenc.cfiles to the libavformat directory of the FFmpeg source code.Modify the
Makefilefile. Addrtsdec.oandrtsenc.oto the list of object files to be built:
To enable support for the Alibaba Real-Time Communication (ARTC) protocol by default, modify the
allformats.cfile.
extern AVInputFormat ff_rtc_demuxer;Modify the
ffplay.cfile.
/* 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);
|| !strcmp(s->iformat->name, "artc")
av_set_rts_demuxer_funcs(get_rts_funcs(2));Modify the
Makefilefile in the same directory asffplay.c.
$(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 endifCompile and run the code.
./ffplay "artc://<streaming URL>"
NoteFor the lowest possible latency, run the following command: ./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"