通過閱讀本文,您可以瞭解Windows端依賴FFmpeg的其他播放器整合Native RTS SDK實現超低延時直播的方法。
操作步驟
本文以MSYS2編譯FFmpeg 4.2為例(在MSYS2安裝目錄下,開啟mingw64.exe命令列)。
下載並解壓Native RTS SDK中的Windows。下載地址,請參見發布日誌。
複製rtsdec.c和rtsenc.c檔案至FFmpeg播放器的libavformat目錄中。
修改Makefile檔案。在Makefile檔案中增加rtsdec.o和rtsenc.o,如下圖所示:
修改allformats.c檔案,預設支援ARTC協議。
extern AVInputFormat ff_rtc_demuxer;
修改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);
|| !strcmp(s->iformat->name, "artc")
av_set_rts_demuxer_funcs(get_rts_funcs(2));
修改ffplay.c所在的Makefile檔案。
$(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
編譯運行。
./ffplay "artc://<播流地址>"
說明如果希望體驗最低延時:./ffplay -fflags nobuffer -flags low_delay "artc://<播流地址>"。
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"