Skip to content

messagechannel

mayudong1 edited this page Jan 29, 2018 · 2 revisions

消息通道

播放SDK提供了如下的messageDataBlock属性,使用回调的方式将视频流中除了音视频之外的另一种可以称之为消息的数据交给外部处理

typedef void (^KSYPlyMessageDataBlock)(NSDictionary *message, int64_t pts, int64_t param);

@property (nonatomic, copy)KSYPlyMessageDataBlock messageDataBlock;

使用示例如下

    _player.messageDataBlock = ^(NSDictionary *message, int64_t pts, int64_t param){
    if(message)
    {
        NSMutableString *msgString = [[NSMutableString alloc] init];
        NSEnumerator * enumeratorKey = [message keyEnumerator];
        //快速枚举遍历所有KEY的值
        for (NSObject *object in enumeratorKey) {
            [msgString appendFormat:@"\"%@\":\"%@\"\n", object, [message objectForKey:object]];
        }
        
        if(weakSelf)
            [weakSelf updateMsg:msgString];
    }

消息的来源

  1. 推流SDK向流中写入的自定义消息,此消息数据在rtmp流中已符合标准的形式作为区别与音视频数据的另外一种数据格式存在
    此时messageDataBlock回调的第一个参数message为字典内容与推流时设置的内容相同

  2. 3.0.1版本中新增了对H264视频数据中SEI信息的解析,将用户自定义的SEI数据通过消息通道的方式交给外部处理
    此时messageDataBlock回调的第一个参数message为字典内容为两组key-value,key为UUID和Message,value均为字符串格式,UUID的value对应128位UUID转为16进制显示的字符串表示,Message对应的value为自定义SEI信息内容,如果内容不是字符串格式,这里可能会有问题

Clone this wiki locally