Enable "Force RTP TCP" for faster RTSP live stream loading in Quest/Android
よしたか
AVPro Video has an option "Force RTP TCP" to force Android ExoPlayer to play RTSP live stream with TCP.
This is disabled by default. So currently it seems that underlying ExoPlayer tries to connect with UDP firstly, then fallback to TCP. This fallback causes about 10 seconds delay to play our TopazChat live stream (and also VRCDN).
Enabling this option will skip UDP connection trying, so the time to start playback could be faster.
Playing RTSP source with UDP will not be used commonly, because most users connect Quest to their routers with NAT enabled. RTSP itself has no mechanism to connect UDP over NAT, so RTSP over UDP will be used only in LAN which is not a main usage of VRChat.
Log In
D
Docteh
Have you tested that?
L
LemonKaju
The proposer is the Topaz Chat provider listed in the Allowlisted Service https://creators.vrchat.com/worlds/udon/video-players/www-whitelist/
He have been providing RTSP servers for VRChat for many years, and there is no doubt that he tested that.
よしたか
Docteh I've done quick test in Android Emulator which API Level is 34 before posting, it seems OK. But today I tried to test it in Quest3, I found it fails to build.
"Force RTP TCP" option was implemented at AVPro Video v2.8.5.
The version of ExoPlayer in AVPro v2.8.5 requires minimum API Level 33. Although current Quest3 API Level is 32. So the build process fails.
I don't know AVPro Video version of the latest VRChat client, but it could be older than v2.8.5. It seems that VRChat can't update AVPro until Meta updates their Android API Level.
D
Docteh
よしたか I took a quick look, VRChat only wants to log on Quest after its turned on, I was thinking maybe turn logging on and then restart VRChat. Nope, they turn logging off on startup according to their documenation. On PC v2.8.5 is being used.
The motive in asking if you tested something is that in https://github.com/androidx/media/issues/586 I saw that apparently the used exoplayer should support being told NO to UDP
Personally I am terminally short on drive space on my PC so I haven't tried compiling anything.
https://apilevels.com/ tells me that API Level would require Android 13 (Just noting this down as I will probably forget and come back here)
On PC I notice that AVPro got initialized the first time it was used, right after some Qv Pen messages in my home world. So maybe I can change my home world for now.
D
Docteh
Yup. different homeworld worked. What version of exoplayer are you seeing it try to use? The User-Agent sent in video requests claims 2.19.0, but from my perspective it exhibits a bug fixed in 2.19.0
AVProMobileVideo/2024.4.1p4-1538-c5eb5d8aff-Release (Linux;Android 12) ExoPlayerLib/2.19.0
RTSP User Agent: ExoPlayerLib/2.19.0
2024.12.03 08:56:18 Log - [AVProVideo] Initialising AVPro Video v2.8.5 (native plugin v2.8.5f1-ultra) on Adreno (TM) 740/OpenGL ES 3.2 V@0797.0 (GIT@5c44054b8b, I064dd7d485, 1726116466) (Date:09/12/24) (MT True) on Android