广告插入监控

广告插入监控

“除了造币厂,没有任何东西可以在没有广告的情况下赚钱。”

托马斯•巴宾顿•麦考利 (Thomas Babington Macaulay),英国历史学家、散文家和政治家

 

商业广告或广告是电视广播不可或缺的一部分。企业使用它们来推广他们的产品和服务,而媒体则从中赚钱。

出售播放时间是电视频道的主要收入来源,有时甚至是唯一的收入来源。例如,NBC在2004年放映最后一集《老友记》赚了7000万美元:每个30秒的广告位花费200万美元。这些是娱乐节目的创纪录收据和创纪录的价格。 2018 年世界杯比赛期间,俄罗斯第一频道和 Russia-1 的一分钟广告费用为 750 万卢布。但绝对记录被认为属于美国国家橄榄球联盟(NFL)冠军争夺战超级碗期间的广告位:2021年,超级碗期间的广告位花费约550万美元。

如您所见,这些都是相当可观的数额,它们将很大的责任推给了广告提供商。需要密切监控广告插入的技术实施和流程质量。

在本文中,我们将了解如何将广告插入到传输流和 HLS 或 MPEG-DASH 自适应广播流中,并了解销售通话时间的广告提供商如何避免与客户发生纠纷和官司。

SCTE-35 标记通常用于为电视广播中的广告分配播出时间。一种称为拼接器的特殊设备在这些标记的引导下将广告插入流中。拼接器不断访问 FTP 服务器,请求最新的插入时间表和预先制作的广告文件。当计划得到更新时,拼接器会根据计划插入的文件检查存储的媒体文件列表,并从 FTP 服务器下载任何丢失的文件。传入传输流中的 SCTE-35 标记表示广告插入的开始和结束位置。

流式广告时会出现许多问题。起点是将 SCTE-35 标记初始注入到流中。此时,需要为流中的广告精确分配播放时间,并相应地添加所需的标记。传输流中的某些数据包可能会丢失,因此该标准规定了标记的重复。

应用 SCTE-35 标记的语法称为 splice_info_section()。它发出六个可能的命令之一。 Splice_schedule ()Splice_insert()命令用于提供有关即将到来的广告插入的信息。还有一些辅助命令,例如: Splice_null() Bandwidth reservation() Time_signal() Private_command() 。而splice_insert()time_signal()命令是主要用于插入广告的函数。

  • Splice_null ()命令不传输任何数据,用于检查接收设备的响应。此外,定期插入此命令可以避免激活 TR101290 PID_error 触发器。
  • Bandwidth reservation()命令从压缩系统请求额外的带宽,用于传输带有 SCTE-35 消息的基本 PID 流。
  • Time_signal ()命令传输精确的时间戳,接收方设备使用这些时间戳将它们的操作与发送方设备同步。
  • Private_command()可用于传输 SCTE-104/35 规范中未提及的其他类型的数据。

 

考虑 splice_insert(),它是传输流中 SCTE-35 标记的主要命令之一:

 

 

out_of_network_indicator 元素在这里值得注意。值 1 标记广告插入的开始,值 0 标记它的结束。这些元素也称为cue-out (从主流切换到广告插入)和cue-in (切换回主流)。稍后我们将使用示例详细探讨它们。

直接广告插入本身也会出现问题,因为此过程需要考虑很多细微差别。
这里有些例子:

  • 拼接器必须准确地在 SCTE-35 标记中指定的时间插入广告,而不是提前或延迟一帧
  • 广告插入的结构不得与主流不同(例如编解码器/比特率/GOP/音量等)
  • 广告插入必须严格从 I 帧开始,否则插入的第一个 GOP 将被破坏。

IPTV中的广告插入监控

鉴于上述细微差别,乘以投放本地广告的不同区域的数量,我们可能会问自己:我们如何才能跟踪流程质量?

让我们使用 Boro 监控系统中的真实流示例来考虑广告插入。

 

 

广告插入时间表

 

您可以在图中看到三个标记,它们显示插入了广告。然后广告插入本身开始,并且更频繁地捕获流缩略图。让我们更详细地探讨在那些时刻流中发生了什么。

 

 

博罗事件日志

 

1) 来自 TS 流的 SCTE-35 标记(splice_insert 命令) 2021-07-09 15:52:00 +0700 {"source":"TS","data":{"program":1100,"pid":1015 “pts_adjustment”:0,“command_type”:“splice_insert”,“event_id”:“1073743534”,“auto_return”:true,“duration”:120,“out_of_network_indicator”:true,“pts_time”:“25:40: 54.394","unique_program_id":"1"}}

第一个标记“out_of_network_indicator:true”表示广告应在精确指定的时间“pts_time”:“25:40”开始(“true”表示 1,或 cue-out,即切换到广告插入): 54.394”。

“auto_return”:true表示插入(从广告插入切换回来)应该在 120 秒后自动发生(“duration”:120”), 

"program":1100指定程序, "pid":1015指定输入标记的PID。

第二个和第三个标记包含完全相同的信息,并以 2 秒为间隔跟随。这种复制是在流中发生数据包丢失的情况下完成的。

2) SCTE-35 广告插入 2021-07-09 15:52:08 +0700 {"action":"start","type":"scte35","params {"program":1100,"pid":1015 “pts_adjustment”:0,“command_type”:“splice_insert”,“event_id”:“1073743534”,“auto_return”:true,“duration”:120,“out_of_network_indicator”:true,“pts_time”:“25:40: 54.394","unique_program_id":"1"}} 来自 TS 流的 SCTE-35 标记(splice_insert 命令)2021-07-09 3:52:04 PM +0700

然后,根据收到的标记: “action”:“start”,广告插入本身会立即跟进。

3) SCTE-35 广告插入 2021-07-09 3:54:07 PM +0700 {"action":"stop","type":"scte35","params":{"program":1100,"pid ":1015,"pts_adjustment":8331695488,"command_type":"splice_insert","event_id":"1073743534","auto_return":true,"duration":120,"out_of_network_indicator":false,"pts_time":"25 :40:54.394","unique_program_id":"1"}}

120 秒后,广告插入结束: “out_of_network_indicator”:false /“action”:“stop”

在上面的示例中,广告插入期间没有问题。但是,如果标记包含错误,则监控系统会执行 CRC 完整性检查。报告任何不匹配,并将详细信息输出到错误日志以供进一步分析。此外,用户可以生成错误报告以提交给责任方。

可能会出现以下类型的错误:

  • 传输流或 HLS 标签中的二进制数据读取错误。在参数中传递了导致错误的不正确值
  • 读取传输流或 HLS 标签中的二进制数据时出现 CRC32 校验错误
  • 标签的二进制数据与播放列表的 HLS 标签数据不匹配。详细信息作为两个值以 tag_<data> 和 binary_<data> 格式传递到参数中。

OTT 中的广告插入监控

ОТТ广播为广告插入创造了新的机会,但也带来了新的挑战。

一方面,广告已经变得个性化,因为每个设备都会建立一个单独的会话,从而可以向观众展示他们可能感兴趣的内容。此外,ОТТ 广播不要求广告插入与主流相匹配,因为设备单独解码每个 ОТТ 广播块,这简化了广告拼接。

另一方面,SCTE-35 标记不限于传输流——它们也可以包含在播放列表中。这意味着标记可以重复,这在原则上不是问题,但也不能称为正确的流配置。播放列表标记也可能丢失——在这种情况下不是因为数据包丢失,而是因为其他原因,例如设备在更新期间未能将标记写入播放列表。

Boro 监控以下影响广播的事件。

SCTE-35 广告插入:当探测器检测到广告插入的开始时触发(基于收到的 SCTE-35 标记的信息)。当探测器检测到广告插入结束时,此状态将被删除。 Ad Insert 事件是其他几个表示广告插入问题的事件的基础。

Ad Insert Exceeds Specified Duration当广告插入的持续时间超过指定值时触发。持续时间从探测器根据“广告插入”事件检测到广告插入开始的那一刻开始计算。

Error Recognizing SCTE-35 Markers广告插入标记识别错误时触发。错误详细信息在消息中返回。

SCTE-35 广告插入缺失:当探测器在指定时间段内未检测到广告插入的开头(基于收到的 SCTE-35 标记的信息)时触发。当探测器检测到广告插入开始时,此状态将被删除。该触发器是基于 SCTE-35“广告插入”事件实现的。

SCTE-35 Markers Not Found In Playlist当探针在指定时间段内未在播放列表中找到任何插入标记时触发。该触发器是基于“来自 OTT 播放列表的 SCTE-35 标记”事件实现的。当我们确定广告插入应在特定时间间隔内开始,但由于某种原因播放列表中缺少 SCTE-35 标记并且广告插入没有发生时,此事件可能很有用。在这种情况下,播放列表中的标记丢失需要排除故障。

 

 

结论

由于多种原因,广告插入监控并不容易,但可以使用正确的工具来完成。

Elecard Boro 记录在流或播放列表中找到的每个插入标记。加上在收到标记时开始录制和捕获流缩略图的能力,这使得详细分析过程成为可能。 Boro 可以检查标记的完整性和可解码性,而缺少或过长的广告插入的触发器有助于及时检测广告插入系统中的问题。

 

试用 Elecard Boro 服务

 


blinov作者

瓦迪姆布利诺夫 

自 2016 年起担任 Elecard CodecWorks 产品经理。他在视频编码领域拥有 5 年的经验。


 

2021 年 11 月 2 日