我們在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