You need to enable JavaScript to run this app.
文档中心
视频直播

视频直播

复制全文
下载 pdf
常见问题
SDK 问题
复制全文
下载 pdf
SDK 问题

我有一个直播 App,能直接集成视频直播拉流 SDK 吗?

可以。您可以按以下步骤操作:

  1. 在同一域名空间下添加推流域名和拉流域名,并完成 CNAME 配置。详见添加域名
  2. 使用相同的 AppNameStreamName 分别生成推流地址和拉流地址。详见地址生成器GeneratePushURL - 生成推流地址GeneratePlayURL - 生成拉流地址
  3. 将视频直播客户端拉流 SDK 集成到您的 App。详见集成 SDK
  4. 使用 OBS 等推流工具,通过生成的推流地址将直播流推送到视频直播。详见使用 OBS 推流

完成以上操作后,即可在 App 中使用拉流地址播放直播。

创建 SDK 应用后,是否支持修改应用信息?

支持。SDK 应用创建后,您可以修改应用名称和应用绑定信息。App 类型应用支持修改 PackageNameBundleIDHarmonyPackage,Web 类型应用支持修改泛域名和 WebOTT 应用标识。

  • 如果 License 已激活,修改后系统会根据新的应用信息重新生成 License。您需更换 SDK 的 License 文件或 License URL。原 License 会在一段时间内继续有效,新的 License 到期时间与原 License 一致。
  • 如果 License 已过期,修改后,系统会在续签时根据新的应用信息生成 License。您需在续签完成后更换 SDK 的 License 文件或 License URL。

集成 SDK 开始推流时,出现报错日志“Rtmp connecting failed: code2 -121”

出现 Rtmp connecting failed 报错常见原因如下:

  1. 推流 URL 格式不正确:请使用正确的推流地址,详细参见最佳实践-生成直播地址
  2. URL 鉴权过期:请重新生成 URL 鉴权未过期的推流地址。

集成 SDK 之后,端到端的时延高怎么调优?

拉流播放时出现时延高的情况和推流端设置的 GOP(关键帧间隔 GOP)大小有关,建议检查推流端设置的 GOP 大小,推荐 GOP 设置为 2s。

如果您对时延要求较高,请创建工单联系技术支持获取调优帮助。

Android 和 iOS 应用可以共用一个 License 吗?

可以,Android 和 iOS 可以共用一个 License,您需要在创建 App 类型应用时同时填写 Android 应用的 PackageName 和 iOS 应用的 Bundle ID。详细操作请参见步骤一:创建或绑定 SDK 应用

如果已在火山引擎控制台中创建过应用,在视频直播控制台还需要创建应用吗?

如果您已经在火山引擎其他产品控制台创建过应用(如在视频点播中创建过 App),接入视频直播客户端 SDK 时,无需重复创建应用。

请参考以下操作获取视频直播客户端 SDK License。

  1. 登录创建过应用的产品控制台(如登录视频点播控制台)。
  2. 在应用管理模块,获取应用的 AppID 和应用名。
  3. 登录视频直播控制台
  4. 在应用管理模块,单击绑定已有应用,根据提示完成绑定即可。详见获取 SDK License
    Image

已有 Web 应用,是否可以直接追加 Android、iOS 或 HarmonyOS NEXT 配置?

不可以。视频直播的 SDK 应用按接入端类型分为 WebApp 两类。已有 Web 应用只能用于集成 Web 拉流 SDK,不能追加 Android、iOS 或 HarmonyOS NEXT 配置。同理,已有 App 应用也不能直接追加 Web 配置。

如果您的业务同时包含 Web 端和 App 端接入,请分别创建或绑定对应类型的 SDK 应用,并获取各自的 App ID 和 License,在对应端的 SDK 初始化配置中填入相关信息独立使用。

Web 推流、App 拉流时,是否要求使用同一个 SDK 应用或 App ID?

不要求。

Web 推流 SDK 不需要创建 SDK 应用,也不需要配置 App ID 和 License。App 拉流 SDK 需使用 App 类型 SDK 应用的 App ID 和 License。

视频直播通过推流域名、拉流域名和流地址识别流资源。只要您已添加推流域名和拉流域名,并使用有效的流地址,Web 端推流后,App 端即可正常拉流播放。

集成 iOS 拉流 SDK 时,会用哪几个 Subspecs?

不同功能使用的 Subspecs 也不同。详见初始化 iOS 拉流 SDK

功能Subspecs
直播拉流(不包含 RTM 协议拉流)LivePull
直播拉流(包含 RTM 协议拉流)LivePull-RTS

Web 推流 SDK 是否支持共享文件?

不支持。Web 推流 SDK 支持屏幕共享功能。

Web 端如何实现后台继续播放?

说明

后台继续播放时仍会消耗流量,为避免流量浪费,不建议您使用此功能。

您可以自定义一个 WebView 类(如 BackgroundVisibleWebView),此类允许 Web 视图即使在其不可见时也保持可见。这对于希望在后台继续加载内容的 Web 视图的情况很有用,例如当用户滚动列表视图时。

代码示例如下:

class BackgroundVisibleWebView @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : WebView(context, attrs, defStyleAttr) {
    override fun dispatchWindowVisibilityChanged(visibility: Int) {
        if( windowVisibility == View.VISIBLE ){
            return
        }
        super.dispatchWindowVisibilityChanged(View.VISIBLE)
    }
}

Web 拉流 SDK 如何探测设备是否支持 RTM 播放,以及 RTM 是否支持 H.264 格式播放?

使用 RTM 拉流具有延时低的优点,使用前您需先判断当前浏览器是否支持 RTM 拉流,如果不支持,请用其他播放格式。

2.0.0 及以上版本判断浏览器是否支持 RTM 拉流的代码示例如下:

// 判断是否支持 RTM
const isRTMSupported = await VePlayer.isRTMSupported();

// 判断 RTM 是否支持 H264 格式播放。
const isRTMSupportH264 = await VePlayer.isRTMSupportCodec('h264');

VePlayer.createLivePlayer({
  // v2.1.0 及后续版本不再需要判断是否支持 RTM 播放,播放器会自行判断,如果不支持播放 RTM 则降级到 fallbackUrl 地址。
  url:
        isRTMSupported && isRTMSupportH264
            ?  'https://pull.example.com/live/test.sdp'
            :  'https://pull.example.com/live/test.m3u8',
  width:  640,
  height:  360,
  rtm: {
    fallbackUrl:  'https://pull.example.com/live/test.m3u8',
    },
  logger: {
    appId:  '5*****8',
    },

});

1.5.13 及以上版本判断浏览器是否支持 RTM 拉流的代码示例如下:

// 判断设备是否支持 RTM 播放
const isRTMSupported = VePlayer.isRTMSupported();
// 判断 RTM 是否支持 H.264 格式播放 (Web 拉流 SDK v1.5.13 及以上版本开始支持)
const isRTMSupportH264 = await VePlayer.isRTMSupportCodec('h264');
const veplayer = new VePlayer({
   // 不支持 RTM 的建议用其他格式播放
   url: isRTMSupported && isRTMSupportH264 ? 'https://pull.example.com/live/test.sdp' : 'https://pull.example.com/live/test.m3u8'
})

Web 拉流 SDK 如何控制播放端延时?

在弱网环境下进行 RTM 拉流时或因视频码率太大会导致卡顿时,您可以设置播放端延时为播放预留更多缓冲时间。

在 Web 拉流 SDK(VePlayer) 中可通过为播放器配置 delayHint 增加缓冲时间(单位为秒)。

2.0.0 及以上版本示例代码如下:

VePlayer.createLivePlayer({
    width: 640,
    height: 360,
    url: '//live.example.com/live/xxxxx.flv',
    logger:{
      appId: '10****51'
    },
    rtm: {
    delayHint:  3
    }
})

1.5.0 及以上版本代码示例如下:

new VePlayer({
    rtm: {
    delayHint:  3
    }
})

如何创建和配置 App Group

在 iOS 应用开发中,创建 App Group 并配置给两个不同的 App 或组件,可以实现 App 间的数据共享。

在开发者中心创建 App Group

  1. 使用已经开通开发者账号的 Apple ID 登录苹果开发者中心
  2. 点击 Certificates, IDs & Profiles

Image

  1. 点击 + 创建 Identifier

Image

  1. 选择 App Groups,点击 Continue。

Image

  1. 在弹出的表单中填写 Description 和 Identifier,点击 Continue。其中 Identifier 需要传入接口中的对应的 AppGroup 参数。

Image

  1. 点击 Register 后,完成创建,并将回到 Identifier 页面。

在开发者中心为 App ID 配置 App Group

在开发者中心,为需要共享数据的应用和组件配置相同的 App Group。

  1. 打开 Identifier 页面右上方的下拉菜单,选中您的 App ID。

Image

  1. 选中 App Groups,点击 Configure。

Image

  1. 在弹出的表单中选择之前创建的 App Group,点击 Continue 返回编辑页,点击 Save 保存。

Image

  1. 选择需要和该 App 进行数据分享的另一个 App 或组件,重复上述步骤。
  2. Provisioning Profile 下载并配置到 XCode 中。

在 Xcode 中配置 App Group

在 Xcode 工程中为需要共享数据的 App 或组件配置相同的 App Group

  1. 在 App 中选择相应的 target,切换到 Signing & Capabilities 标签页,点击 + 新增配置项
    Image
  2. 在弹出的对话框中双击 App Groups
    Image
  3. 添加并勾选之前创建 App Group
    Image
  4. 重复上述步骤,为需要共享数据的其他 App 或组件配置相同的 App Group。

视频直播 SDK 是否支持连麦、商品、点赞、评论、抽奖等互动功能?

当前视频直播 SDK 仅提供基础的推流、拉流能力,不支持连麦、商品、点赞、评论、抽奖等互动功能,也不会自动渲染连麦场景下的多人画面。如需实现此类功能,通常需要结合其他产品能力自行实现。

Web 端播放 RTM 流时为何卡顿和无声?

由于浏览器对 RTM 协议限制,Web 端播放 RTM 流时直播流必须去除 B 帧,且音频编码必须改为 Opus 格式,否则会出现卡顿或无声。

请完成以下步骤,解决卡顿和无声问题:

  1. 创建转码配置。
    1. 登录视频直播控制台,左侧导航栏选择功能配置
    2. 在页面上方的域名空间下拉列表中,选择拉流域名所在的域名空间。
    3. 转码配置页签下,单击添加配置,新增转码配置。具体配置,详见转码配置。其中,B 帧(帧间隔)​设置为 0音频选项设置为 Opus
      Image
    4. 单击确定
  2. 生成 RTM 协议的转码流地址。
    1. 地址生成器页面,选择您的拉流域名、与推流地址相同的 AppNameStreamName,并单击生成拉流地址。例如推流地址为 rtmp://push.example.com/live/test,则使用 AppName liveStreamName test 生成拉流地址。
    2. 在页面右侧的转码流地址页签下,选择您配置的转码流后缀,并获取 RTM 地址。
      Image
  3. 使用获取的 RTM 协议转码流地址重新播放。

集成 Web 拉流 SDK 后,如何将播放器文案设置为中文?

请在创建播放器时通过 LiveVePlayerOptionslang 参数设置播放器的初始显示语言,例如 lang: 'zh-cn'。配置后,播放器文案将按中文显示。

使用 Web 拉流 SDK 播放直播时,如果推流中断后重新推流,Web 端如何感知并恢复播放?

Web 拉流 SDK 仅监听播放事件,例如播放开始、播放错误、暂停播放等,不会直接监听推流状态变化。因此,推流中断后重新推流时,Web 端通常无法自动收到推流恢复事件,也不会自动恢复播放。

  • 如果您集成了 Web 推流 SDK,可根据 Web 推流 SDK 的推流相关回调,例如 onPushStatusUpdateonPushStartonPushStop,感知推流状态变化。当推流端监听到推流恢复后,需要将推流开始状态同步给播放端,再由播放端调用 Web 拉流 SDK 的 play() 方法恢复播放。
  • 如果您未集成 Web 推流 SDK,可通过服务端回调感知推流状态。具体步骤如下:
    1. 视频直播控制台功能配置 > 回调配置页面,添加回调类型推流开始的回调配置。具体操作,详见回调配置。有关推流开始回调的字段说明,详见回调内容说明
    2. 当您的业务服务端接收到推流开始回调时,需要将推流开始状态通知播放端。
      • 如果原拉流地址仍然有效,播放端可直接调用 Web 拉流 SDK 的 play() 方法恢复播放。
      • 如果原拉流地址已过期,则应先由您的业务服务端生成新的拉流地址,并将新的拉流地址返回给播放端。播放端更新播放器使用的拉流地址后,再调用 Web 拉流 SDK 的 play() 方法恢复播放。

    说明

    • 为提升用户体验,您也可以同时配置回调类型推流结束的回调配置。当您的业务服务端接收到推流结束回调后,可通知播放端展示直播已结束、等待主播重新开播等提示。
    • 回调按推流事件触发。当您的业务服务端返回状态码 200 OK 后,回调消息不再重复发送。仅当请求失败或超时时,系统才会重试发送回调消息。

为什么我在微信公众平台搜索不到小火播放器插件?

如果在微信公众平台无法搜索到小火播放器插件,请先确认当前小程序的主体类型和服务类目是否符合插件集成要求。插件方式无需开启 live-player 权限,但仍需满足微信小程序的主体类型和服务类目要求。

如果当前小程序不具备插件方式支持的服务类目,将无法通过插件方式集成视频直播微信小程序拉流 SDK。详见服务类目和资质要求

最近更新时间:2026.09.08 20:22:05
这个页面对您有帮助吗?
有用
有用
无用
无用