如何实现C语言与Go语言的数据转换?

举报
TSINGSEE青犀视频 发表于 2022/03/09 17:55:09 2022/03/09
【摘要】 EasyDSS使用的新拉转推库AvFilter中回调返回了C语言的char*类型,需要在GO转为C语言中定义好的结构体,最后转为GO语言结构体在GO层使用。今天我们来分享下技术实现过程。

随着视频直播行业的蓬勃发展,视频直播点播平台EasyDSS在该领域的应用也得到快速普及。EasyDSS互联网视频云服务具有视频直播、点播、视频拉转推、时移、视频回看等功能特点,支持HTTP、HLS、RTMP等播出协议,并且兼容多终端,如Windows、Android、iOS、Mac等。

EasyDSS使用的新拉转推库AvFilter中回调返回了C语言的char*类型,需要在GO转为C语言中定义好的结构体,最后转为GO语言结构体在GO层使用。今天我们来分享下技术实现过程。

1)将GO函数导出为C语言函数。

2)需要转换的参数是msg,类型为uintptr。在CGO中调用GO函数。

3)将uintptr转换为C语言中定义好的结构体。

4)再将C语言结构体中的类型使用CGO转换为对应的GO类型。

5)最后将值赋值给GO结构体,在GO层中就可以方便的使用了。

EasyDSS视频平台的能力,很适合OTT TV、IPTV、互联网教育、视频聊天、现场直播和VOD等应用,在智慧课堂、在线教育、虚拟直播、城市慢直播、景区直播、无人机推流等场景中均有落地应用。尤其是在无人机场景上,可以通过EasyDSS+RTMP推流的方式实现无人机城市航拍、森林防火、秸秆焚烧、电力巡检等监管应用。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。