前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTMP推流摄像头视频推送至EasyDSS使用EasyPlayer-RTMP WIN播放崩溃闪退是什么原因?

RTMP推流摄像头视频推送至EasyDSS使用EasyPlayer-RTMP WIN播放崩溃闪退是什么原因?

原创
作者头像
TSINGSEE青犀视频
修改2021-03-05 14:29:06
5990
修改2021-03-05 14:29:06
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

TSINGSEE青犀视频联合海康研发的推流摄像头自从上线以来,获得了很多用户的信任。RTMP推流摄像头可以将视频流直接通过RTMP协议推送至直播间,无需增加中间组件或者设备,使用方便简单,配置可参考:海康定制RTMP推流摄像头如何接入EasyDSS视频直播点播平台?

有客户按照以上方式在EasyDSS演示平台上做测试,推流摄像机可以推到EasyDSS演示平台直播间,但是用EasyPlayer-RTMP WIN版去拉取RTMP流做播放的时候,播放器崩溃闪退了。以下为我们的分析过程:

1、先检查EasyPlayer-RTMP WIN版播放器的授权是否正常,检查后得知授权时间没有失效。

2、根据经验来说,播放器本身肯定是可以播放RTMP协议流的,因此该崩溃有两个可能: 1)跟环境有关 2)内存异常引起的 于是我们在客户这个环境中单步调试EasyPlayer-RTMP WIN版Demo,在进入预览按钮事件后就异常退出了。

接下来需要更加细致的排查,一步一步调试,在定义的wszURL数组中,我们发现上传的RTMP完整的URL不完整了,只剩下一半。

3、到这里我们就可以知道是wszURL数组定义长度太短了,只定义了128位的长度。我们给的RTMP流地址的字符串长度大于了128,于是修改定义数组长度为256。

代码语言:javascript
复制
if (m_ChannelId > 0)
	{
		int nChannelId = m_ChannelId;
		m_ChannelId = -1;
		EasyPlayer_CloseStream(nChannelId);
 		if (NULL != pDlgRender)	pDlgRender->SetChannelId(m_ChannelId);
		if (NULL != pDlgRender)			pDlgRender->Invalidate();
		if (NULL != pBtnPreview)		pBtnPreview->SetWindowText(TEXT("Play"));
	}
	else
	{
		wchar_t wszURL[256] = {0,};
		if (NULL != pEdtURL)	pEdtURL->GetWindowTextW(wszURL, sizeof(wszURL));
		if (wcslen(wszURL) < 1)		return;
char szURL[256] = {0,};
__WCharToMByte(wszURL, szURL, sizeof(szURL)/sizeof(szURL[0]));
	char szUsername[32] = {0,};
		char szPassword[32] = {0,};

4、修改数组定义长度后,再编译运行,无报错,成功播放,如下图:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档