作为视频发布者,您可能希望阻止观看者快进跳过中贴片广告。当用户跳过广告插播时,您可以将他们带回至该广告插播的起始处,并在该广告插播结束后将他们返回至其跳转时的位置。此功能称为“自动返回”。
例如,请参见下图。观看者正在观看视频,并决定从 5 分钟标记处快进到 15 分钟标记处。 不过,您希望观看者在观看 10 分钟后的内容之前先观看 10 分钟处的广告插播时间点:
如需显示此广告插播时间,请按以下步骤操作:
- 检查用户是否执行了跳过未观看的广告插播时间点的搜索操作,如果执行了,则将用户带回该广告插播时间点。
- 广告插播结束后,将用户返回至其跳转时的位置。
以图表形式表示,如下所示:
以下示例展示了如何使用 IMA DAI SDK 实现 snapack,如我们的高级示例中所示。
防止用户在观看广告插播时间点时跳过广告
检查用户是否执行了快进操作,跳过了未观看的广告插播时间,如果跳过了,则将用户带回广告插播时间。 Roku 高级示例依赖于用户按下的遥控器按钮来执行搜索操作 - 用户每次按下前进按钮,都会在视频流中向前跳过设定的秒数。处理此跳转的同一方法还会检查跳转是否会使他们跳过或进入广告插播时段,如果会,则将用户发送到该广告插播时段的开头:
Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
previousAd = streamManager.getPreviousCuePoint(updatedTime)
If previousAd = Invalid or previousAd.hasPlayed
player.seek(updatedTime * 1000)
Else If previousAd.start > player.currentTime
player.isSnapback = True
player.timeAfterSnapback = updatedTime
player.seek(previousAd.start * 1000 + 1000)
End If
End Function
将用户返回到其原始搜索位置
在 adBreakEnded
处理程序中,检查上一个广告插播是否因回放而播放。如果如此,请将用户返回到他们最初尝试定位到的位置(只要该位置不是刚刚播放的广告插播时段的中间位置):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function