このトピックでは、Windows 上で FFmpeg ベースのプレーヤーに Native RTS SDK を統合して RTS を実装する方法について説明します。
手順
このトピックでは、MSYS2 を使用して FFmpeg 4.2 をコンパイルする例を示します。MSYS2 のインストールフォルダで、mingw64.exe のコマンドラインを開きます。
Native RTS SDK の Windows パッケージをダウンロードして解凍します。詳細については、「リリースノート」をご参照ください。
rtsdec.c ファイルと rtsenc.c ファイルを FFmpeg プレーヤーの libavformat フォルダにコピーします。
Makefile ファイルを編集します。次の図に示すように、rtsdec.o と rtsenc.o をファイルに追加します。

allformats.c ファイルを編集して、デフォルトで Alibaba Real-Time Communication (ARTC) プロトコルをサポートするようにします。

extern AVInputFormat ff_rtc_demuxer;ffplay.c ファイルを編集します。

/* rts ライブラリを rts プラグインに接続する */ 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://<ストリーミング URL>"
説明遅延を最小限に抑えるには、次のコマンドを実行します: ./ffplay -fflags nobuffer -flags low_delay "artc://<ストリーミング 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"