我们在live555开源流媒体服务器的基础上封装了一层,使得用户更能轻松地调用到live555,省去了复杂的RTSP/RTCP与RTP流程,只需要传入参数和编码后的数据就可以了。
在API使用说明之前,先列一下功能点吧:
- 支持256路音视频同步转发(具体受限于网络环境和CPU);
- 支持视频编码: H264、H265、MPEG4、MJPEG;
- 支持音频编码: G711、G726, AAC;
- 支持网络: IPv4、IPv6;
- Linux环境下支持epoll;
- 支持多线程;
- 支持视频、音频、自定义数据传输;
- 支持Basic、Digest验证;
- 支持录像回放流控制,如暂停、恢复播放、调整倍率、seek;
- 支持获取已连接客户端列表;
- 支持动态创建通道, 让调用层自由控制每一路流;
- 支持服务端主动关闭指定通道;
- 支持windows、Linux;
- 针对Linux系统下的数据发送进行性能优化;
- 针对任务调度进行性能优化;
- 7x24小时频繁断连测试无异常;
- 7x24小时正常拷机无异常;
API调用说明
/* 激活 */
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_Activate(const char *license);
/* 启动 RTSP Server服务 */
/*设置监听端口, 回调函数及自定义数据 */
/*
listenPort: 监听端口
realm: 服务端标识
authType: 用户验证类型, 可选择不验证、Basic、Digest三种;
username: 验证用户名 用户名和密码还可使用EasyRtspServer_AddUser添加或EasyRtspServer_DelUser删除
password: 验证密码
callback: 回调函数
userPtr: 用户自定义指针
*/
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_Startup(Easy_U16 listenPort, const char *realm,
EASY_AUTHENTICATION_TYPE_ENUM authType, const char *username, const char *password,
EasyRtspServer_Callback callback, void *userPtr);
/* 终止 RTSP Server */
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_Shutdown();
//创建通道
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_CreateChannel(const char *resourceName,
EASY_CHANNEL_HANDLE *channelHandle, void *channelPtr);
//发送帧数据
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_PushFrame(EASY_CHANNEL_HANDLE channelHandle,
EASY_AV_Frame *frame);
//删除通道
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_DeleteChannel(EASY_CHANNEL_HANDLE *channelHandle);
//分辨率变化 只要视频或音频参数变化时, 调用 EasyRtspServer_ResetChannel
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_ResetChannel(EASY_CHANNEL_HANDLE channelHandle);
//添加用户 或 根据用户名修改用户密码
//如果添加的用户名不存在,则为新增, 如已存在,则为修改密码
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_AddUser(const Easy_U8 *username, const Easy_U8 *password);
//删除用户
Easy_API Easy_I32 Easy_APICALL EasyRtspServer_DelUser(const Easy_U8 *username);
EasyRTSPServer Github地址:https://github.com/tsingsee/EasyRTSPServer