Integración de transmisión interactiva en vivo de Tencent Cloud con sonido, sin investigación y resolución de imágenes

Cuando integré la transmisión interactiva en vivo, solo seleccioné las relacionadas con ver la transmisión en vivo. No se agregó nada más al proyecto, pero durante el proceso de integración, cuando entré a la sala de transmisión en vivo, pude escuchar la voz del presentador, y fue bueno enviar me gusta y comentarios, pero no pude ver la imagen. A continuación se muestran los escenarios que he encontrado

1. Cuando el anfitrión inicia la transmisión en vivo, ni el IOS ni el Android pueden ver la pantalla pero pueden escuchar el sonido

El ios se muestra directamente en una pantalla negra y el terminal de Android también se muestra en una pantalla negra, pero el terminal de Android muestra una pequeña pantalla de la transmisión interactiva en vivo. Al conectar el micrófono con otra persona, la audiencia ve directamente la imagen de la persona Lianmai;

Esta razón está en el lado del host. Puede ser que el hostId de la sala creada por el host sea diferente del ID utilizado durante el registro de IM. Debido a la terminal de Android, actualicé desde 1.7, hostId es el número de teléfono móvil original, pero se agregará 86-xxxx cuando se use el número de teléfono móvil. Debido a que no necesito completar 86 al registrarme, el hostId configurado es no 86 Sí, pero la cuenta registrada en el backend de Tencent Cloud tiene 86, por lo que al iniciar sesión en IM, 86 se agrega manualmente, pero no hay un prefijo de 86 en userInfo, pero el ID de host para crear la sala no es 86.

El hostId obtenido en el lado de la audiencia tiene 86, lo que conduce a una inconsistencia, lo que conduce a los problemas anteriores.

Solución: Verifique el hostid obtenido por la audiencia y el hostid del host, así como el hostid del IM registrado, y conserve el mismo.

2. Cuando el anfitrión inicia la transmisión en vivo, la pantalla se puede ver en el lado de IOS, pero no en el lado de Android

Esta pregunta: principalmente es la cuestión de la integración de la audiencia de Android. Necesito verificar el proceso de llamada

Escriba la descripción de la imagen aquí

El problema puede surgir al solicitar los datos de video del usuario remoto aquí:

/**
     * AVSDK 请求主播数据
     *
     * @param identifiers 主播ID
     */
    public void requestViewList(ArrayList<String> identifiers) {
        if (identifiers.size() == 0) return;

     //   for(int j=0;j<identifiers.size();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<String> 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");
        }
    };

Escriba la descripción de la imagen aquí

Aquí se compara mRequestViewListCompleteCallback La pantalla de arriba no llama a showView en el ciclo for, y la longitud de la matriz devuelta aquí no es 0. Llamar a showView de for conduce a una imagen de Lianmairen.

Explicación: AVENdpoint.requestViewList. Los parámetros que solicité son los mismos que los de la demostración, pero el valor de retorno de la devolución de llamada es diferente. No hay una explicación detallada en el documento de la API, que queda en estudio.

En la versión 1.7, la función de devolución de llamada no realizaba ningún procesamiento. Sin eso para bucle

Mi solución actual es comentar el código en el bucle for. Hasta ahora, la audiencia puede mirar y conectar el micrófono normalmente. Todavía necesito estudiar para encontrar la causa raíz.

Supongo que te gusta

Origin blog.csdn.net/android_freshman/article/details/51852842
Recomendado
Clasificación