
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(...) 关键调用序
- Activity 里持有主 player + AD player 两个 View;
initADVideo()装配(内部会连锁OrientationUtils);startAD(adUrl, mainUrl)播广告;- AD complete → SDK 内部隐藏 AD player、start 主 player;
- 用户点"跳过"→
getGSYVideoADPlayer().onAutoCompletion()。
