Kurento播放失败问题案例分享

举报
YYG@汪汪队 发表于 2020/02/14 10:16:21 2020/02/14
【摘要】 1 问题背景Kurento是WebRTC媒体服务器和一组客户端API,可简化针对Web和智能手机平台的高级视频应用程序的开发。其功能包括视听流的组通信,代码转换,记录,混合,广播和路由。Kurento大致通讯流程如下: 迁移完成后,运行kurento,并未正常播放,正常播放的预期效果如下:2 原因分析问题1:Gstreamer-CRITICAL错误循环出现。 分析过程:1. 直接...

1 问题背景

KurentoWebRTC媒体服务器和一组客户端API,可简化针对Web和智能手机平台的高级视频应用程序的开发。其功能包括视听流的组通信,代码转换,记录,混合,广播和路由。

Kurento大致通讯流程如下:

 

1581646000154597.png


迁移完成后,运行kurento,并未正常播放,正常播放的预期效果如下:

1581646056170637.png



2 原因分析

问题1

Gstreamer-CRITICAL错误循环出现。

1581646074425385.png

 

分析过程:

1.       直接分析日志,感觉像是业务逻辑的问题,但发现日志中ERROR错误太多,看不出来到底是什么原因。

1581646091900318.png

通过gdb 调试,定位pipeline初始化失败。PipelineGstreamer的概念。Kurento底层基于Gstreamer构建,Gstreamer大致框架如下。

1581646124682231.png

其中两个重要的概念elementpipeline

 

结合对Gstreamer的业务理解,重新分析日志,日志中factory no such element nicesrc

 

2.       分析nicesrc element问题。

Nicesrc是有libnice组件编译生成的,包含在libgstnice.so中。Element需要注册才能使用。

 

重新编译,手动指定加载,在加载前后加打印,分析有进行加载libgstnice.so,但没有注册成功nicesrc

1581646180432983.png 

分析libgstnice.so,发现nicesrc并未编译如libgstnice.so。分析libnice编译文件,定位到configure中识别gstreamer版本存在问题。

 

问题2

解决问题1后,Chrome概率性播放成功。

 

分析过程:

1.       抓包对比分析,chromefirefox上的不同。

1581646198855247.png

Chrome上只有信令交互的包,后面的UDP包没有,问题在信令交互部分的校验。

 

2.       搭建x86环境,发现ISV提供的测试程序在x86上的chrome也播放失败,问题在客户的程序。

 

3.       分析客户提供测试程序,发现客户的测试程序实际上是基于kurento官网的提供的测试程序修改的。使用官网的测试程序,在x86上和arm上播放都正常,但官网的测试程序基于的是https协议,客户提供的是http协议。

 

4.       新版Chrome不支持http进行调用摄像头麦克风,客户测试客户端依赖相关调用。

 

3 解决方案

问题1解决方案:

修改libnice组件编译脚本,修改方法如下:

1581646225401380.png

问题2解决方案:

1.       右键点击Chrome桌面快捷方式,打开属性

在快捷方式页-目标中的最后添加输入:--unsafely-treat-insecure-origin-as-secure=http://128.5.68.93:8000

注:http://128.5.68.93:8000为需要访问网站地址,根据实际情况修改

1581646415244292.png

 

2.       Chrome浏览器地址栏输入chrome://flags/, 搜索unsafely
enabled 并填入要授信的域名。

1581646434325719.png

4 总结

1.       开源代码迁移时,如果出现大量错误,且解决相关错误遇到瓶颈时,建议先研究开源代码的实现原理,找出其中的根因。

2.       当出现组件只与特定的第三方软件通讯正常,建议搭建x86服务器进行对比,可能该问题非arm平台和x86平台差异导致的,而是第三方软件的兼容问题。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。