通过阅读本文,您可以了解Mac端依赖FFmpeg的其他播放器集成Native RTS SDK实现超低延时直播的方法。

操作步骤

  1. 下载并解压Native RTS SDK中的Windows。下载地址,请参见SDK下载
  2. 复制rtsdec.c和rtsenc.c文件至FFmpeg播放器的libavformat目录中。

    修改Makefile文件。在Makefile文件中增加rtsdec.o和rtsenc.o的描述,如下图所示:

    001
  3. 修改allformats.c文件,默认支持ARTC协议。
    002
    extern AVInputFormat  ff_rtc_demuxer;
  4. 修改ffplay.c。
    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. 修改ffplay.c所在的Makefile文件。
    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. 编译运行。

    ./ffplay "artc://<播流地址>"

    说明 如果希望体验最低延时:./ffplay -fflags nobuffer -flags low_delay "artc://<播流地址>"