google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.75k stars 6.03k forks source link

RTSP: One of more mandatory SDP fields are not set #10049

Open baikimi opened 2 years ago

baikimi commented 2 years ago

When filing a question:

Describe your question in detail. use ExoPlayer play rtspUri,cant play,error is “One of more mandatory SDP fields are not set ” timing is null

the rtsp url from camera is “rtsp://192.168.1.168/main”

the reason maybe is fromthe video from the camera , how to solve it?if the reason is from the camera , how to set the camera ?or other way to solve it is?

Playback error
      com.google.android.exoplayer2.ExoPlaybackException: Source error
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:640)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:616)
        at android.os.Handler.dispatchMessage(Handler.java:108)
        at android.os.Looper.loop(Looper.java:216)
        at android.os.HandlerThread.run(HandlerThread.java:65)

Caused by: java.io.IOException: com.google.android.exoplayer2.ParserException
        at com.google.android.exoplayer2.source.rtsp.RtspMediaPeriod$InternalListener.onSessionTimelineRequestFailed(RtspMediaPeriod.java:652)
        at com.google.android.exoplayer2.source.rtsp.RtspClient.dispatchRtspError(RtspClient.java:317)
        at com.google.android.exoplayer2.source.rtsp.RtspClient.access$700(RtspClient.java:75)
        at com.google.android.exoplayer2.source.rtsp.RtspClient$MessageListener.handleRtspResponse(RtspClient.java:656)
        at com.google.android.exoplayer2.source.rtsp.RtspClient$MessageListener.handleRtspMessage(RtspClient.java:507)
        at com.google.android.exoplayer2.source.rtsp.RtspClient$MessageListener.lambda$onRtspMessageReceived$0$com-google-android-exoplayer2-source-rtsp-RtspClient$MessageListener(RtspClient.java:500)
        at com.google.android.exoplayer2.source.rtsp.RtspClient$MessageListener$$ExternalSyntheticLambda0.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:907)

 Caused by: com.google.android.exoplayer2.source.rtsp.RtspMediaSource$RtspPlaybackException: com.google.android.exoplayer2.ParserException

Caused by: com.google.android.exoplayer2.ParserException
        at com.google.android.exoplayer2.source.rtsp.SessionDescriptionParser.parse

 Caused by: java.lang.IllegalStateException: One of more mandatory SDP fields are not set.

In case your question is related to a piece of media:

video from camera cant cant provide

Don't forget to check supported formats and devices nothing to do with devices

NicolasGodfather commented 2 years ago

I have the same issue. Why we can't ignore the field "timing"? Why this field is necessary if in original sdp timing may not exist?

360060316 commented 2 years ago

I also met what to do

NicolasGodfather commented 2 years ago

We waiting for expert answers!

claincly commented 2 years ago

If you look at RFC2327 Section 6, those fields are mandatory. That said, we don't use these fields in the RTSP logic, so it's safe to remove the check.

We'll have a change to remove this check.

NicolasGodfather commented 2 years ago

Thanks! Will be perfect if you remove this check.