Android Twilio-如何获取已经在聊天室中的用户的视频跟踪?
我使用的是Twilio Android库,当你加入它时,我很难获得已经在那个房间里的partipans视频流。有人请帮忙我已经试了几个小时了Android Twilio-如何获取已经在聊天室中的用户的视频跟踪?,android,twilio,Android,Twilio,我使用的是Twilio Android库,当你加入它时,我很难获得已经在那个房间里的partipans视频流。有人请帮忙我已经试了几个小时了 return new Room.Listener() { @Override public void onConnected(Room room) { Log.d(TAG, "Room Listener Connected to " + room.getName()); } 连接到房间后,会调用此方法,我不知道如何获
return new Room.Listener() {
@Override
public void onConnected(Room room) {
Log.d(TAG, "Room Listener Connected to " + room.getName());
}
连接到房间后,会调用此方法,我不知道如何获取其他参与者的视频轨迹。房间连接成功后,您必须从房间中找到远程参与者,并为房间中的每个参与者连接
RemoteParticipant.Listener
要让参与者离开会议室:
override fun onConnected(room: Room) {
for (remoteParticipant in room.remoteParticipants) {
addRemoteParticipant(remoteParticipant)
}
}
设置远程参与者的侦听器。
private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
remoteParticipantIdentity = remoteParticipant.identity
remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
return object : RemoteParticipant.Listener {
override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }
override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}
override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}
override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
}
}
之后,您必须实施获取参与者音频和视频曲目的方法。
private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
remoteParticipantIdentity = remoteParticipant.identity
remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
return object : RemoteParticipant.Listener {
override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }
override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}
override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}
override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
}
}
一旦您的会议室成功连接,您必须从会议室中找到远程参与者,并为会议室中的每个参与者连接
RemoteParticipant.Listener
要让参与者离开会议室:
override fun onConnected(room: Room) {
for (remoteParticipant in room.remoteParticipants) {
addRemoteParticipant(remoteParticipant)
}
}
设置远程参与者的侦听器。
private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
remoteParticipantIdentity = remoteParticipant.identity
remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
return object : RemoteParticipant.Listener {
override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }
override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}
override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}
override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
}
}
之后,您必须实施获取参与者音频和视频曲目的方法。
private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
remoteParticipantIdentity = remoteParticipant.identity
remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
return object : RemoteParticipant.Listener {
override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}
override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}
override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}
override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }
override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}
override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}
override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}
override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}
override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication) {}
override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
}
}
非常感谢你,伙计。我已经试了好几个小时了,没有你的帮助是不可能做到的。嘿,很抱歉再次打扰你,但是你如何关闭视频和音频曲目?我的应用程序关闭后,它仍在录制音频。您可以使用
room.disconnect()
来断开与房间的连接。您还可以使用track.stop()
来停止视频和音频曲目。非常感谢您。我已经试了好几个小时了,没有你的帮助是不可能做到的。嘿,很抱歉再次打扰你,但是你如何关闭视频和音频曲目?我的应用程序关闭后,它仍在录制音频。您可以使用room.disconnect()
来断开与房间的连接。您还可以使用track.stop()
来停止视频和音频曲目。