100mslive / 100ms-android Goto Github PK
View Code? Open in Web Editor NEWAndroid Video Conferencing App using 100ms SDK
Home Page: https://100ms.live
License: MIT License
Android Video Conferencing App using 100ms SDK
Home Page: https://100ms.live
License: MIT License
Fatal Exception: java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission for android.content.AttributionSource@86eda928: getName
at android.os.Parcel.createExceptionOrNull(Parcel.java:2425)
at android.os.Parcel.createException(Parcel.java:2409)
at android.os.Parcel.readException(Parcel.java:2392)
at android.os.Parcel.readException(Parcel.java:2334)
at android.bluetooth.IBluetoothManager$Stub$Proxy.getName(IBluetoothManager.java:802)
at android.bluetooth.BluetoothAdapter.getName(BluetoothAdapter.java:1297)
at live.hms.video.audio.HMSBluetoothManager.logBluetoothAdapterInfo(HMSBluetoothManager.java:431)
at live.hms.video.audio.HMSBluetoothManager.start(HMSBluetoothManager.java:257)
at live.hms.video.audio.HMSAudioManager.start(HMSAudioManager.java:299)
at live.hms.video.sdk.SDKDelegate$join$2$1$1.invokeSuspend(SDKDelegate.kt:540) ...
SDK version: Not using the Android SDK directly but using the HMS react native SDK v0.8.0
Describe the bug
Hi, I'm currently using @100mslive/react-sdk
in my next js app and everything is working great on desktop and mobile browsers, but i'm now trying to create a mobile app using https://capacitorjs.com/. I've got everything working in the mobile app on both iOS and Android except for the 100ms integration.
When I start live streaming, I am being prompted for camera/video permissions, which I'm granting, but in the mobile app I only see this grey screen with a play button image:
For Android, these are the permissions and features I'm setting in my AndroidManifest.xml
file:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>โ
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.audio.output" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
<uses-feature android:name="android.hardware.camera.level.full" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
Also, if i use the developer console i see this error, even though i have granted permission:
I realize you have Android and iOS SDKs of 100ms, but as a non-mobile developer, I'm not entirely sure how I would instead use those SDKs on mobile and whether or not they will work with the existing @100mslive/react-sdk
library I'm using on the client.
Any information would be greatly appreciated, thanks! ๐๐ผ
To Reproduce
Steps to reproduce the behavior:
@100mslive/react-sdk
in a react or next js appcapacitor
to generate a mobile appExpected behavior
The video stream should start properly and use the mobile device's camera
Smartphone (please complete the following information):
Additional context
I'm not sure if this is the correct repo to create this issue in, so please let me know if there is a better place to put it
Crash: Fatal Exception: java.lang.NullPointerException
create( LOCAL_CAMERA_CAPTURER_THREAD, SharedEglContext.context ) must not be null
Happens during the initialization of SurfaceViewRenderer
Device:
Stack trace: Fatal Exception: java.lang.NullPointerException: create(
LOCAL_CAMERA_CAPTURER_THREAD,
SharedEglContext.context
) must not be null
at live.hms.video.media.tracks.HMSVideoCapturer.(HMSVideoCapturer.java:42)
at live.hms.video.media.streams.HMSStreamFactory.makeLocalVideoCapturer(HMSStreamFactory.java:72)
at live.hms.video.transport.HMSTransport.getLocalTrackByType(HMSTransport.java:805)
at live.hms.video.sdk.SDKDelegate.initLocalTracks(SDKDelegate.java:553)
at live.hms.video.sdk.SDKDelegate.getLocalTracksByRoleAndApplySettings(SDKDelegate.java:493)
at live.hms.video.sdk.SDKDelegate.access$getLocalTracksByRoleAndApplySettings(SDKDelegate.java:49)
at live.hms.video.sdk.SDKDelegate$onPolicyChangeHandled$1.invokeSuspend(SDKDelegate.java:376)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl.java:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.java:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
I just tried the sample project. its having releasev2 branch and when i run i get this error:
sample-app-android/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt: (534, 27): Type mismatch: inferred type is HMSPeer but HMSRemotePeer was expected
i don't know what wrong have I done.
fetchInitConfig: response=Response{protocol=h2, code=200, message=, url=https://prod-init.100ms.live/init?user_agent_v2=os%3Aandroid%2Cos_version%3A33%2Csdk%3Aandroid%2Csdk_version%3A2.9.55%2Cdevice_model%3Asdk_gphone64_arm64%2Cenv%3Aprod%2Cis_prebuilt%3Afalse}
2024-05-26 16:38:26.046 26237-26681 InitService com.livestage.app D fetchInitConfig: config=InitConfig(endpoint=wss://account-disabled-us/v2/ws, logLevel=null, policy=null, rtcConfig=RtcConfiguration(iceServers=[IceServer(urls=[turn:turn-in.100ms.live, turn:turn-in.100ms.live?transport=tcp, turn:turn-in.100ms.live:443, turn:turn-in.100ms.live:443?transport=tcp], username=1716838705:, credential=pxm6mJ9ubV45UybItPq0DFKzhDU=)]), serverConfiguration=ServerConfiguration(enabledFlags=[subscribeDegradation, nonWebRTCDisableOffer, simulcast, publishStats, effectsSDKEnabled, vb], networkHealth=NetworkHealth(timeout=10000, url=https://storage.googleapis.com/100ms-speed-test-download/test1Mb.db, scoreMap={1=RangeLimits(low=1, high=100), 2=RangeLimits(low=100, high=300), 3=RangeLimits(low=300, high=500), 4=RangeLimits(low=500, high=700), 5=RangeLimits(low=700, high=0)}), publishStats=Stats(maxSampleWindowSize=30.0, maxSamplePushInterval=300.0), subscribeStats=Stats(maxSampleWindowSize=60.0, maxSamplePushInterval=300.0)))
2024-05-26 16:38:26.047 26237-26674 JsonRPCSignal com.livestage.app D open: Connecting WebSocket to endpoint=wss://account-disabled-us/v2/ws?peer=1df7c485-c109-47be-9be3-acc3593a472a&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoyLCJ0eXBlIjoiYXBwIiwiYXBwX2RhdGEiOm51bGwsImFjY2Vzc19rZXkiOiI2NDIxNzVjNTA1OTY4NDNhNjAwZTVlNzMiLCJyb2xlIjoic3BlYWtlciIsInJvb21faWQiOiI2NjUzOGZhNmYxZjE0MWNlNzNiY2NmNzgiLCJ1c2VyX2lkIjoiMTU0NzMyODYxNSIsImV4cCI6MTcxNjgzODcwMCwianRpIjoiM2U1MDE2NzUtMDhiZi00YzZmLTliYjMtNTNhZTJkZGE4ZmIzIiwiaWF0IjoxNzE2NzUyMzAwLCJpc3MiOiI2NDIxNzVjNTA1OTY4NDNhNjAwZTVlNzEiLCJuYmYiOjE3MTY3NTIzMDAsInN1YiI6ImFwaSJ9.TJe-rHaqMgzIVf_l5JBc1iMDV-80Rclqh2V6ZEIxWAs&user_agent_v2=os%3Aandroid%2Cos_version%3A33%2Csdk%3Aandroid%2Csdk_version%3A2.9.55%2Cdevice_model%3Asdk_gphone64_arm64%2Cenv%3Aprod%2Cis_prebuilt%3Afalse&protocol_version=2.5&protocol_spec=20240417 โฐ
2024-05-26 16:38:26.053 26237-26681 HMSWebSocketListener com.livestage.app E onFailure message=Unable to resolve host "account-disabled-us": No address associated with hostname
2024-05-26 16:38:26.056 26237-26674 HMSTransport com.livestage.app D internalConnect:: failed โ [error=WebSocketConnectionLost: Network connection lost [code=1003, action=NONE, description=Unable to resolve host "account-disabled-us": No address associated with hostname, cause=java.net.UnknownHostException: Unable to resolve host "account-disabled-us": No address associated with hostname]]
E/HMSTransport: join: failed โ [token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3Nfa2V5IjoiNjEyZjU1MWU2M2ExOWM4ZjI2ZGYzNWY2Iiwicm9vbV9pZCI6IjYxMzA3ZjNkZDkxNzAzZTAzNzViN2VlZiIsInVzZXJfaWQiOiI4MmFiMGI0MmM2YjkiLCJyb2xlIjoibGlzdGVuZXIiLCJ0eXBlIjoiYXBwIiwidmVyc2lvbiI6MiwiaWF0IjoxNjMxMjY2OTc1LCJuYmYiOjE2MzEyNjY5NzUsImV4cCI6MTYzMTM1MzM3NSwianRpIjoiYWE2ZDU0ZjktYTEyOS00YjI1LTlkMWItZTUzM2EzYWFjZWI4In0.x9xtSfTwt0Qk0_NUa2Vg-Gq7c4AARbuw0uA3Ed_w70A]
ServerErrors: [JOIN]: peer is gone [code=41001, action=JOIN, description=peer is gone, cause=null]
at live.hms.video.error.ErrorFactory$WebsocketMethodErrors.ServerErrors(ErrorFactory.kt:356)
at live.hms.video.error.ErrorFactory$WebsocketMethodErrors.ServerErrors$default(ErrorFactory.kt:350)
at live.hms.video.signal.jsonrpc.JSONRpcSignal.onMessage(JSONRpcSignal.kt:279)
at okhttp3.internal.ws.RealWebSocket.onReadMessage(RealWebSocket.kt:333)
at okhttp3.internal.ws.WebSocketReader.readMessageFrame(WebSocketReader.kt:245)
at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:106)
at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Crash Type: FATAL
100Ms SDK: lib:2.3.4
Brand: OPPO
Model: CPH1609
Orientation: Portrait
RAM free: 1.24 GB
Disk free: 3.57 GB
Version: Android 6.0
Orientation: Portrait
This happened while joining the room.
Log:
live.hms.app2.ui.meeting.MeetingViewModel$startMeeting$2.onPeerUpdate (MeetingViewModel.kt:403)
live.hms.video.sdk.SDKDelegate.fireUpdates (SDKDelegate.kt:348)
live.hms.video.sdk.SDKDelegate.access$fireUpdates (SDKDelegate.kt:49)
live.hms.video.sdk.SDKDelegate$transportObserver$1.onNotification (SDKDelegate.kt:154)
live.hms.video.transport.HMSTransport$signalObserver$1.onNotification (HMSTransport.kt:290)
live.hms.video.signal.jsonrpc.JSONRpcSignal$onMessage$2.invokeSuspend (JSONRpcSignal.kt:365)
kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:106)
Issue: If a peer is allowed to publish audio and video tracks but due to missing audio and video permissions, the audioTrack and videoTrack is null. So other participants cannot send unmute requests to such peers as the HMSSDK.changeTrackState() need a nonnull HMSTrack.
100ms version: 2.6.2
All android devices crashed at same time during a video call.
Device 1:
Android 9
OnePlus5
Device 2:
Android 13
Samsung Galaxy M33
Stack trace:
Fatal Exception: java.lang.NullPointerException: null cannot be cast to non-null type live.hms.video.media.tracks.HMSTrack
at live.hms.video.media.tracks.HMSTrack.equals(HMSTrack.java:65)
at kotlin.jvm.internal.Intrinsics.areEqual(Intrinsics.java:167)
at com.intouchapp.activities.video.repo.MeetingParticipant.equals(MeetingParticipant.java:49)
at java.util.AbstractList.equals(AbstractList.java:548)
at kotlin.jvm.internal.Intrinsics.areEqual(Intrinsics.java:167)
at kotlinx.coroutines.flow.StateFlowImpl.updateState(StateFlowImpl.java:329)
at kotlinx.coroutines.flow.StateFlowImpl.setValue(StateFlowImpl.java:318)
at com.intouchapp.activities.video.ui.VideoCallViewModel.refreshParticipants(VideoCallViewModel.java:529)
at com.intouchapp.activities.video.ui.VideoCallViewModel$hmsUpdateListener$1.onTrackUpdate(VideoCallViewModel.java:290)
at live.hms.video.sdk.SDKDelegate.fireUpdates(SDKDelegate.java:392)
at live.hms.video.sdk.SDKDelegate.access$fireUpdates(SDKDelegate.java:54)
at live.hms.video.sdk.SDKDelegate$transportObserver$1.onTrackRemove(SDKDelegate.java:206)
at live.hms.video.transport.HMSTransport$subscribeConnectionObserver$1.onTrackRemove(HMSTransport.java:363)
at live.hms.video.connection.subscribe.HMSSubscribeConnection$nativeObserver$1$onRemoveTrack$1.invokeSuspend(HMSSubscribeConnection.java:119)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl.java:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.java:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Hi,
So in iOS there is a way to do this
HMSConfig(userID: UUID().uuidString,
roomID: self.roomId, authToken: self.sessionAuth)
but in Andorid there is no HMSConfig to add room id All I see is meta data in the HMSConfig
(). How do we join a room using room id in android? any example will be appreciated.
I am able to see option in setting but it doesn't seems to be working.
I am on version: lib:2.3.4
Please let me know if it is still under development.
live.hms.video.error.HMSException: Network connection lost
live.hms.video.error.ErrorFactory$WebSocketConnectionErrors.WebSocketConnectionLost(ErrorFactory.kt:51)
live.hms.video.error.ErrorFactory$WebSocketConnectionErrors.WebSocketConnectionLost$default(ErrorFactory.kt:46)
live.hms.video.signal.jsonrpc.JSONRpcSignal.onFailure(JSONRpcSignal.kt:385)
okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)
okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)
okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
java.lang.Thread.run(Thread.java:1012)
Caused by: java.net.SocketException: Software caused connection abort
java.net.SocketInputStream.socketRead0(SocketInputStream.java:0)
java.net.SocketInputStream.socketRead(SocketInputStream.java:118)
java.net.SocketInputStream.read(SocketInputStream.java:173)
java.net.SocketInputStream.read(SocketInputStream.java:143)
com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:945)
com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:909)
com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable(ConscryptEngineSocket.java:824)
com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:797)
okio.InputStreamSource.read(JvmOkio.kt:94)
okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:125)
okio.RealBufferedSource.request(RealBufferedSource.kt:206)
okio.RealBufferedSource.require(RealBufferedSource.kt:199)
okio.RealBufferedSource.readByte(RealBufferedSource.kt:209)
okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
java.lang.Thread.run(Thread.java:1012)
I want to show live stream with HmsHlsPlayer, but I have some error like below. Do you have any example of how to show live streams?
Caused by: androidx.media3.common.ParserException: Input does not start with the #EXTM3U header.
at androidx.media3.exoplayer.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:262)
at androidx.media3.exoplayer.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:69)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:414)
Sometimes it takes forever to connect to a room when we call "join" function of sdk. There has to be a connection timeout + callback so users can retry connecting to the room.
hmsSDK.join(hmsConfig, hmsUpdateListener)
memory leaks
GC Root: Global variable in native code
โ
โโ live.hms.video.connection.publish.HMSPublishConnection$nativeObserver$1 instance
โ Leaking: UNKNOWN
โ Retaining 24 B in 1 objects
โ Anonymous subclass of live.hms.video.connection.helpers.HMSPeerConnectionObserver
โ โ HMSPublishConnection$nativeObserver$1.$observer
โ ~~~~~~~~~
I'm connect two users in a room in my app
and camera conflict.
How to disable HMSVideoCapturer and only one user is allowed to use the camera?
Device: One Plus Nord 2 (Android 11)
100ms SDK version - 2.3.5
Issue: - Local video randomly freezes/stops.
Note: It works fine after muting & unmuting the local video track. i.e. the local video renders successfully on surfaceviewrenderer after muting and unmuting the local video track.
From the remote participant's perspective, the video gets stuck at the last rendered video frame.
FATAL EXCEPTION: local-camera-capturer-thread
Process: com.kutumb.android, PID: 11120
java.lang.IllegalArgumentException: supportsCameraApi:2095: Unknown camera ID 1
at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:888)
at android.hardware.camera2.CameraManager.getCameraCharacteristics(CameraManager.java:359)
at org.webrtc.Camera2Session.start(Camera2Session.java:304)
at org.webrtc.Camera2Session.(Camera2Session.java:296)
at org.webrtc.Camera2Session.create(Camera2Session.java:274)
at org.webrtc.Camera2Capturer.createCameraSession(Camera2Capturer.java:35)
at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272)
at android.os.Handler.handleCallback(Handler.java:914)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:225)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.os.ServiceSpecificException: supportsCameraApi:2095: Unknown camera ID 1 (code 3)
at android.os.Parcel.createException(Parcel.java:2088)
at android.os.Parcel.readException(Parcel.java:2042)
at android.os.Parcel.readException(Parcel.java:1990)
at android.hardware.ICameraService$Stub$Proxy.supportsCameraApi(ICameraService.java:800)
at android.hardware.camera2.CameraManager.supportsCameraApiLocked(CameraManager.java:941)
at android.hardware.camera2.CameraManager.supportsCamera2ApiLocked(CameraManager.java:917)
at android.hardware.camera2.CameraManager.getCameraCharacteristics(CameraManager.java:307)
at org.webrtc.Camera2Session.start(Camera2Session.java:304)ย
at org.webrtc.Camera2Session.(Camera2Session.java:296)ย
at org.webrtc.Camera2Session.create(Camera2Session.java:274)ย
at org.webrtc.Camera2Capturer.createCameraSession(Camera2Capturer.java:35)ย
at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272)ย
at android.os.Handler.handleCallback(Handler.java:914)ย
at android.os.Handler.dispatchMessage(Handler.java:100)ย
at android.os.Looper.loop(Looper.java:225)ย
at android.os.HandlerThread.run(HandlerThread.java:67)ย
I'm able to create an Authorization token, create a room and connect with hmsclient. After that, when I'm trying to join the room then getting the following error
rawData: {"response":true,"id":6104463,"ok":false,"errorCode":-1,"errorReason":"User is Not Authorized to Join the room {room_id}"}
Integrated version : 'com.github.100mslive:android-sdk:0.9.13'
In the MeetingViewModel, there are two events. One for rtmpErrors
and another for changeTrackMuteRequest
.
They should be moved into a single Flow with a shared sealed data class structure.
For an explanation of what this is, look here.
Device: Moto G Plus
Android: 8.1.0
SDK version: 2.8.3
Project gradle tools version: 4.2.2
Stack trace:
java.lang.NoSuchMethodError: No virtual method position(I)Ljava/nio/FloatBuffer; in class Ljava/nio/FloatBuffer; or its super classes (declaration of 'java.nio.FloatBuffer' appears in /system/framework/core-oj.jar)
at org.webrtc.GlUtil.createFloatBuffer(GlUtil.java:47)
at org.webrtc.GlGenericDrawer.(GlGenericDrawer.java:75)
at org.webrtc.YuvConverter.(YuvConverter.java:111)
at org.webrtc.YuvConverter.(YuvConverter.java:118)
at org.webrtc.SurfaceTextureHelper.create(SurfaceTextureHelper.java:92)
at live.hms.video.media.capturers.HMSCameraCapturer.(HMSCameraCapturer.kt:48)
at live.hms.video.media.streams.HMSStreamFactory.makeLocalVideoCapturer(HMSStreamFactory.kt:75)
at live.hms.video.transport.HMSTransport.getLocalTrackByType(HMSTransport.kt:972)
at live.hms.video.sdk.SDKDelegate.initLocalTracks(SDKDelegate.kt:790)
at live.hms.video.sdk.SDKDelegate.getLocalTracksByRoleAndApplySettings(SDKDelegate.kt:716)
at live.hms.video.sdk.SDKDelegate.access$getLocalTracksByRoleAndApplySettings(SDKDelegate.kt:55)
at live.hms.video.sdk.SDKDelegate$onPolicyChangeHandled$1.invokeSuspend(SDKDelegate.kt:488)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Crash: Unable to resolve host "prod-in2.100ms.live": No address associated with hostname
Caused by java.net.UnknownHostException: Unable to resolve host "prod-in2.100ms.live": No address associated with hostname
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:126)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:105)
at java.net.InetAddress.getAllByName(InetAddress.java:1154)
at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.java:49)
at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:164)
at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:129)
at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:71)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:205)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:106)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:74)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.java:255)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:32)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:109)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:95)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:109)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:83)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:109)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:76)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:109)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.java:201)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.java:517)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Crash: Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'java.util.Collection java.util.HashMap.values()' on a null object reference
Devices:
Random crash during video session
Stack trace:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Collection java.util.HashMap.values()' on a null object reference
at live.hms.video.sdk.models.HMSNotifications$Peer.getTracks(HMSNotifications.java:21)
at live.hms.video.sdk.managers.InitialPeerListManager.manage(InitialPeerListManager.java:28)
at live.hms.video.sdk.SDKDelegate$transportObserver$1.onNotification(SDKDelegate.java:129)
at live.hms.video.transport.HMSTransport$signalObserver$1.onNotification(HMSTransport.java:290)
at live.hms.video.signal.jsonrpc.JSONRpcSignal$onMessage$2.invokeSuspend(JSONRpcSignal.java:361)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl.java:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.java:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Steps to reproduce the problem:
Zoom allow users to join meeting without camera and microphone permissions as they can still watch other participants screen and listen to audio.
Issue: It looks like video and audio tracks are not automatically published when camera and microphone permissions are granted
Expected result: Video track and audio track should be published as soon as camera and microphone permissions are granted and remote participants should get the callback in onTrackAdded
java.lang.IllegalArgumentException: Receiver not registered: live.hms.video.audio.HMSAudioManager$WiredHeadsetReceiver@fc0be69
android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:1701)
android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1858)
android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:812)
live.hms.video.audio.HMSAudioManager.unregisterReceiver(HMSAudioManager.java:505)
live.hms.video.audio.HMSAudioManager.stop(HMSAudioManager.java:378)
live.hms.video.sdk.SDKDelegate$tearDownSDKDelegate$2$1.invokeSuspend(SDKDelegate.kt:1131)
kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
android.os.Handler.handleCallback(Handler.java:942)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loopOnce(Looper.java:223)
android.os.Looper.loop(Looper.java:324)
android.app.ActivityThread.main(ActivityThread.java:8464)
java.lang.reflect.Method.invoke(Method.java:0)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:582)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1059)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.