基于EasyPusher sdk库工程(即library module)实现一个推送客户端非常简单便捷,因为sdk端已经将各种烦人的状态维护\错误检查\权限判定\UI同步等功能都实现了,开发者仅仅只需要实现若干接口即可。
今天遇到一个客户需要用EasyPusher推RTSP流至EasyDarwin流媒体服务,然后需要用Kurento服务拉EasyDarwin分发的RTSP流做其它应用,但是默认EasyPusher的流在EasyDarwin是有.sdp后缀的,但是Kurento服务不支持,需要我们技术进行协助。
我们先看下正常的效果,如下图,红色标注的为视频流的后缀名.sdp。
这个是由推流端决定的流名称,需要修改EasyPusher代码模块,StartPush函数中定义参数sPushName为流名称,函数定义如下:
-
int CSourceManager::StartPush(char* ServerIp, int nPushPort, char* sPushName, int nPushBufSize, bool bPushRtmp)
-
-
m_sPushInfo.pusherHandle = EasyPusher_Create();
-
strcpy(m_sPushInfo.pushServerAddr, ServerIp);
-
m_sPushInfo.pushServerPort = nPushPort;
-
strcpy(m_sPushInfo.sdpName, sPushName);
-
Easy_U32 nRet =
0;
-
if (
NULL != m_sPushInfo.pusherHandle )
-
{
-
EasyPusher_SetEventCallback(m_sPushInfo.pusherHandle, __EasyPusher_Callback,
0,
NULL);
-
nRet = EasyPusher_StartStream(m_sPushInfo.pusherHandle ,
-
ServerIp, nPushPort, sPushName, EASY_RTP_OVER_TCP,
"",
"",
-
(EASY_MEDIA_INFO_T*)&m_mediainfo, nPushBufSize,
0);
//512-2048
-
}
-
else
-
{
-
nRet =
-1;
-
}
-
m_bPushRtmp = bPushRtmp;
-
if (bPushRtmp)
-
{
-
if (!m_pEasyrtmp)
-
{
-
m_pEasyrtmp=
new EasyRtmp();
-
}
-
char szURL[MAX_PATH];
-
memset(szURL,
0,
sizeof(MAX_PATH));
-
sprintf(szURL,
"rtmp://%s:1935/live/%s", ServerIp, sPushName); nRet = m_pEasyrtmp->Link(szURL,
1280);
-
}
其中sPushName 为传入的Stream名称,我们强制定义sPushName=”2”
看下效果如下图:
关于EasyDarwin
EasyDarwin是TSINGSEE青犀视频研发团队研发的开源平台,能够帮助流媒体开发者快速构建流媒体平台,更快更便捷的实现移动互联网视频直播或点播。目前其衍生的视频流媒体平台包括EasyGBS、EasyNVR、EasyDSS、EasyCVR等,此外还包括EasyPlayer项目播放器,如果大家感兴趣,欢迎大家联系我们了解咨询。
转载:https://blog.csdn.net/TsingSee/article/details/109819592
查看评论