diff --git a/README.md b/README.md
index 60e8078b..f4b65c3e 100644
--- a/README.md
+++ b/README.md
@@ -191,6 +191,7 @@ bash build_docker_images.sh
- [jessibuca](https://github.com/langhuihui/jessibuca) 基于wasm支持H265的播放器
- [wsPlayer](https://github.com/v354412101/wsPlayer) 基于MSE的websocket-fmp4播放器
- [BXC_gb28181Player](https://github.com/any12345com/BXC_gb28181Player) C++开发的支持国标GB28181协议的视频流播放器
+ - [RTCPlayer](https://github.com/leo94666/RTCPlayer) 一个基于Android客户端的的RTC播放器
- WEB管理网站
- [zlm_webassist](https://github.com/1002victor/zlm_webassist) 本项目配套的前后端分离web管理项目
@@ -366,6 +367,7 @@ bash build_docker_images.sh
[jamesZHANG500](https://github.com/jamesZHANG500)
[weidelong](https://github.com/wdl1697454803)
[小强先生](https://github.com/linshangqiang)
+[李之阳](https://github.com/leo94666)
同时感谢JetBrains对开源项目的支持,本项目使用CLion开发与调试:
diff --git a/README_en.md b/README_en.md
index 865a2e7f..fe999fb7 100644
--- a/README_en.md
+++ b/README_en.md
@@ -373,6 +373,8 @@ bash build_docker_images.sh
- [WebSocket-fmp4 player based on MSE](https://github.com/v354412101/wsPlayer)
- [Domestic webrtc sdk(metaRTC)](https://github.com/metartc/metaRTC)
- [GB28181 player implemented in C++](https://github.com/any12345com/BXC_gb28181Player)
+ - [Android RTCPlayer](https://github.com/leo94666/RTCPlayer)
+
## License
@@ -525,6 +527,7 @@ Thanks to all those who have supported this project in various ways, including b
[jamesZHANG500](https://github.com/jamesZHANG500)
[weidelong](https://github.com/wdl1697454803)
[小强先生](https://github.com/linshangqiang)
+[李之阳](https://github.com/leo94666)
Also thank to JetBrains for their support for open source project, we developed and debugged zlmediakit with CLion:
diff --git a/webrtc_player/android/.gitignore b/webrtc_player/android/.gitignore
deleted file mode 100644
index d4c3a57e..00000000
--- a/webrtc_player/android/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
-local.properties
-/.idea/
diff --git a/webrtc_player/android/app-debug.apk b/webrtc_player/android/app-debug.apk
deleted file mode 100644
index 969d48b7..00000000
Binary files a/webrtc_player/android/app-debug.apk and /dev/null differ
diff --git a/webrtc_player/android/app/.gitignore b/webrtc_player/android/app/.gitignore
deleted file mode 100644
index c591fdeb..00000000
--- a/webrtc_player/android/app/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/build
-.cxx
\ No newline at end of file
diff --git a/webrtc_player/android/app/build.gradle b/webrtc_player/android/app/build.gradle
deleted file mode 100644
index cfd25638..00000000
--- a/webrtc_player/android/app/build.gradle
+++ /dev/null
@@ -1,54 +0,0 @@
-plugins {
- id 'com.android.application'
- id 'org.jetbrains.kotlin.android'
- id 'kotlin-android-extensions'
- id 'kotlin-kapt'
-
-}
-apply plugin: 'kotlin-android'
-
-android {
- compileSdk 32
-
- defaultConfig {
- applicationId "com.zlmediakit.webrtc"
- minSdk 21
- targetSdk 32
- versionCode 1
- versionName "1.0"
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = '1.8'
- }
-}
-
-dependencies {
-
- implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.5.1'
- implementation 'com.google.android.material:material:1.6.1'
- implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
- testImplementation 'junit:junit:4.13.2'
- androidTestImplementation 'androidx.test.ext:junit:1.1.3'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
- implementation 'com.google.code.gson:gson:2.8.9'
-
- implementation("com.squareup.okhttp3:okhttp:4.10.0")
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
-
- implementation 'org.webrtc:google-webrtc:1.0.32006'
-
-}
\ No newline at end of file
diff --git a/webrtc_player/android/app/proguard-rules.pro b/webrtc_player/android/app/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/webrtc_player/android/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/androidTest/java/com/zlmediakit/webrtc/ExampleInstrumentedTest.kt b/webrtc_player/android/app/src/androidTest/java/com/zlmediakit/webrtc/ExampleInstrumentedTest.kt
deleted file mode 100644
index 645a1102..00000000
--- a/webrtc_player/android/app/src/androidTest/java/com/zlmediakit/webrtc/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zlmediakit.webrtc
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.zlmediakit.webrtc", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/AndroidManifest.xml b/webrtc_player/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 81281350..00000000
--- a/webrtc_player/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/java/com/zlmediakit/webrtc/MainActivity.kt b/webrtc_player/android/app/src/main/java/com/zlmediakit/webrtc/MainActivity.kt
deleted file mode 100644
index 15a8efc8..00000000
--- a/webrtc_player/android/app/src/main/java/com/zlmediakit/webrtc/MainActivity.kt
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.zlmediakit.webrtc
-
-import android.annotation.SuppressLint
-import android.graphics.drawable.BitmapDrawable
-import android.graphics.drawable.Drawable
-import android.os.Bundle
-import android.widget.Toast
-import androidx.appcompat.app.AppCompatActivity
-import kotlinx.android.synthetic.main.activity_main.*
-import kotlinx.android.synthetic.main.activity_main.view.*
-
-
-class MainActivity : AppCompatActivity() {
-
- private var isSpeaker = true
-
- @SuppressLint("SetTextI18n")
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
-
- lifecycle.addObserver(web_rtc_sv)
-
- //http://124.223.98.45/index/api/webrtc?app=live&stream=test&type=play
- url.setText("http://124.223.98.45/index/api/webrtc?app=live&stream=test&type=play")
-
- //http://192.168.1.17/index/api/webrtc?app=live&stream=test&type=play
- btn_play.setOnClickListener {
- web_rtc_sv?.setVideoPath(url.text.toString())
- web_rtc_sv.start()
- }
-
- web_rtc_sv.setOnErrorListener { errorCode, errorMsg ->
- runOnUiThread {
- Toast.makeText(this, "errorCode:$errorCode,errorMsg:$errorMsg", Toast.LENGTH_SHORT)
- .show()
- }
- }
-
-
- btn_pause.setOnClickListener {
- web_rtc_sv?.pause()
- }
-
- btn_resume.setOnClickListener {
- web_rtc_sv?.resume()
- }
-
- btn_screenshot.setOnClickListener {
- web_rtc_sv?.screenshot {
- runOnUiThread {
- iv_screen.setImageDrawable(BitmapDrawable(it))
- }
- }
- }
-
- btn_mute.setOnClickListener {
- web_rtc_sv.mute(true)
- }
-
-
- selectAudio()
- btn_speaker.setOnClickListener {
- selectAudio()
- }
-
- }
-
- fun selectAudio(){
- if (isSpeaker){
- btn_speaker.setText("扬声器")
- web_rtc_sv.setSpeakerphoneOn(isSpeaker)
- }else{
- btn_speaker.setText("话筒")
- web_rtc_sv.setSpeakerphoneOn(isSpeaker)
- }
- isSpeaker=!isSpeaker
- }
-}
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/java/com/zlmediakit/webrtc/WebRTCSurfaceView.kt b/webrtc_player/android/app/src/main/java/com/zlmediakit/webrtc/WebRTCSurfaceView.kt
deleted file mode 100644
index 3e94171c..00000000
--- a/webrtc_player/android/app/src/main/java/com/zlmediakit/webrtc/WebRTCSurfaceView.kt
+++ /dev/null
@@ -1,439 +0,0 @@
-package com.zlmediakit.webrtc
-
-import android.content.Context
-import android.graphics.Bitmap
-import android.media.AudioManager
-import android.util.AttributeSet
-import android.util.Log
-import android.view.LayoutInflater
-import android.widget.RelativeLayout
-import androidx.lifecycle.DefaultLifecycleObserver
-import androidx.lifecycle.LifecycleOwner
-import com.google.gson.Gson
-import okhttp3.*
-import okhttp3.MediaType.Companion.toMediaType
-import okhttp3.MediaType.Companion.toMediaTypeOrNull
-import org.webrtc.*
-import org.webrtc.RendererCommon.ScalingType
-import org.webrtc.audio.AudioDeviceModule
-import org.webrtc.audio.JavaAudioDeviceModule
-import java.io.IOException
-import java.util.*
-
-public class WebRTCSurfaceView(context: Context, attrs: AttributeSet?) :
- RelativeLayout(context, attrs), DefaultLifecycleObserver, RendererCommon.RendererEvents {
-
-
- private data class sdp(var sdp: String, var username: String, var password: String)
-
- private data class SdpResponse(var code: Int, var id: String, var sdp: String, var type: String)
-
- private enum class ErrorCode(val errorCode: Int) {
- SUCCESS(0x00),
- GET_REMOTE_SDP_ERROR(0x01);
- }
-
-
- companion object {
- private val TAG = "WebRTCSurfaceView"
-
- }
-
- private var mContext: Context = context
-
- private val eglBase: EglBase = EglBase.create()
- private var mEGLBaseContext: EglBase.Context = eglBase.eglBaseContext
-
- private lateinit var videoUrl: String;
-
- private var mPeerConnectionFactory: PeerConnectionFactory? = null
-
- private var mLocalMediaStream: MediaStream? = null
- private var mLocalAudioTrack: AudioTrack? = null
- private var mAudioSource: AudioSource? = null
-
- private var mLocalSessionDescription: SessionDescription? = null
- private var mRemoteSessionDescription: SessionDescription? = null
-
- private var mLocalPeer: Peer? = null
-
- private var mSurfaceViewRenderer: SurfaceViewRenderer
-
- private lateinit var OnErrorListener: (errorCode: Int, errorMsg: String) -> Unit?
-
- fun setOnErrorListener(listener: (errorCode: Int, errorMsg: String) -> Unit) {
- this.OnErrorListener = listener
- }
-
- private lateinit var OnPreparedListener: () -> Unit?
-
- fun setOnPreparedListener(listener: () -> Unit) {
- this.OnPreparedListener = listener
- }
-
- private val audioManager: AudioManager
-
-
- init {
-
- val view = LayoutInflater.from(mContext).inflate(R.layout.layout_videoview, this)
-
- mPeerConnectionFactory = createConnectionFactory()
-
- mSurfaceViewRenderer = view.findViewById(R.id.surface_view_renderer)
-
- mSurfaceViewRenderer.init(mEGLBaseContext, this)
- mSurfaceViewRenderer.setScalingType(ScalingType.SCALE_ASPECT_FILL)
- mSurfaceViewRenderer.setEnableHardwareScaler(true)
-
-
- //创建媒体流
- mLocalMediaStream = mPeerConnectionFactory?.createLocalMediaStream("ARDAMS")
- //采集音频
- mAudioSource = mPeerConnectionFactory?.createAudioSource(createAudioConstraints())
- mLocalAudioTrack = mPeerConnectionFactory?.createAudioTrack("ARDAMSa0", mAudioSource)
-
- //添加Tracks
- mLocalMediaStream?.addTrack(mLocalAudioTrack)
-
- audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
- audioManager.isSpeakerphoneOn = false
-
-
- }
-
-
- private fun set(width: Int, height: Int) {
- layoutParams.width = width
- layoutParams.height = height
- }
-
- private fun createConnectionFactory(): PeerConnectionFactory? {
-
- val options = PeerConnectionFactory.InitializationOptions.builder(mContext)
- .setEnableInternalTracer(false)
- .createInitializationOptions()
-
- PeerConnectionFactory.initialize(options)
-
- val videoEncoderFactory = DefaultVideoEncoderFactory(
- mEGLBaseContext,
- true,
- true
- )
-
- val videoDecoderFactory = DefaultVideoDecoderFactory(mEGLBaseContext)
-
-
- val audioDevice = createJavaAudioDevice()
- val peerConnectionFactory = PeerConnectionFactory.builder()
- .setAudioDeviceModule(audioDevice)
- .setVideoEncoderFactory(videoEncoderFactory)
- .setVideoDecoderFactory(videoDecoderFactory)
- .createPeerConnectionFactory()
- audioDevice.release()
-
- return peerConnectionFactory
-
- }
-
- private fun createAudioConstraints(): MediaConstraints {
- val audioConstraints = MediaConstraints()
- audioConstraints.mandatory.add(
- MediaConstraints.KeyValuePair(
- "googEchoCancellation",
- "true"
- )
- )
- audioConstraints.mandatory.add(
- MediaConstraints.KeyValuePair(
- "googAutoGainControl",
- "false"
- )
- )
- audioConstraints.mandatory.add(
- MediaConstraints.KeyValuePair(
- "googHighpassFilter",
- "true"
- )
- )
- audioConstraints.mandatory.add(
- MediaConstraints.KeyValuePair(
- "googNoiseSuppression",
- "true"
- )
- )
- return audioConstraints
- }
-
- private fun offerOrAnswerConstraint(): MediaConstraints {
- val mediaConstraints = MediaConstraints()
- val keyValuePairs = java.util.ArrayList()
- keyValuePairs.add(MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"))
- keyValuePairs.add(MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true"))
- mediaConstraints.mandatory.addAll(keyValuePairs)
- return mediaConstraints
- }
-
- private fun createJavaAudioDevice(): AudioDeviceModule {
- val audioTrackErrorCallback: JavaAudioDeviceModule.AudioTrackErrorCallback = object :
- JavaAudioDeviceModule.AudioTrackErrorCallback {
- override fun onWebRtcAudioTrackInitError(errorMessage: String) {
- Log.i(TAG, "onWebRtcAudioTrackInitError ============> $errorMessage")
-
- }
-
- override fun onWebRtcAudioTrackStartError(
- errorCode: JavaAudioDeviceModule.AudioTrackStartErrorCode, errorMessage: String
- ) {
- Log.i(TAG, "onWebRtcAudioTrackStartError ============> $errorCode:$errorMessage")
-
- }
-
- override fun onWebRtcAudioTrackError(errorMessage: String) {
- Log.i(TAG, "onWebRtcAudioTrackError ============> $errorMessage")
-
- }
- }
-
-
- // Set audio track state callbacks.
- val audioTrackStateCallback: JavaAudioDeviceModule.AudioTrackStateCallback = object :
- JavaAudioDeviceModule.AudioTrackStateCallback {
- override fun onWebRtcAudioTrackStart() {
- Log.i(TAG, "onWebRtcAudioTrackStart ============>")
-
- }
-
- override fun onWebRtcAudioTrackStop() {
- Log.i(TAG, "onWebRtcAudioTrackStop ============>")
-
- }
- }
-
- return JavaAudioDeviceModule.builder(mContext)
- .setUseHardwareAcousticEchoCanceler(true)
- .setUseHardwareNoiseSuppressor(true)
- .setAudioTrackErrorCallback(audioTrackErrorCallback)
- .setAudioTrackStateCallback(audioTrackStateCallback)
- .setUseStereoOutput(true) //立体声
- .createAudioDeviceModule()
- }
-
- fun setVideoPath(url: String) {
- videoUrl = url
- }
-
- fun start() {
-
- mLocalPeer = Peer {
- val okHttpClient = OkHttpClient.Builder().build()
-
-
- val body = RequestBody.create("text/plain; charset=utf-8".toMediaType(), it!!)
-
-
- val request: Request = Request.Builder()
- .url(videoUrl)
- .post(body)
- .build()
-
- val call: Call = okHttpClient.newCall(request)
-
- call.enqueue(object : Callback {
- override fun onFailure(call: Call, e: IOException) {
- Log.i(TAG, "onFailure")
- OnErrorListener?.invoke(
- ErrorCode.GET_REMOTE_SDP_ERROR.errorCode,
- e.message.toString()
- )
- }
-
- override fun onResponse(call: Call, response: Response) {
- val body = response.body?.string()
- val sdpResponse = Gson().fromJson(body, SdpResponse::class.java)
-
- try {
- mRemoteSessionDescription = SessionDescription(
- SessionDescription.Type.fromCanonicalForm("answer"),
- sdpResponse.sdp
- )
- Log.i(
- TAG,
- "RemoteSdpObserver onCreateSuccess:[SessionDescription[type=${mRemoteSessionDescription?.type?.name},description=${mRemoteSessionDescription?.description}]]"
- )
- mLocalPeer?.setRemoteDescription(mRemoteSessionDescription!!)
- } catch (e: Exception) {
- Log.i(TAG, e.toString())
- OnErrorListener.invoke(
- ErrorCode.GET_REMOTE_SDP_ERROR.errorCode,
- e.localizedMessage
- )
- }
- }
- })
- }
- }
-
- fun pause() {
- mSurfaceViewRenderer.pauseVideo()
- //mSurfaceViewRenderer.disableFpsReduction()
- }
-
- fun resume() {
- mSurfaceViewRenderer.setFpsReduction(15f)
- }
-
- fun screenshot(listener: (bitmap: Bitmap) -> Unit) {
- mSurfaceViewRenderer.addFrameListener({
- listener.invoke(it)
- }, 1f)
- }
-
- fun setSpeakerphoneOn(on: Boolean) {
- audioManager.isSpeakerphoneOn = on
- }
-
- fun mute(on:Boolean) {
- audioManager.isMicrophoneMute=on
- }
-
- override fun onDestroy(owner: LifecycleOwner) {
- super.onDestroy(owner)
- mSurfaceViewRenderer.release()
- mLocalPeer?.mPeerConnection?.dispose()
- mAudioSource?.dispose()
- mPeerConnectionFactory?.dispose()
- }
-
- override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec)
-
- }
-
- inner class Peer(var sdp: (String?) -> Unit = {}) : PeerConnection.Observer, SdpObserver {
-
- var mPeerConnection: PeerConnection? = null
-
- init {
- mPeerConnection = createPeerConnection()
- mPeerConnection?.createOffer(this, offerOrAnswerConstraint())
- }
-
- //初始化 RTCPeerConnection 连接管道
- private fun createPeerConnection(): PeerConnection? {
- if (mPeerConnectionFactory == null) {
- mPeerConnectionFactory = createConnectionFactory()
- }
- // 管道连接抽象类实现方法
- val ICEServers = LinkedList()
- val rtcConfig = PeerConnection.RTCConfiguration(ICEServers)
- //修改模式 PlanB无法使用仅接收音视频的配置
- //rtcConfig.sdpSemantics = PeerConnection.SdpSemantics.PLAN_B
- return mPeerConnectionFactory?.createPeerConnection(rtcConfig, this)
- }
-
- fun setRemoteDescription(sdp: SessionDescription) {
- mPeerConnection?.setRemoteDescription(this, sdp)
- }
-
- override fun onCreateSuccess(sessionDescription: SessionDescription?) {
- mPeerConnection?.setLocalDescription(this, sessionDescription)
- mPeerConnection?.addStream(mLocalMediaStream)
- sdp.invoke(sessionDescription?.description)
- }
-
- override fun onSetSuccess() {
-
- }
-
- override fun onCreateFailure(p0: String?) {
-
- }
-
- override fun onSetFailure(p0: String?) {
-
- }
-
- override fun onSignalingChange(signalingState: PeerConnection.SignalingState?) {
- Log.i(TAG, "onSignalingChange ============> " + signalingState.toString())
- }
-
- override fun onIceConnectionChange(iceConnectionState: PeerConnection.IceConnectionState?) {
- Log.i(TAG, "onIceConnectionChange ============> " + iceConnectionState.toString())
-
- }
-
- override fun onIceConnectionReceivingChange(p0: Boolean) {
- Log.i(TAG, "onIceConnectionReceivingChange ============> $p0")
-
- }
-
- override fun onIceGatheringChange(iceGatheringState: PeerConnection.IceGatheringState?) {
- Log.i(TAG, "onIceGatheringChange ============> ${iceGatheringState.toString()}")
- }
-
- override fun onIceCandidate(iceCandidate: IceCandidate?) {
- Log.i(TAG, "onIceCandidate ============> ${iceCandidate.toString()}")
-
-
- }
-
- override fun onIceCandidatesRemoved(p0: Array?) {
- Log.i(TAG, "onIceCandidatesRemoved ============> ${p0.toString()}")
- }
-
- override fun onAddStream(mediaStream: MediaStream?) {
- Log.i(TAG, "onAddStream ============> ${mediaStream?.toString()}")
-
- if (mediaStream?.videoTracks?.isEmpty() != true) {
- val remoteVideoTrack = mediaStream?.videoTracks?.get(0)
- remoteVideoTrack?.setEnabled(true)
- remoteVideoTrack?.addSink(mSurfaceViewRenderer)
- }
-
- if (mediaStream?.audioTracks?.isEmpty() != true) {
- val remoteAudioTrack = mediaStream?.audioTracks?.get(0)
- remoteAudioTrack?.setEnabled(true)
- remoteAudioTrack?.setVolume(1.0)
- }
-
-
- }
-
- override fun onRemoveStream(mediaStream: MediaStream?) {
- Log.i(TAG, "onRemoveStream ============> ${mediaStream.toString()}")
-
- }
-
- override fun onDataChannel(dataChannel: DataChannel?) {
- Log.i(TAG, "onDataChannel ============> ${dataChannel.toString()}")
-
- }
-
- override fun onRenegotiationNeeded() {
- Log.i(TAG, "onRenegotiationNeeded ============>")
-
- }
-
- override fun onAddTrack(rtpReceiver: RtpReceiver?, p1: Array?) {
- Log.i(TAG, "onAddTrack ============>" + rtpReceiver?.track())
- Log.i(TAG, "onAddTrack ============>" + p1?.size)
-
- }
- }
-
- override fun onFirstFrameRendered() {
- Log.i(TAG, "onFirstFrameRendered ============>")
-
- }
-
- override fun onFrameResolutionChanged(frameWidth: Int, frameHeight: Int, rotation: Int) {
- Log.i(TAG, "onFrameResolutionChanged ============> $frameWidth:$frameHeight:$rotation")
- //set(frameWidth,frameHeight)
- }
-
-
-
-
-}
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/webrtc_player/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 2b068d11..00000000
--- a/webrtc_player/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/drawable/ic_launcher_background.xml b/webrtc_player/android/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 07d5da9c..00000000
--- a/webrtc_player/android/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/webrtc_player/android/app/src/main/res/layout/activity_main.xml b/webrtc_player/android/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index fdefb4e5..00000000
--- a/webrtc_player/android/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/layout/layout_videoview.xml b/webrtc_player/android/app/src/main/res/layout/layout_videoview.xml
deleted file mode 100644
index 43c56e5e..00000000
--- a/webrtc_player/android/app/src/main/res/layout/layout_videoview.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/webrtc_player/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index eca70cfe..00000000
--- a/webrtc_player/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/webrtc_player/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index eca70cfe..00000000
--- a/webrtc_player/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/webrtc_player/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
deleted file mode 100644
index c209e78e..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/webrtc_player/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
deleted file mode 100644
index b2dfe3d1..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/webrtc_player/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
deleted file mode 100644
index 4f0f1d64..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/webrtc_player/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
deleted file mode 100644
index 62b611da..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/webrtc_player/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
deleted file mode 100644
index 948a3070..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/webrtc_player/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
deleted file mode 100644
index 1b9a6956..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/webrtc_player/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
deleted file mode 100644
index 28d4b77f..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/webrtc_player/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9287f508..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/webrtc_player/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
deleted file mode 100644
index aa7d6427..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/webrtc_player/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9126ae37..00000000
Binary files a/webrtc_player/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/webrtc_player/android/app/src/main/res/values-night/themes.xml b/webrtc_player/android/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index 6a2a7eac..00000000
--- a/webrtc_player/android/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/values/colors.xml b/webrtc_player/android/app/src/main/res/values/colors.xml
deleted file mode 100644
index f8c6127d..00000000
--- a/webrtc_player/android/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
- #FFBB86FC
- #FF6200EE
- #FF3700B3
- #FF03DAC5
- #FF018786
- #FF000000
- #FFFFFFFF
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/values/strings.xml b/webrtc_player/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index a7484826..00000000
--- a/webrtc_player/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- AndroidWebRTC
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/values/themes.xml b/webrtc_player/android/app/src/main/res/values/themes.xml
deleted file mode 100644
index 119a9df9..00000000
--- a/webrtc_player/android/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/xml/backup_rules.xml b/webrtc_player/android/app/src/main/res/xml/backup_rules.xml
deleted file mode 100644
index fa0f996d..00000000
--- a/webrtc_player/android/app/src/main/res/xml/backup_rules.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/main/res/xml/data_extraction_rules.xml b/webrtc_player/android/app/src/main/res/xml/data_extraction_rules.xml
deleted file mode 100644
index 9ee9997b..00000000
--- a/webrtc_player/android/app/src/main/res/xml/data_extraction_rules.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/webrtc_player/android/app/src/test/java/com/zlmediakit/webrtc/ExampleUnitTest.kt b/webrtc_player/android/app/src/test/java/com/zlmediakit/webrtc/ExampleUnitTest.kt
deleted file mode 100644
index 5f47259f..00000000
--- a/webrtc_player/android/app/src/test/java/com/zlmediakit/webrtc/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.zlmediakit.webrtc
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/webrtc_player/android/build.gradle b/webrtc_player/android/build.gradle
deleted file mode 100644
index c9fd0fc4..00000000
--- a/webrtc_player/android/build.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = '1.7.10'
- repositories {
- mavenCentral()
- }
- dependencies {
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-plugins {
- id 'com.android.application' version '7.2.1' apply false
- id 'com.android.library' version '7.2.1' apply false
- id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/webrtc_player/android/gradle.properties b/webrtc_player/android/gradle.properties
deleted file mode 100644
index cd0519bb..00000000
--- a/webrtc_player/android/gradle.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app"s APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
-# Enables namespacing of each library's R class so that its R class includes only the
-# resources declared in the library itself and none from the library's dependencies,
-# thereby reducing the size of the R class for that library
-android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/webrtc_player/android/gradle/wrapper/gradle-wrapper.jar b/webrtc_player/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c0..00000000
Binary files a/webrtc_player/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/webrtc_player/android/gradle/wrapper/gradle-wrapper.properties b/webrtc_player/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 8a5b4f05..00000000
--- a/webrtc_player/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Sep 19 22:08:36 CST 2022
-distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
-distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
diff --git a/webrtc_player/android/gradlew b/webrtc_player/android/gradlew
deleted file mode 100644
index 4f906e0c..00000000
--- a/webrtc_player/android/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/webrtc_player/android/gradlew.bat b/webrtc_player/android/gradlew.bat
deleted file mode 100644
index 107acd32..00000000
--- a/webrtc_player/android/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/webrtc_player/android/pic/Screenshot_2022-09-25-10-06-59-444_com.zlmediakit.webrtc.jpg b/webrtc_player/android/pic/Screenshot_2022-09-25-10-06-59-444_com.zlmediakit.webrtc.jpg
deleted file mode 100644
index 96719cf3..00000000
Binary files a/webrtc_player/android/pic/Screenshot_2022-09-25-10-06-59-444_com.zlmediakit.webrtc.jpg and /dev/null differ
diff --git a/webrtc_player/android/settings.gradle b/webrtc_player/android/settings.gradle
deleted file mode 100644
index 4a669b32..00000000
--- a/webrtc_player/android/settings.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-pluginManagement {
- repositories {
- gradlePluginPortal()
- google()
- mavenCentral()
- jcenter() // Warning: this repository is going to shut down soon
-
- maven { url 'https://jitpack.io' }
-
- }
-}
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- google()
- mavenCentral()
- jcenter() // Warning: this repository is going to shut down soon
-
- maven { url 'https://jitpack.io' }
-
- }
-}
-rootProject.name = "android"
-include ':app'