androidx / media

Jetpack Media3 support libraries for media use cases, including ExoPlayer, an extensible media player for Android
https://developer.android.com/media/media3
Apache License 2.0
1.56k stars 373 forks source link

(ExoPlayer 2.19.1) RTSP does not correctly fall back to TCP #586

Closed machenmusik closed 1 week ago

machenmusik commented 1 year ago

Version

ExoPlayer 2.19.1

More version details

No response

Devices that reproduce the issue

Android devices

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Not tested

Reproduction steps

Set up an instance of https://github.com/bluenviron/mediamtx with RTSP protocols set to [tcp] (i.e. only supporting TCP).

Configure any test source, and attempt to connect to its RTSP path using ExoPlayer.

Exoplayer sends RTSP SETUP with no lower transport (i.e. UDP) Transport: RTP/AVP;unicast;...

Expected result

Upon receiving a 461 Unsupported Transport error, it does not retry with TCP. So playback fails.

Actual result

Upon receiving a 461 Unsupported Transport error, it should retry with TCP.

Exoplayer should retry, sending RTSP SETUP with TCP lower transport Transport: RTP/AVP/TCP;unicast;...

Playback will then succeed.

Media

Any test source for https://github.com/bluenviron/mediamtx

Bug Report

microkatz commented 1 year ago

Hello @machenmusik,

Thank you for reporting your issue! This is a bit surprising as fallback to TCP due to a 461 Unsupported Transport error in the RTSP SETUP Response was added to ExoPlayer 2.19.0 in this commit, https://github.com/google/ExoPlayer/commit/bbd45c8e4c838005846659dfa87c959804a042ed. Are you able to reproduce this in the demo app? If you were to add the RTSP url to media.exolist.json and try playing it?

Also in reproducing the issue, if you could share a bug reports then that would be helpful! If you are not able to send it publicly, please send them to android-media-github@google.com with the subject Issue #586. Please also update this issue to indicate you've done this.

machenmusik commented 1 year ago

Agreed it was surprising, as I had upgraded to 2.19.1 to try this specifically. Maybe other changes obsoleted that commit?

I can't share a bugreport (sorry).

Is there a pre-built demo APK for 2.19.1 that I can try? That would help rule out any build issues here.

microkatz commented 1 year ago

Hi @machenmusik,

Sorry there is not a pre-built demo APK and for non-technical reasons that is not something that we do.

It would also require you to provide me the exact rtsp URI and have me build the APK for you with that.

If this helps, here is some documentation about how to use and deploy the demo app https://developer.android.com/guide/topics/media/exoplayer/demo-application

machenmusik commented 1 year ago

Thanks. Will see if I can find time to get to this, but may not be able to... current workaround is to use the force RTP TCP option.

Docteh commented 8 months ago

Hi, what would the disk-space requirements for this? hopefully I can build and run the test in an emulator for less than 100GB

As a possibly off topic note, VRChat's Quest 2 build claims to be ExoPlayerLib/2.19.0 in user agent and also exhibits this bug.

microkatz commented 1 week ago

As not tested with the demo app, a log report was not produced and provided, and a workaround was employed that resolved the user's issue, I'm going to close this bug. Please open up a new bug if still hitting this problem.