视频高清直播RTMP视频推流组件EasyRTMP-IOS版如何使用wchar_t*类型参数?
时间:2022-07-23
本文章向大家介绍视频高清直播RTMP视频推流组件EasyRTMP-IOS版如何使用wchar_t*类型参数?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
wchar_t是C/C++的字符类型,是一种扩展的存储方式。wchar_t类型主要用在国际化程序的实现中,但它不等同于unicode编码。unicode编码的字符一般以wchar_t类型存储。在我们的SDK开发中,偶尔会用wchar_t*类型的参数。
最近TSINGSEE青犀视频研发人员在EasyRTMP推流组件iOS版本中接入freetype2库,来实现水印的功能,其中显示中文的时候,直接使用char * 就会造成FT_Get_Char_Index方法找不到汉字的字形索引,需要wchar_t*类型的参数。
分析问题
wchar_t:宽字节字符。 在C++中,它是一个特有的基本类型(因此它并没有在或其他header中被定义)。在C中,这是一个整数类型的typedef。
解决问题
在TxtOverlay.h中方法的声明如下:
void txtOverlay(long ctx, unsigned char* buffer, wchar_t* txt, size_t len, int x, int y);
那么在iOS如何将NSString字符串转成wchar_t*呢?方法如下:
+(const wchar_t*)stingTowWchar_t:(NSString*)string {
return (wchar_t*)[string cStringUsingEncoding:NSUTF32StringEncoding];
}
如果需要将wchar_t*转成NSString字符串,方法如下:
+(NSString*)getStringFromWChar:(const wchar_t*) inStr {
setlocale(LC_CTYPE, "UTF-8");
NSInteger strLength = wcslen(inStr);
NSInteger bufferSize = (strLength+1)*4;
char *stTmp = (char*)malloc(bufferSize);
memset(stTmp, 0, bufferSize);
wcstombs(stTmp, inStr, strLength);
NSString* ret = [[NSString alloc] initWithBytes:stTmp length:strlen(stTmp)
encoding:NSUTF8StringEncoding];//ARC
free(stTmp);
return ret;
}
更多关于EasyRTMP
TSINGSEE青犀视频旗下的EasyRTMP视频流媒体推流组件,可以用于桌面直播或者手机直播等场景,摄像机或其它设备实时采集到的现场画面,通过编码器或编码软件推送到sewise直播服务器分发,用户即可通过PC、手机、平板电脑等多种终端实时观看现场直播内容。常用于年会、发布会、政企会议等网络直播场景中。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 『算法理论学』深度学习推理加速方法之网络层与算子融合
- 【剑指Offer】链表中倒数第k个字节
- pyplot只有两个数值做barplot
- 两个矩阵对应位置相除
- 基于openresty的URL 断路器/熔断器 -- URL-fuse
- 温故知新——Spring AOP(二)
- 2020年,你应该知道 23 个非常有用的 NodeJs 库
- 面试题系列第4篇:重写了equals方法,为什么还要重写hashCode方法?
- LPC17XX之SSP0/1接口
- 宝塔打开ssl面板后打不开登录界面的解决方法
- 记录一下vuedraggable clone的坑,获取数据
- Go语言|go version命令的高级用法
- 基于 git flow + gitlab 协作开发:01
- 嵌入式之GPS
- 嵌入式之一款GPRS模块的应用