RTMP推流摄像头设计实现3

来源:互联网 发布:大数据 维基百科 编辑:程序博客网 时间:2024/06/06 00:07

RTMP推流摄像头设计实现3 - 配置文件

概要

用户对推流通道的配置信息需要长期保存,以便程序重启时,仍能得到用户的配置,固需要一个配置文件来存储这些信息。
配置文件常规格式有多种,INI、XML、JSON等,由于推流配置项并不复杂,这里选用最简单的INI格式来存储。
网上搜索后并没找到合意INI库,本着自以为简单的心理,准备自己去实现,等实现时才觉得其实并不简单,接口要易用,支持中文等。
但已经开始,就把它搞完吧。

接口定义

  • 句柄的申请与释放
    eini_handle eini_alloc(void);
    void eini_free(eini_handle h);
  • 配置文件的导入与保存
    int eini_load_file(eini_handle h, const char* file);
    int eini_save_file(eini_handle h, const char* file);
  • INI段与参数的基本操作
    int eini_count(eini_handle h, int secidx);
    int eini_query(eini_handle h, int secidx, const char* name, int keyidx);
    int eini_new(eini_handle h, int secidx, int parmidx, const char* name, const char* value);
    int eini_get(eini_handle h, int secidx, int parmidx, char* namebuf, char* valuebuf);
    int eini_set(eini_handle h, int secidx, int parmidx, const char* name, const char* value);
    int eini_delete(eini_handle h, int secidx, int parmidx);
  • 快捷操作,方便用户直接调用
    int eini_ext_new(eini_handle h, const char* sec_key, const char* value);
    int eini_ext_get(eini_handle h, const char* sec_key, char* valuebuf);
    int eini_ext_scanf(eini_handle h, const char* sec_key, const char* fmt, …);
    int eini_ext_set(eini_handle h, const char* sec_key, const char* value);
    int eini_ext_printf(eini_handle h, const char* sec_key, const char* fmt, …);
    int eini_ext_delete(eini_handle h, const char* sec_key);

实现方案

为了方便调用,想了很多接口定义,最终形成上述,感觉还是复杂了点,先这样了。
INI文件中多个段及段内参数对构成,每个参数对由key=value组成。
为了接口简易及易实现,对段名及key作了约束,
段名与key由字母或数字或下划线组成,且必须字母开头(变量名定义)
参数值只要不含有控制字符就行,(支持中文)
剩下就是写代码实现了。

获取更多信息

邮件:support@easydarwin.org
WEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
EasyDarwin

原创粉丝点击