国标GB28181协议视频推流平台EasyGBD如何研发开启软编码的?

原标题:国标GB28181协议视频推流平台EasyGBD如何研发开启软编码的?
国标EasyGBD自研发上线以来 , 一直伴随着EasyGBS一起使用 , 但其实EasyGBD也可以单独使用 , 只要接收平台支持国标GB28181协议即可 。

国标GB28181协议视频推流平台EasyGBD如何研发开启软编码的?
文章图片
最近EasyGBD新增了软编码的功能 , 用户使用时可根据自身需求修改编码 。 本文将和大家分享一下EasyGBD开发软编码的过程 。

国标GB28181协议视频推流平台EasyGBD如何研发开启软编码的?
文章图片
1、在设置界面 , 提供了使用软编码的选择框:
可以设置是否使用软编码:
SPUtil.setswCodec(this,isChecked)
2、启动视频软编码器SWConsumer , 本质就是X264Encoder 。 X264Encoder加载了libx264enc.so库 , 主要方法是:
/**
*创建编码器
*@paramw要编码的视频的宽度
*@paramh要编码的视频的高度
*@parambitrate要编码的码率
*/
publicvoidcreate(intw,inth,intframeRate,intbitrate){
long[]handle=newlong[1];
create(w,h,frameRate,bitrate,handle);
mHandle=handle[0];
}
/**
*编码
*@paramyv12yv12格式的视频数据(数据长度应该为w*h*1.5)
*@paramoffset视频数据的偏移(即在yv12里的起始位)
*@paramout编码后的数据
*@paramoutOffset编码后的视频数据的偏移(即在out里的起始位)
*@paramoutLenoutLen[0]编码后的视频数据的长度
*@paramkeyFramekeyFrame[0]编码后的视频帧的关键帧标识
*@returnreturnsnegativeonerror,zeroifnoNALunitsreturned.
国标GB28181协议视频推流平台EasyGBD如何研发开启软编码的?】*/
publicintencode(byte[]yv12,intoffset,byte[]out,intoutOffset,int[]outLen,byte[]keyFrame){
returnencode(mHandle,yv12,offset,out,outOffset,outLen,keyFrame);
}
/**
*关闭编码器
*/
publicvoidclose(){
close(mHandle);
}
EasyGBD可以在TSINGSEE青犀视频官方网站下载使用 , 当然EasyGBS也是可以配套测试的 , 如果大家有测试需求 , 欢迎联系我们获取测试账号 。

国标GB28181协议视频推流平台EasyGBD如何研发开启软编码的?
文章图片