RTSP sdp parsing exception
hibate opened this issue · comments
Version
Media3 1.3.1
More version details
The TP-LINK network camera, when using rtsp connection, there is an exception in parsing sdp. Through breakpoint tracking, the complete sdp data is as follows:
v=0
o=- 14665860 31787219 1 IN IP4 192.168.1.100
s=Session streamed by "TP-LINK RTSP Server"
t=0 0
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:4096
a=range:npt=0-
a=control:track1
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; profile-level-id=640016; sprop-parameter-sets=Z2QAFqzGoCgPaEAAAAMAQAAAB6E=,aOqPLA==
m=audio 0 RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=control:track2
m=application/TP-LINK 0 RTP/AVP smart/1/90000
a=rtpmap:95 TP-LINK/90000
a=control:track3
An error occurred when parsing the following media description, which does not comply with the rules of RFC 8866 Section 5.14:
m=application/TP-LINK 0 RTP/AVP smart/1/90000
FFmpeg
ignored this part when parsing because the media type application/TP-LINK
is not one of the media types allowed by FFmpeg
: video
, audio
, application
, text
SessionDescriptionParser did not ignore the above situation when parsing
Devices that reproduce the issue
All devices
Devices that do not reproduce the issue
None
Reproducible in the demo app?
Not tested
Reproduction steps
- Using TP-LINK network camera
- Create a player
- Set media item with rtsp uri
- Play
Expected result
Media playback successful
Actual result
Playback error
androidx.media3.exoplayer.ExoPlaybackException: Source error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:717)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:693)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.io.IOException: androidx.media3.common.ParserException: Malformed SDP media description line: application/TP-LINK 0 RTP/AVP smart/1/90000{contentIsMalformed=true, dataType=4}
at androidx.media3.exoplayer.rtsp.RtspMediaPeriod$InternalListener.onSessionTimelineRequestFailed(RtspMediaPeriod.java:699)
at androidx.media3.exoplayer.rtsp.RtspClient.dispatchRtspError(RtspClient.java:336)
at androidx.media3.exoplayer.rtsp.RtspClient.-$$Nest$mdispatchRtspError(Unknown Source:0)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:696)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:529)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0(RtspClient.java:522)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.$r8$lambda$8deRm6rk5jv7dwvT8Gw1eQhwNr8(Unknown Source:0)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: androidx.media3.exoplayer.rtsp.RtspMediaSource$RtspPlaybackException: androidx.media3.common.ParserException: Malformed SDP media description line: application/TP-LINK 0 RTP/AVP smart/1/90000{contentIsMalformed=true, dataType=4}
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:696)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:529)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0(RtspClient.java:522)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.$r8$lambda$8deRm6rk5jv7dwvT8Gw1eQhwNr8(Unknown Source:0)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: androidx.media3.common.ParserException: Malformed SDP media description line: application/TP-LINK 0 RTP/AVP smart/1/90000{contentIsMalformed=true, dataType=4}
at androidx.media3.exoplayer.rtsp.SessionDescriptionParser.parseMediaDescriptionLine(SessionDescriptionParser.java:250)
at androidx.media3.exoplayer.rtsp.SessionDescriptionParser.parse(SessionDescriptionParser.java:195)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:640)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:529)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0(RtspClient.java:522)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.$r8$lambda$8deRm6rk5jv7dwvT8Gw1eQhwNr8(Unknown Source:0)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.NumberFormatException: For input string: "smart/1/90000"
at java.lang.Integer.parseInt(Integer.java:747)
at java.lang.Integer.parseInt(Integer.java:865)
at androidx.media3.exoplayer.rtsp.SessionDescriptionParser.parseMediaDescriptionLine(SessionDescriptionParser.java:248)
at androidx.media3.exoplayer.rtsp.SessionDescriptionParser.parse(SessionDescriptionParser.java:195)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:640)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:529)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0(RtspClient.java:522)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener.$r8$lambda$8deRm6rk5jv7dwvT8Gw1eQhwNr8(Unknown Source:0)
at androidx.media3.exoplayer.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Media
Not applicable
Bug Report
- You will email the zip file produced by
adb bugreport
to android-media-github@google.com after filing this issue.