pjsua视频呼叫后收不到对方的视频

pjsua中视频呼叫正常流程是电脑端向服务器发起呼叫后,不断的向服务器发送本地视频流,以保证服务器知道电脑端的视频流地址,当服务器将远程视频流发送到电脑端后,

电脑端停止向服务器发送视频流即可。

出现问题是大多数电脑正常接收服务器视频流并显示,有的电脑不插摄像头接收不到服务端的视频流,有的笔记本有摄像头也接收不到视频流

查找原因为:有的电脑端不插摄像头无法向服务器发送视频流,导致服务器不知道电脑端的视频流地址,所以视频流传不回来。

最后确定问题根源为:程序中用pjsua采集本地视频时,没有指定采集源,采集源用摄像头或者Colorbar generator时,都会正常的向服务器发送本地视频流,

但是有的电脑安装了虚拟摄像头,当采集源是虚拟摄像头的时候,pjsua不支持虚拟摄像头,发送视频流失败。

解决方法:在pjsua中发送本地视频流之前,指定采集源为Colorbar generator

pjsua_media_channel_update函数中如下位置添加如下代码(用到的几个变量的声明没有贴出来)

/* Update audio channel */
		if (media_changed) {
			pjsua_vid_enum_devs(vid_dev_info, &nDeviceMax);
			for (nDeviceCount=0;nDeviceCount<nDeviceMax;nDeviceCount++) {//查找视频采集设备为<span style="font-family: Arial, Helvetica, sans-serif;">Colorbar generator</span>
				if (vid_dev_info[nDeviceCount].fmt_cnt && (vid_dev_info[nDeviceCount].dir==PJMEDIA_DIR_ENCODING || vid_dev_info[nDeviceCount].dir==PJMEDIA_DIR_ENCODING_DECODING)) {
					if (!strcmp("Colorbar generator",vid_dev_info[nDeviceCount].name))
					{
						call_med->strm.v.cap_dev = vid_dev_info[nDeviceCount].id;//指定采集源为<span style="font-family: Arial, Helvetica, sans-serif;">Colorbar generator</span>
						break;
					}
				}
			}
		    status = pjsua_vid_channel_update(call_med,
						      call->inv->pool, si,
						      local_sdp, remote_sdp);

20170905更新:

pjsua有设置视频采集设备的接口,直接调用设置合适的视频采集设备即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Barry__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值