1、主播直播时,iOS及iOS设备上看不到画面,但是可以听到声音。
iOS 上屏幕是黑的nba风云直播有声音不视屏,客户端也是黑的,但客户端会显示一个小型的互动直播屏幕。当与另一个人连接时,观看者会看到对方的屏幕。
原因在主播端,可能是创建房间用的ID和注册IM时用的ID不一样,因为我从1.7升级过来的,也就是原来手机号,但是用手机号登录时,会添加86-xxxx,由于我注册时不需要用户填写86,所以设置里没有86,但是腾讯云后台注册的账号有86,所以登录IM时手动添加了86,但是里没有86前缀,创建的房间里也没有86。
在观看者端得到的却是86,这就导致了不一致,从而引发上述问题。
解决方法:检查观众和主播获取的信息以及IM上注册的信息是否一致。
2、主播直播时,iOS端可以看到画面,但是其他端看不到画面。
该问题主要由于查看器集成导致,需要检查调用流程。
问题可能出在这里请求远程用户的视频数据:
/**
* AVSDK 请求主播数据
*
* @param identifiers 主播ID
*/
public void requestViewList(ArrayList identifiers) {
if (identifiers.size() == 0) return;
// for(int j=0;j
// Log.i("AAAA", "请求主播数据 for j="+j+",identifiers=" + identifiers.get(j));
// }
AVEndpoint endpoint = ((AVRoomMulti) QavsdkApplication.getInstance().getQavsdkControl().getAVContext().getRoom()).getEndpointById(identifiers.get(0));
Log.d("AAAA", "requestViewList hostIdentifier " + identifiers + " endpoint " + endpoint);
if (endpoint != null) {
ArrayList alreadyIds = QavsdkApplication.getInstance().getQavsdkControl().getRemoteVideoIds();//已经存在的IDs
for (String id : identifiers) {//把新加入的添加到后面
alreadyIds.add(id);
}
int viewindex = 0;
Log.i("AAAA", "requestViewList alreadyIds size: " + alreadyIds.size());
for (String id : alreadyIds) {//一并请求
if (viewindex >= 4) break;
AVView view = new AVView();
view.videoSrcType = AVView.VIDEO_SRC_TYPE_CAMERA;
view.viewSizeType = AVView.VIEW_SIZE_TYPE_BIG;
//界面数
mRequestViewList[viewindex] = view;
mRequestIdentifierList[viewindex] = id;
viewindex++;
Log.i("AAAA", "requestViewList 一并请求 id: " + id);
}
int ret = AVEndpoint.requestViewList(mRequestIdentifierList, mRequestViewList, alreadyIds.size(), mRequestViewListCompleteCallback);
Log.i("AAAA", "requestViewList ret : " + ret+",viewindex="+viewindex);
} else {
Toast.makeText(mContext, "Wrong Room!!!! Live maybe close already!", Toast.LENGTH_SHORT).show();
}
}
private AVEndpoint.RequestViewListCompleteCallback mRequestViewListCompleteCallback = new AVEndpoint.RequestViewListCompleteCallback() {
protected void OnComplete(String identifierList[], AVView viewList[], int count, int result) {
Log.i("AAAA", "请求直播数据完成 identifierList[]="+identifierList.length+",viewList="+viewList.length+",count="+count+",result="+count);
// 为什么会有数据
// for (String id : identifierList) {
//
// Log.i("AAAA", "请求直播数据完成 mLiveView.showVideoView REMOTE="+REMOTE+",id="+id);
// mLiveView.showVideoView(REMOTE, id);
// }
// TODO
Log.d(TAG, "RequestViewListCompleteCallback.OnComplete");
}
};
和上面demo的展示对比一下,没有调用for循环,这里返回的数组长度不为0,调用for的结果是看到的是连接麦克风的人的画面。
解释:我请求的参数和demo中的参数一致,但是回调的返回值不一样,API文档中没有详细的解释,需要进一步研究。
在1.7版本中,回调函数没有做任何处理。
我现在的解决办法是把for循环里面的代码注释掉nba风云直播有声音不视屏nba风云直播有声音不视屏,现在观众可以正常观看和连接了,还是要找到根本原因。