相关权限(记得打开相机权限):
<uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />依赖:
compile 'io.pristine:libjingle:11139@aar'
初始化工厂,最好在Application完成:
PeerConnectionFactory.initializeAndroidGlobals( this, true, true, true);具体实现:
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import org.webrtc.AudioSource; import org.webrtc.AudioTrack; import org.webrtc.CameraEnumerationAndroid; import org.webrtc.EglBase; import org.webrtc.MediaConstraints; import org.webrtc.MediaStream; import org.webrtc.PeerConnectionFactory; import org.webrtc.SurfaceViewRenderer; import org.webrtc.VideoCapturerAndroid; import org.webrtc.VideoRenderer; import org.webrtc.VideoSource; import org.webrtc.VideoTrack; public class MainActivity extends AppCompatActivity { private SurfaceViewRenderer mSurfaceViewRenderer; public static final String VIDEO_TRACK_ID = "ARDAMSv0"; public static final String AUDIO_TRACK_ID = "ARDAMSa0"; private PeerConnectionFactory factory; private MediaStream mediaStream; private VideoCapturerAndroid videoCapturer; private MediaConstraints audioConstraints; private MediaConstraints videoConstraints; private AudioTrack localAudioTrack; private VideoTrack localVideoTrack; private EglBase rootEglBase; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSurfaceViewRenderer = (SurfaceViewRenderer) findViewById(R.id.sv_master); factory = new PeerConnectionFactory(); audioConstraints = new MediaConstraints(); videoConstraints = new MediaConstraints(); // 创建视频渲染器 rootEglBase = EglBase.create(); mSurfaceViewRenderer.init(rootEglBase.getEglBaseContext(), null); String cameraDeviceName = CameraEnumerationAndroid.getNameOfFrontFacingDevice(); videoCapturer = (VideoCapturerAndroid) VideoCapturerAndroid.create(cameraDeviceName); VideoSource videoSource = factory.createVideoSource(videoCapturer, videoConstraints); AudioSource audioSource = factory.createAudioSource(audioConstraints); localVideoTrack = factory.createVideoTrack(VIDEO_TRACK_ID, videoSource); localAudioTrack = factory.createAudioTrack(AUDIO_TRACK_ID, audioSource); VideoRenderer renderer = new VideoRenderer(mSurfaceViewRenderer); localVideoTrack.addRenderer(renderer); mediaStream = factory.createLocalMediaStream("ARDAMS"); mediaStream.addTrack(localVideoTrack); mediaStream.addTrack(localAudioTrack); } }
布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <org.webrtc.SurfaceViewRenderer android:id="@+id/sv_master" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>