【问题标题】:Can't get video working for new android SDK of quickBlox无法让视频适用于 quickBlox 的新 android SDK
【发布时间】:2014-10-04 01:26:28
【问题描述】:

在过去的两天里,我一直在尝试让视频聊天为 quickblox 的 android 2.0 SDK 工作。 我可以接听、拨打、拒绝视频通话,但不会在 Surfaceview 上发送或接收视频。

我可以看到自己的摄像头视频,并且可以正常切换摄像头。

我已经多次查看演示,我几乎逐行复制它。

谁能给我一些关于如何让它工作的提示?我会非常感激的。

这是我的 QBChatListener 声明

 OnQBVideoChatListener qbVideoChatListener = new OnQBVideoChatListener() {
    @Override
    public void onCameraDataReceive(byte[] videoData) {

        QBVideoChatController.getInstance().sendVideo(videoData);
        Log.d("send", "video");

    }

    @Override
    public void onMicrophoneDataReceive(byte[] audioData) {
        if (!muteOn) {
            QBVideoChatController.getInstance().sendAudio(audioData);
            Log.d("send", "audio");

        }
    }

    @Override
    public void onOpponentVideoDataReceive(byte[] videoData) {
        toUserSurfaceView.render(videoData);
        Log.d("receive", "video");
    }

    @Override
    public void onOpponentAudioDataReceive(byte[] audioData) {
        QBVideoChatController.getInstance().playAudio(audioData);
        Log.d("receive", "audio");

    }



    @Override
    public void onProgress(boolean progress) {
//            progressBar.setVisibility(progress ? View.VISIBLE : View.GONE);
    }

    @Override
    public void onVideoChatStateChange(CallState callState, VideoChatConfig receivedVideoChatConfig) {
        videoChatConfig = receivedVideoChatConfig;

        switch (callState) {

            case ON_CALL_START:
                Log.d("ON_CALL_START", "ON_CALL_START");

                break;
            case ON_CANCELED_CALL:

                videoChatConfig = null;
                Log.d("on_cancel", "on_cancel");


                //play sound
                goBack();


                break;
            case ON_CALL_END:
                Log.d("oncallend", "oncallend");

                // clear opponent view
                toUserSurfaceView.clear();
                goBack();

                break;
            case ACCEPT:

                callingTitle.setText("Attempting to connect with \n" + callTitle);
                mySurfaceView.setVisibility(View.VISIBLE);
                toUserSurfaceView.setVisibility(View.VISIBLE);
                QBVideoChatController.getInstance().acceptCallByFriend(videoChatConfig, null);
                Log.d("accept", "accept");


                break;
            case ON_ACCEPT_BY_USER:
                callingTitle.setText(callTitle + "\n accepted. Attempting to connect");
                mySurfaceView.setVisibility(View.VISIBLE);
                toUserSurfaceView.setVisibility(View.VISIBLE);

                QBVideoChatController.getInstance().onAcceptFriendCall(videoChatConfig, null);
                Log.d("ON_ACCEPT_BY_USER", "ON_ACCEPT_BY_USER");

                break;
            case ON_REJECTED_BY_USER:


                                    break;
            case ON_DID_NOT_ANSWERED:


                break;


            case ON_CONNECTED:
                hideTitleAndIndicator();
                Log.d("onConnected", "onConnected");

                switchCameraButton.setEnabled(true);

                break;
            case ON_START_CONNECTING:
                Log.d("onstartconnection", "onstartconnection");


                break;

        }

    }

以下是我在日志中遇到的错误:

10-03 21:08:36.910    D/QBDataSenders﹕ true false false
10-03 21:08:36.910    D/QBDataSenders﹕ videoData didn`t send
10-03 21:08:36.918    D/CameraView﹕ time=368 9600 1000
10-03 21:08:36.918    D/CameraView﹕ processed my audio frame, time=368, size=0.9765625 kb false
10-03 21:08:36.918    D/QBDataSenders﹕ audiData didn`t send
10-03 21:08:36.918    D/send﹕ audio
10-03 21:08:36.957    D/skia﹕ onFlyCompress
10-03 21:08:37.012    GC_FOR_ALLOC freed 1218K, 13% free 13441K/15392K, paused 32ms, total 32ms
10-03 21:08:37.051    D/QBDataSenders﹕ true false false
10-03 21:08:37.051    D/QBDataSenders﹕ videoData didn`t send

还有

10-03 21:23:09.528    W/System.err﹕ java.lang.InterruptedException
10-03 21:23:09.528     W/System.err﹕ at java.lang.VMThread.sleep(Native Method)
10-03 21:23:09.528     W/System.err﹕ at java.lang.Thread.sleep(Thread.java:1031)
10-03 21:23:09.535     W/System.err﹕ at java.lang.Thread.sleep(Thread.java:1013)
10-03 21:23:09.535    W/System.err﹕ at com.quickblox.module.videochat.core.objects.AudioRecorder$AudioPlayingRunnable.run(AudioRecorder.java:126)
10-03 21:23:09.535    W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
10-03 21:23:09.535    W/System.err﹕ java.lang.InterruptedException
10-03 21:23:09.535    W/System.err﹕ java.lang.InterruptedException
10-03 21:23:09.535    W/System.err﹕ at java.lang.VMThread.sleep(Native Method)
10-03 21:23:09.535   W/System.err﹕ at java.lang.Thread.sleep(Thread.java:1031)
10-03 21:23:09.535    W/System.err﹕ at java.lang.Thread.sleep(Thread.java:1013)
10-03 21:23:09.535   W/System.err﹕ at com.quickblox.module.videochat.core.objects.AudioRecorder$AudioPlayingRunnable.run(AudioRecorder.java:126)
10-03 21:23:09.535   W/System.err﹕ at java.lang.Thread.run(Thread.java:856)

10-03 22:27:49.824   W/System.err﹕ java.lang.InterruptedException
10-03 22:27:49.831   W/System.err﹕ at java.lang.VMThread.sleep(Native Method)
10-03 22:27:49.831   W/System.err﹕ at java.lang.Thread.sleep(Thread.java:1031)
10-03 22:27:49.831   W/System.err﹕ at java.lang.Thread.sleep(Thread.java:1013)
10-03 22:27:49.831  W/System.err﹕ at com.quickblox.module.videochat.core.objects.XMPPConnectionClient$CallingRunnable.run(XMPPConnectionClient.java:150)

【问题讨论】:

  • 如果我在 Eclipse 而不是 Android Studio 中工作,我该如何解决这个问题?除了这个,我已经设法使一切正常。

标签: android quickblox videochat video-conferencing


【解决方案1】:

此方案适用于eclipse Android项目结构:-

在 SDK 示例中,您会在项目中找到编解码器的 .SO 文件。将此文件复制到您的 libs/armeabi 文件夹中。

【讨论】:

    【解决方案2】:

    在拉了很多头发并得到 styler1972 的帮助后,这对我有用。

    我不知道哪一个确切的解决了我的问题,但这对我有用,所以我将包括所有这些。

    1. 确保您的 libs 文件夹中有 armeabi 编解码器,就像演示项目一样。

    2. 在 gradle 中确保你有

      构建脚本 { 存储库{ mavenCentral() } 依赖{ 类路径'com.android.tools.build:gradle:0.12.2' } }

      然后

      安卓{

      compileSdkVersion 19 buildToolsVersion '20.0.0'

      sourceSets {
          main {
              manifest.srcFile 'src/main/AndroidManifest.xml' //location of your manifest
              java.srcDirs = ['src']
              res.srcDirs = ['src/main/res']
          }
      }
      
      defaultConfig {
          applicationId "your bundle id"
          minSdkVersion 16
          targetSdkVersion 19
          versionCode 1
          versionName "1.0"
      }
      
      // don't use proguard
      //    buildTypes {
      //        release {
      //            runProguard true
      //            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      //        }
      //    }
      //    lintOptions {
      //        abortOnError true
      //    }
      
      task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
          destinationDir file("$buildDir/native-libs")
          baseName 'native-libs'
          extension 'jar'
          from fileTree(dir: 'libs', include: '**/*.so')
          into 'lib/'
      }
      
      tasks.withType(JavaCompile) {
          compileTask -> compileTask.dependsOn(nativeLibsToJar)
      }
      
      dependencies {
          compile fileTree(dir: 'libs', include: '*.jar')
          compile fileTree(dir: '../jar', include: '*.jar')
          compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
      
      }
      

    在那之后,我终于可以让它工作了!

    【讨论】:

    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多