安卓网络实时时钟

标签 android android-studio android-ndk webrtc

我正在尝试在我的 android 应用程序中实现 Web Rtc 以进行视频聊天,但出现错误。

E/rtc: #
   # Fatal error in ../../webrtc/modules/audio_device/android/audio_manager.cc, line 77
   # Check failed: HasDeviceObjects()
   # 
   #

我也在 build.gradle 和 NDK 支持中添加了依赖项。

compile 'io.pristine:libjingle:9127@aar'

ndk {
        moduleName "my-module-name"
        cFlags "-std=c++11 -fexceptions"
        ldLibs "log"
        stl "gnustl_shared"
        abiFilter "armeabi-v7a"
    }

这是代码

public class MainActivity extends AppCompatActivity {

Button cam1;
VideoRenderer videoRenderer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    cam1=(Button)findViewById(R.id.button1);
    final PeerConnectionFactory peerConnectionFactory=new PeerConnectionFactory();
    PeerConnectionFactory.initializeAndroidGlobals(this, true, true, true, true);

    //Acquiring source info
    int  no_of_cams = VideoCapturerAndroid.getDeviceCount(); // no of sources
    final String sec_cam = VideoCapturerAndroid.getNameOfFrontFacingDevice(); // sec_cam name
    final String pri_cam = VideoCapturerAndroid.getNameOfBackFacingDevice(); // pri_cam name
    final VideoCapturer capturer1 = VideoCapturerAndroid.create(sec_cam); //capturer for sec_cam
    final MediaConstraints videoConstraints = new MediaConstraints();
    final MediaConstraints audioConstraints = new MediaConstraints();

    //creating GLSurface
    GLSurfaceView glSurfaceView=(GLSurfaceView)findViewById(R.id.gl);
    //video renderer gui
    VideoRendererGui.setView(glSurfaceView,null);
    try {
        videoRenderer=VideoRendererGui.createGui(0,0,100,100,
                VideoRendererGui.ScalingType.SCALE_ASPECT_FILL,false);
    } catch (Exception e) {
        e.printStackTrace();
    }
    // Front Cam Action
    cam1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // setting up tracks from sources
            VideoSource videoSource = peerConnectionFactory.createVideoSource(capturer1,videoConstraints);
            VideoTrack  videoTrack  = peerConnectionFactory.createVideoTrack(sec_cam, videoSource);
            AudioSource audioSource = peerConnectionFactory.createAudioSource(audioConstraints);
            AudioTrack  audioTrack  = peerConnectionFactory.createAudioTrack(sec_cam,audioSource);
           // adding video to renderer
            videoTrack.addRenderer(videoRenderer);
            MediaStream mediaStream=peerConnectionFactory.createLocalMediaStream(sec_cam);
            mediaStream.addTrack(videoTrack);
            mediaStream.addTrack(audioTrack);
        }
    });}}

最佳答案

首先调用 initializeAndroidGlobals。

PeerConnectionFactory.initializeAndroidGlobals(this, true, true, true, true);
final PeerConnectionFactory peerConnectionFactory=new PeerConnectionFactory();

关于安卓网络实时时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37718768/

相关文章:

android - Facebook SDK : share local picture with text is driving me crazy

android - 为什么我无法构建 Android 源代码?

Android Studio 没有正确选择文本

java - 按字母顺序对 ListView 的元素进行排序

android - C++ - 将结构转换为字符

android - 移植:Android/Linux 客户端/服务器套接字通信问题

android - 将OpenCV 3.2.0与android studio集成时出错

android - 如何通过代码圆化 AlertDialog 的角

android studio 无法连接调试设备

android - glTexSubImage2D 不工作