Skip to content

Exception when parse RTSP url like rtsp://10.1.58.192/stream/0?config.login=web #613

Closed

Description

@slackzh

Version

ExoPlayer 2.19.1

More version details

No response

Devices that reproduce the issue

A tablet running android 7.1.2

Devices that do not reproduce the issue

VLC Android 3.5.4 on this tablet is OK

Reproducible in the demo app?

Yes

Reproduction steps

  1. Edit media.exolist.json
  2. Add rtsp url:
{
    "name": "RTSP",
    "samples": [
      {
        "name": "AVA Rbs",
        "uri": "rtsp://10.1.58.192/stream/0?config.login=web"
      }
    ]
  },
  1. Play this rtsp url in demo app

Expected result

play this rtsp video successfully

Actual result

demo app crashed:

14:38:34.485 androidx.media3.demo.main       D  loading [eventTime=43.95, mediaPos=0.00, window=0, period=0, true]
14:38:34.494 androidx.media3.demo.main       E  Playback error
                                                  androidx.media3.exoplayer.ExoPlaybackException: Source error
                                                      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:684)
                                                      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:660)
                                                      at android.os.Handler.dispatchMessage(Handler.java:98)
                                                      at android.os.Looper.loop(Looper.java:154)
                                                      at android.os.HandlerThread.run(HandlerThread.java:61)
                                                  Caused by: java.io.IOException: java.lang.IllegalArgumentException
                                                      at androidx.media3.exoplayer.rtsp.RtspMediaPeriod$InternalListener.onSessionTimelineRequestFailed(RtspMediaPeriod.java:689)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient.dispatchRtspError(RtspClient.java:322)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient.access$700(RtspClient.java:76)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:682)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:515)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$androidx-media3-exoplayer-rtsp-RtspClient$MessageListener(RtspClient.java:508)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass)
                                                      at android.os.Handler.handleCallback(Handler.java:755)
                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                      at android.os.Looper.loop(Looper.java:154) 
                                                      at android.os.HandlerThread.run(HandlerThread.java:61) 
                                                  Caused by: androidx.media3.exoplayer.rtsp.RtspMediaSource$RtspPlaybackException: java.lang.IllegalArgumentException
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:682) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:515) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$androidx-media3-exoplayer-rtsp-RtspClient$MessageListener(RtspClient.java:508) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass) 
                                                      at android.os.Handler.handleCallback(Handler.java:755) 
                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                      at android.os.Looper.loop(Looper.java:154) 
                                                      at android.os.HandlerThread.run(HandlerThread.java:61) 
                                                  Caused by: java.lang.IllegalArgumentException
                                                      at androidx.media3.exoplayer.rtsp.RtspMessageUtil.parseMethodString(RtspMessageUtil.java:286)
                                                      at androidx.media3.exoplayer.rtsp.RtspMessageUtil.parsePublicHeader(RtspMessageUtil.java:389)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:618)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:515) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$androidx-media3-exoplayer-rtsp-RtspClient$MessageListener(RtspClient.java:508) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass) 
                                                      at android.os.Handler.handleCallback(Handler.java:755) 
                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                      at android.os.Looper.loop(Looper.java:154) 
                                                      at android.os.HandlerThread.run(HandlerThread.java:61) 
14:38:34.501 androidx.media3.demo.main       E  playerFailed [eventTime=43.96, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_IO_UNSPECIFIED
                                                  androidx.media3.exoplayer.ExoPlaybackException: Source error
                                                      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:684)
                                                      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:660)
                                                      at android.os.Handler.dispatchMessage(Handler.java:98)
                                                      at android.os.Looper.loop(Looper.java:154)
                                                      at android.os.HandlerThread.run(HandlerThread.java:61)
                                                  Caused by: java.io.IOException: java.lang.IllegalArgumentException
                                                      at androidx.media3.exoplayer.rtsp.RtspMediaPeriod$InternalListener.onSessionTimelineRequestFailed(RtspMediaPeriod.java:689)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient.dispatchRtspError(RtspClient.java:322)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient.access$700(RtspClient.java:76)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:682)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:515)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$androidx-media3-exoplayer-rtsp-RtspClient$MessageListener(RtspClient.java:508)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass)
                                                      at android.os.Handler.handleCallback(Handler.java:755)
                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                      at android.os.Looper.loop(Looper.java:154) 
                                                      at android.os.HandlerThread.run(HandlerThread.java:61) 
                                                  Caused by: androidx.media3.exoplayer.rtsp.RtspMediaSource$RtspPlaybackException: java.lang.IllegalArgumentException
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:682) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:515) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$androidx-media3-exoplayer-rtsp-RtspClient$MessageListener(RtspClient.java:508) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass) 
                                                      at android.os.Handler.handleCallback(Handler.java:755) 
                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                      at android.os.Looper.loop(Looper.java:154) 
                                                      at android.os.HandlerThread.run(HandlerThread.java:61) 
                                                  Caused by: java.lang.IllegalArgumentException
                                                      at androidx.media3.exoplayer.rtsp.RtspMessageUtil.parseMethodString(RtspMessageUtil.java:286)
                                                      at androidx.media3.exoplayer.rtsp.RtspMessageUtil.parsePublicHeader(RtspMessageUtil.java:389)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:618)
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:515) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$androidx-media3-exoplayer-rtsp-RtspClient$MessageListener(RtspClient.java:508) 
                                                      at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass) 
                                                      at android.os.Handler.handleCallback(Handler.java:755) 
                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                      at android.os.Looper.loop(Looper.java:154) 
                                                      at android.os.HandlerThread.run(HandlerThread.java:61) 
                                                ]

Media

URL like this:

rtsp://10.1.58.192/stream/0?config.login=web

Bug Report

Activity

  1. microkatz commented on Sep 1, 2023

    @microkatz
    Contributor

    @hoozh
    Thank you for reporting your issue! It appears that your RTSP server returns a Public Header with a method name not in the spec list. Do you have custom RTSP commands for your server?

  2. slackzh commented on Sep 22, 2023

    @slackzh
    Author

    I don't know if there is RTSP commands for server, the rtsp server is running in a conference recording device

  3. microkatz commented on Sep 27, 2023

    @microkatz
    Contributor

    Hello @hoozh,

    I submitted a code fix, 916b4b0, into the androidx/media main branch that will hopefully address your issue. ExoPlayer will now ignore custom commands returned in the RTSP Options response. I'm going to close this issue. Please reopen or create a new issue if your are still having problems.

  4. locked and limited conversation to collaborators on Nov 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions