设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 9443|回复: 0
打印 上一主题 下一主题

开放视频编码(H.264)编解码数据输入、输出接口

[复制链接]

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
跳转到指定楼层
楼主
发表于 2014-9-22 20:50:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AnyChat是一套开放的音视频即时通信解决方案,早期的版本已经开放了原始数据的输入、输出接口:
1、通过客户端回调函数可以输出用户原始的视频采样帧数据(YUV、RGB):视频数据回调函数
2、通过外部数据输入接口可以支持将外部的视频帧传给AnyChat进行编码:如何使用外部音视频数据输入功能?

对于某些特定的场合,上层应用希望获取AnyChat内核原始的H.264编码数据,或是希望将H.264编码之后的数据传输给AnyChat,自AnyChat r4268版本开始提供了支持,该特性将给AnyChat带来更大的灵活性、可扩展性,包括:
1、有助于AnyChat与其它平台互联互通时进行数据交换,实现与其它平台的对接,如SIP通信终端;
2、通过编写接入网页,可以实现监控摄像头、视频点播平台等数据的接入;

新版本增加常量定义:BRAC_PIX_FMT_H264,API接口没有改变。
1、当需要通过回调函数获取用户的H.264编码数据时,可以在设置回调函数时传入常量,如:
  1. // 设置回调函数
  2. BRAC_SetVideoDataExCallBack(BRAC_PIX_FMT_H264, OnVideoDataExCallBack, this);

  3. // 回调函数实现
  4. void CALLBACK OnVideoDataExCallBack(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader, DWORD dwTimeStamp, LPVOID lpUserValue)
  5. {

  6. }
复制代码
2、当希望将编码后的H.264数据传入AnyChat时,可以通过外部数据输入接口来实现,如:
  1. // 初始化
  2. BRAC_SetInputVideoFormat(BRAC_PIX_FMT_H264, 320, 240, 25, 0);
  3. // 传入数据
  4. BRAC_InputVideoData(lpH264Frame, dwSize, dwTimeStamp);
复制代码
相关说明:
1、输入、输出的H.264编码帧数据均为NAL单元,包含帧起始标志:00 00 00 01 ,且每次输入、输出为一个NAL单元;
2、关键帧需要包含序列参数集(SPS:Sequence parameter set)和图像参数集(PPS:Picture parameter set);
3、时间戳为毫秒值,两个时间戳之差表示两个帧的时间间隔(单位:毫秒)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-22 22:40 , Processed in 0.155490 second(s), 26 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表