Skills

Gsy Live And Ads

直播(RTMP/RTSP/HLS)、贴片广告 (PreRoll AD)、静音、切码率、无缝切源、切换过程保留最后一帧。

Install

npx skills add CarGuo/GSYVideoPlayer --skill gsy-live-and-ads -g -a claude-code -y
Repository
CarGuo/GSYVideoPlayer21.5k
Category
Engineering
Updated
26d ago
License
Apache-2.0
Context cost
Lightabout 1,055 tokens
Runs scripts
No, instructions only

What it does

直播(RTMP/RTSP/HLS)、贴片广告 (PreRoll AD)、静音、切码率、无缝切源、切换过程保留最后一帧。

gsy-live-and-ads

直播接入要点

  • setUp(url, false, title), , cacheWithPlay 必须 false。
  • onResume / player.onVideoResume(false):seek=false 避免拉流跳变(见 GSYVideoView#L549)。
  • 内核选择:
    • RTMP / RTSP:必须 IJK;System / Exo / Aliyun 各有兼容性差异。
    • HLS:Exo 更稳;Ijk 需要开启硬解 GSYVideoType.enableMediaCodec() 才顺。
  • 关键参数:
    • builder.setNeedShowWifiTip(false)(后台 App 不打断)
    • builder.setReleaseWhenLossAudio(false)(丢音频焦点不释放)
    • builder.setSurfaceErrorPlay(true)

对 IJK 加 low-latency:通过 VideoOptionModel 注入 ffmpeg option,见 BasePlayerManager 与 GSYVideoManager.instance().setOptionModelList(list)。常用 option:analyzemaxduration=100、probesize=10240、flush_packets=1、fflags=nobuffer、packet-buffering=0、framedrop=1。

广告 AD

  • 双 Manager 双 Player:GSYVideoADManager.instance() 负责广告 player,GSYVideoManager.instance() 负责主片;两者共存不打架。
  • 组件 GSYADVideoPlayer 与"广告示例"GSYSampleADVideoPlayer 都继承 StandardGSYVideoPlayer。
  • Activity 基类:GSYBaseADActivityDetail,提供 getGSYVideoADPlayer() / initADVideo() / startAD(String adUrl, String url) / onADEnd。

startAD(...) 关键调用序

  1. Activity 里持有主 player + AD player 两个 View;
  2. initADVideo() 装配(内部会连锁 OrientationUtils);
  3. startAD(adUrl, mainUrl) 播广告;
  4. AD complete → SDK 内部隐藏 AD player、start 主 player;
  5. 用户点"跳过"→ getGSYVideoADPlayer().onAutoCompletion()。

无缝切源 / 切码率

Read the whole SKILL.md on GitHub

More in Engineering