New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add RTSP support #3854

Open
wants to merge 22 commits into
base: dev-v2
from

Conversation

Projects
None yet
@tresvecesseis
Contributor

tresvecesseis commented Feb 15, 2018

This is our first public release of our in-house RTSP Mediasource, we have to rewrite it several
times to make it useful for a wider audience and more easily maintainable and extensible.
It currently supports:

  • RTSP 1.0 (RFC2326) - with Basic and Digest authentication in standard URL encoding (some
    devices use URL parameters to encode user/password info)
  • SDP (RFC4566)
  • MP2T over UDP
  • RTP (RFC3550)
  • RTP payloads:
    • MP2T
    • H264 (RFC6184) - single NAL Unit and Non-Interleaved modes
    • AAC (RFC3640) - LR and HR bitrates, simple, multiple and fragmented AAC frames
      (interleaved not implemented)
    • AC3 (RFC4184)
    • G711.1 (RFC5391) - R1, R2A, R2B and R3 modes (untested)
    • G711.0 (RFC7655)

We are working to integrate Server Trick Modes and asynchronous notifications, but we have to
clarify the best way to control a push media source (we need to modify explayerImpInternal to
communicate the player state to the media source - pause - and the media source to inform that
some events had ocurred - end of stream reached, begin of stream reached, ...) with
the Exoplayer lead developers in the meantime the trick modes have to be implemented outside the library.

@googlebot googlebot added the cla: yes label Feb 15, 2018

@tresvecesseis tresvecesseis referenced this pull request Feb 15, 2018

Open

RTSP support #55

@tonihei

This comment has been minimized.

Show comment
Hide comment
@tonihei

tonihei Feb 16, 2018

Contributor

Thanks for the contribution. I haven't looked in detail yet, but one thing that would definitively need to be changed is that RTSP should be implemented in its own extension similar to VP9 or Opus. Please see @ojw28 comment about it here. Can you move the implementation as far as possible to its own extension?

Contributor

tonihei commented Feb 16, 2018

Thanks for the contribution. I haven't looked in detail yet, but one thing that would definitively need to be changed is that RTSP should be implemented in its own extension similar to VP9 or Opus. Please see @ojw28 comment about it here. Can you move the implementation as far as possible to its own extension?

@tonihei tonihei self-assigned this Feb 16, 2018

@tresvecesseis

This comment has been minimized.

Show comment
Hide comment
@tresvecesseis

tresvecesseis Feb 16, 2018

Contributor

We could move the RTSP implementation to an extension but we will like to maintain the RTP an SDP parts in the core library to reuse it in our RTP datasource.

Contributor

tresvecesseis commented Feb 16, 2018

We could move the RTSP implementation to an extension but we will like to maintain the RTP an SDP parts in the core library to reuse it in our RTP datasource.

@tonihei

This comment has been minimized.

Show comment
Hide comment
@tonihei

tonihei Feb 16, 2018

Contributor

It's probably even better to put it in library and not extensions (similar to Dash and HLS) because it doesn't use any external third-party dependencies.

And it's probably alright to keep certain parts in the core library if they can be reused at different places.

Contributor

tonihei commented Feb 16, 2018

It's probably even better to put it in library and not extensions (similar to Dash and HLS) because it doesn't use any external third-party dependencies.

And it's probably alright to keep certain parts in the core library if they can be reused at different places.

@andrewlewis

This comment has been minimized.

Show comment
Hide comment
@andrewlewis

andrewlewis Feb 16, 2018

Contributor

Regarding controlling the player and listening to player events in the media source: depending on the requirements, you may be able to use the player parameter passed to prepareSource for this. This should be fairly easy to use if you require that the source is the top-level source passed to prepare (otherwise the code in the media source interacting with the player needs to handle situations where another source in a composition is playing).

Contributor

andrewlewis commented Feb 16, 2018

Regarding controlling the player and listening to player events in the media source: depending on the requirements, you may be able to use the player parameter passed to prepareSource for this. This should be fairly easy to use if you require that the source is the top-level source passed to prepare (otherwise the code in the media source interacting with the player needs to handle situations where another source in a composition is playing).

@tresvecesseis

This comment has been minimized.

Show comment
Hide comment
@tresvecesseis

tresvecesseis Feb 16, 2018

Contributor

Another problem we have is that there is no concept of VCR like FF and RW in exoplayer (only seekTo is supported). In RTSP FF and RW is done at the server level, the player keeps decoding the frames that it receives and the server is in charge of select the I-frames (in forward or reverse order) and send them to the player, so we will need to keep these states (and their multipliers) in the library.

Contributor

tresvecesseis commented Feb 16, 2018

Another problem we have is that there is no concept of VCR like FF and RW in exoplayer (only seekTo is supported). In RTSP FF and RW is done at the server level, the player keeps decoding the frames that it receives and the server is in charge of select the I-frames (in forward or reverse order) and send them to the player, so we will need to keep these states (and their multipliers) in the library.

@googlebot

This comment has been minimized.

Show comment
Hide comment
@googlebot

googlebot Feb 18, 2018

Collaborator

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for the commit author(s). If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and have the pull request author add another comment and the bot will run again. If the bot doesn't comment, it means it doesn't think anything has changed.

Collaborator

googlebot commented Feb 18, 2018

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for the commit author(s). If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and have the pull request author add another comment and the bot will run again. If the bot doesn't comment, it means it doesn't think anything has changed.

@googlebot googlebot added cla: no and removed cla: yes labels Feb 18, 2018

@googlebot

This comment has been minimized.

Show comment
Hide comment
@googlebot

googlebot Feb 18, 2018

Collaborator

CLAs look good, thanks!

Collaborator

googlebot commented Feb 18, 2018

CLAs look good, thanks!

@googlebot googlebot added cla: yes and removed cla: no labels Feb 18, 2018

@FabianTerhorst

This comment has been minimized.

Show comment
Hide comment
@FabianTerhorst

FabianTerhorst Mar 6, 2018

Is there a possibility that this doesn´t work on the emulator. It worked great on all physical devices i have testet with, but not on the emulator. No x86 support?

FabianTerhorst commented Mar 6, 2018

Is there a possibility that this doesn´t work on the emulator. It worked great on all physical devices i have testet with, but not on the emulator. No x86 support?

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Mar 7, 2018

@FabianTerhorst it doesn't work with the emulator because of a bug in android. Issue#207602: Emulator does not redirect UDP packets

portizb commented Mar 7, 2018

@FabianTerhorst it doesn't work with the emulator because of a bug in android. Issue#207602: Emulator does not redirect UDP packets

@anhth58

This comment has been minimized.

Show comment
Hide comment
@anhth58

anhth58 Mar 8, 2018

Hello there !
I must be display 6 thumb video rtsp in a screen. I used to try VideoView. It worked ! but there is critical problem : deylay. I pulled this pull request and atempt to use it to solve my problem. But it did not play anything without error. Any one can help me ? Thanks so much.

anhth58 commented Mar 8, 2018

Hello there !
I must be display 6 thumb video rtsp in a screen. I used to try VideoView. It worked ! but there is critical problem : deylay. I pulled this pull request and atempt to use it to solve my problem. But it did not play anything without error. Any one can help me ? Thanks so much.

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Mar 8, 2018

@anhth58 at the moment we are working to support trick modes and improve the design of the solution and solve the bugs that are detected. Generate thumb video rtsp isn't something we plan to support any time soon; sorry.

Anyway, could you give us more detail about what you really need? Generate a tumbail from the video keeping the rtsp live connection paused until you decide to continue playing or stopping the video?

portizb commented Mar 8, 2018

@anhth58 at the moment we are working to support trick modes and improve the design of the solution and solve the bugs that are detected. Generate thumb video rtsp isn't something we plan to support any time soon; sorry.

Anyway, could you give us more detail about what you really need? Generate a tumbail from the video keeping the rtsp live connection paused until you decide to continue playing or stopping the video?

@anhth58

This comment has been minimized.

Show comment
Hide comment
@anhth58

anhth58 Mar 9, 2018

@portizb Thanks for reply. I need to play serveral video in a screen (paging) without controller, just thumb. Then click to each of them to view full screen. I have tried Exoplayer but it does not work and even without error log. Could you please tell me some guideline ? Thank you so much.

anhth58 commented Mar 9, 2018

@portizb Thanks for reply. I need to play serveral video in a screen (paging) without controller, just thumb. Then click to each of them to view full screen. I have tried Exoplayer but it does not work and even without error log. Could you please tell me some guideline ? Thank you so much.

@FabianTerhorst

This comment has been minimized.

Show comment
Hide comment
@FabianTerhorst

FabianTerhorst Mar 10, 2018

I have testet this with some cameras now. For the one where it doesn´t work im getting an 200 Ok first and then an 500 Internal Server Error.

Sender: SETUP rtsp://192.168.178.28:554/12/trackID=0 RTSP/1.0
    CSeq: 3
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Transport: RTP/AVP;unicast;client_port=37685-37686
Receiver: RTSP/1.0 200 OK
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 3
    Session: 179539325971263; timeout=60
    Date: Mon, 23 May 2012 06:51:26 GMT
Sender: SETUP rtsp://192.168.178.28:554/12/trackID=1 RTSP/1.0
    CSeq: 4
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Transport: RTP/AVP;unicast;client_port=46994-46995
Receiver: RTSP/1.0 500 Internal Server Error
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 4
Sender: TEARDOWN rtsp://192.168.178.28:554/12/ RTSP/1.0
    CSeq: 5
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Session: 179539325971263;
EventLogger: internalError [0.23, loadError]

Edit: some more logs

Sender: OPTIONS rtsp://192.168.178.28:554/12 RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
Receiver: RTSP/1.0 200 OK
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 1
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY
DESCRIBE rtsp://192.168.178.28:554/12 RTSP/1.0
    CSeq: 2
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Accept: application/sdp
RTSP/1.0 200 OK
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 2
    Date: Mon, 23 May 2012 06:51:26 GMT
    Content-Base: rtsp://192.168.178.28:554/12/
    Content-Type: application/sdp
    Content-Length: 413
    
    v=0
    o=StreamingServer 3331435948 1116907222000 IN IP4 192.168.178.28
    s=\12
    c=IN IP4 0.0.0.0
    b=AS:4100
    t=0 0
    a=control:*
    m=video 0 RTP/AVP 96
    b=AS:4000
    a=framerate:15
    a=control:trackID=0
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=420029; sprop-parameter-sets=Z00AHpWoKAv+VA==,aO48gA==
    a=framesize:96 640-360
    m=audio 0 RTP/AVP 0
    a=control:trackID=1
    a=rtpmap:0 PCMU/8000

FabianTerhorst commented Mar 10, 2018

I have testet this with some cameras now. For the one where it doesn´t work im getting an 200 Ok first and then an 500 Internal Server Error.

Sender: SETUP rtsp://192.168.178.28:554/12/trackID=0 RTSP/1.0
    CSeq: 3
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Transport: RTP/AVP;unicast;client_port=37685-37686
Receiver: RTSP/1.0 200 OK
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 3
    Session: 179539325971263; timeout=60
    Date: Mon, 23 May 2012 06:51:26 GMT
Sender: SETUP rtsp://192.168.178.28:554/12/trackID=1 RTSP/1.0
    CSeq: 4
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Transport: RTP/AVP;unicast;client_port=46994-46995
Receiver: RTSP/1.0 500 Internal Server Error
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 4
Sender: TEARDOWN rtsp://192.168.178.28:554/12/ RTSP/1.0
    CSeq: 5
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Session: 179539325971263;
EventLogger: internalError [0.23, loadError]

Edit: some more logs

Sender: OPTIONS rtsp://192.168.178.28:554/12 RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
Receiver: RTSP/1.0 200 OK
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 1
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY
DESCRIBE rtsp://192.168.178.28:554/12 RTSP/1.0
    CSeq: 2
    User-Agent: ExoPlayer/2.x (Media Player for Android v2018.02.17)
    Accept: application/sdp
RTSP/1.0 200 OK
    Server: HiIpcam/V100R003 VodServer/1.0.0
    CSeq: 2
    Date: Mon, 23 May 2012 06:51:26 GMT
    Content-Base: rtsp://192.168.178.28:554/12/
    Content-Type: application/sdp
    Content-Length: 413
    
    v=0
    o=StreamingServer 3331435948 1116907222000 IN IP4 192.168.178.28
    s=\12
    c=IN IP4 0.0.0.0
    b=AS:4100
    t=0 0
    a=control:*
    m=video 0 RTP/AVP 96
    b=AS:4000
    a=framerate:15
    a=control:trackID=0
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=420029; sprop-parameter-sets=Z00AHpWoKAv+VA==,aO48gA==
    a=framesize:96 640-360
    m=audio 0 RTP/AVP 0
    a=control:trackID=1
    a=rtpmap:0 PCMU/8000
@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Mar 12, 2018

@FabianTerhorst The exchange of rtsp messages between the client and the server is correct, therefore the behavior of the rtsp client is correct too. The client requests the setup for audio and video, and the server responds with error only in the audio. That is why, the client sends the teardown request.

What is the reason the server responds with error? I do not know. Maybe the server is not properly configured or the server only supports RTSP over HTTP.

Could you do the same test using a VLC client with verbose enabled (vlc -vvv)?

portizb commented Mar 12, 2018

@FabianTerhorst The exchange of rtsp messages between the client and the server is correct, therefore the behavior of the rtsp client is correct too. The client requests the setup for audio and video, and the server responds with error only in the audio. That is why, the client sends the teardown request.

What is the reason the server responds with error? I do not know. Maybe the server is not properly configured or the server only supports RTSP over HTTP.

Could you do the same test using a VLC client with verbose enabled (vlc -vvv)?

@floschu

This comment has been minimized.

Show comment
Hide comment
@floschu

floschu Mar 12, 2018

Hi.
I have built and used your implementation and for my use case it does work great. However I have a question: Is there a way to change latency or minimum buffering time? I am trying to get a near real time stream experience with a maximum of 100ms delay.

floschu commented Mar 12, 2018

Hi.
I have built and used your implementation and for my use case it does work great. However I have a question: Is there a way to change latency or minimum buffering time? I am trying to get a near real time stream experience with a maximum of 100ms delay.

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Mar 12, 2018

@floschu You can reduce the size of buffering when you create the exoplayer instance by adjusting the DefaultLoadControl parameters (bufferForPlaybackMs and bufferForPlaybackAfterRebufferMs).

portizb commented Mar 12, 2018

@floschu You can reduce the size of buffering when you create the exoplayer instance by adjusting the DefaultLoadControl parameters (bufferForPlaybackMs and bufferForPlaybackAfterRebufferMs).

@ojw28

This comment has been minimized.

Show comment
Hide comment
@ojw28

ojw28 Mar 12, 2018

Contributor

I took a quick look at this. Some initial comments that might assist in getting it into something closer to what we'd be happy with:

  • There's a lot of code being lumped under the core util package that doesn't look like it belongs there. That package is more or less intended to be a package for things that don't belong anywhere else, but aren't substantial enough for a package of themselves. As soon as there's a sub-package in there the definition doesn't hold. If it's important enough for its own package then it shouldn't be under util. Most of util.media appears to be an Extractor implementation. If this is accurate, could it be in the extractor package instead?
  • Please can you give all classes that are needed only within a package default visibility, so that they're not exposed as part of the library API. There are a large number of classes that have public visibility where it appears unnecessary, including classes that don't have any Javadoc.
  • This is a pretty huge pull request. Can you provide some kind of brief documentation (e.g. a page or two) explaining why things are where they are and how they fit together. It's quite hard to know where to start when reviewing the change.
  • I was wondering if would be possible to implement some (possibly lots) of this as a standalone library that ExoPlayer could depend on, rather than have it all part of ExoPlayer directly. Is it possible to split out what's ExoPlayer specific and what's general rtp/sdp, so the latter could be a separate library?

Let me know what you think. Thanks!

Contributor

ojw28 commented Mar 12, 2018

I took a quick look at this. Some initial comments that might assist in getting it into something closer to what we'd be happy with:

  • There's a lot of code being lumped under the core util package that doesn't look like it belongs there. That package is more or less intended to be a package for things that don't belong anywhere else, but aren't substantial enough for a package of themselves. As soon as there's a sub-package in there the definition doesn't hold. If it's important enough for its own package then it shouldn't be under util. Most of util.media appears to be an Extractor implementation. If this is accurate, could it be in the extractor package instead?
  • Please can you give all classes that are needed only within a package default visibility, so that they're not exposed as part of the library API. There are a large number of classes that have public visibility where it appears unnecessary, including classes that don't have any Javadoc.
  • This is a pretty huge pull request. Can you provide some kind of brief documentation (e.g. a page or two) explaining why things are where they are and how they fit together. It's quite hard to know where to start when reviewing the change.
  • I was wondering if would be possible to implement some (possibly lots) of this as a standalone library that ExoPlayer could depend on, rather than have it all part of ExoPlayer directly. Is it possible to split out what's ExoPlayer specific and what's general rtp/sdp, so the latter could be a separate library?

Let me know what you think. Thanks!

@tresvecesseis

This comment has been minimized.

Show comment
Hide comment
@tresvecesseis

tresvecesseis Mar 12, 2018

Contributor

@ojw28 thanks for your review, I will try to give an answer to all your remarks. First of all, we are already rewriting/refactoring parts of the RTSP/RTP code in response to the feedback received from the testers, due to that we are introducing a reordering buffer to cope with out of order packets that seem to be a problem in some wifi scenarios, we are also improving the compatibility with a larger amount of ip webcams and adding trick modes support

We are trying to share code with our RTP extractor so we try to put common code in the util package, if that´s a problem we will move all the RTP code to an RTP extractor and make the RTSP mediasource depend on it. The SDP will become a new library that will be used by the RTSP and RTP packages.

We will fix the visibility of the classes outside the library and provide as much info as possible over the library design.

Contributor

tresvecesseis commented Mar 12, 2018

@ojw28 thanks for your review, I will try to give an answer to all your remarks. First of all, we are already rewriting/refactoring parts of the RTSP/RTP code in response to the feedback received from the testers, due to that we are introducing a reordering buffer to cope with out of order packets that seem to be a problem in some wifi scenarios, we are also improving the compatibility with a larger amount of ip webcams and adding trick modes support

We are trying to share code with our RTP extractor so we try to put common code in the util package, if that´s a problem we will move all the RTP code to an RTP extractor and make the RTSP mediasource depend on it. The SDP will become a new library that will be used by the RTSP and RTP packages.

We will fix the visibility of the classes outside the library and provide as much info as possible over the library design.

@frog1014

This comment has been minimized.

Show comment
Hide comment
@frog1014

frog1014 Mar 15, 2018

Is it possible to implement RTSP over HTTP?
Thanks so much!

frog1014 commented Mar 15, 2018

Is it possible to implement RTSP over HTTP?
Thanks so much!

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Mar 15, 2018

@frog1014 its possible and we want to do it but it isn't something we plan to support any time soon due it requires changes which heavy impact on the design. sorry.

portizb commented Mar 15, 2018

@frog1014 its possible and we want to do it but it isn't something we plan to support any time soon due it requires changes which heavy impact on the design. sorry.

@bpollman

This comment has been minimized.

Show comment
Hide comment
@bpollman

bpollman Mar 21, 2018

This looks great. Does this or are there plans to support SRTP and RTSPS?

bpollman commented Mar 21, 2018

This looks great. Does this or are there plans to support SRTP and RTSPS?

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Mar 22, 2018

@bpollman it isn't something we plan to support but we expect to make a final pull request soon so to anyone that want to contribute support for additional features as RTSP interleaved mode (RTP and RTSP over TCP), HTTP tunneled mode (RTP and RTSP over TCP over HTTP), multicast delivery, SRTP and RTSPS as well as another audio and video RTP payloads.

portizb commented Mar 22, 2018

@bpollman it isn't something we plan to support but we expect to make a final pull request soon so to anyone that want to contribute support for additional features as RTSP interleaved mode (RTP and RTSP over TCP), HTTP tunneled mode (RTP and RTSP over TCP over HTTP), multicast delivery, SRTP and RTSPS as well as another audio and video RTP payloads.

@changyujiang

This comment has been minimized.

Show comment
Hide comment
@changyujiang

changyujiang Jul 7, 2018

Also there is an 454 SESSION NOT FOUND error when access to MPEG4 audio track. Could anyone help me ...

07-06 21:32:35.068 8808-8808/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Init ada7d97 [ExoPlayerLib/2.8.2] [OnePlus3T, ONEPLUS A3000, OnePlus, 26]
07-06 21:32:35.072 8808-8808/com.google.android.exoplayer2.demo D/EventLogger: state [0.00, 0.00, window=0, true, BUFFERING]
07-06 21:32:35.136 8808-8857/com.google.android.exoplayer2.demo D/OpenGLRenderer: endAllActiveAnimators on 0x751dba5800 (ExpandableListView) with handle 0x751dc22500
07-06 21:32:35.584 8808-19507/com.google.android.exoplayer2.demo V/Sender: OPTIONS rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
07-06 21:32:35.937 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 401 Unauthorized
    CSeq: 1
    WWW-Authenticate: Digest realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203"
07-06 21:32:35.962 8808-19507/com.google.android.exoplayer2.demo V/Sender: OPTIONS rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 2
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0", response="26b8acb1d2ab9fc8846fb51249279e48"
07-06 21:32:36.696 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 200 OK
    CSeq: 2
    Server: Rtsp Server/3.0
    Public: OPTIONS, DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, TEARDOWN, SET_PARAMETER, GET_PARAMETER
07-06 21:32:36.710 8808-19507/com.google.android.exoplayer2.demo V/Sender: DESCRIBE rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 3
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Accept: application/sdp
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0", response="9d90ed09745d27c2a0d6c59a32d99953"
07-06 21:32:36.956 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 200 OK
    CSeq: 3
    x-Accept-Dynamic-Rate: 1
    Content-Base: rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/
    Cache-Control: must-revalidate
    Content-Type: application/sdp
    Content-Length: 631
    
    v=0
    o=- 2252261495 2252261495 IN IP4 0.0.0.0
    s=Media Server
    c=IN IP4 0.0.0.0
    t=0 0
    a=control:*
    a=packetization-supported:DH
    a=rtppayload-supported:DH
    a=range:npt=now-
    m=video 0 RTP/AVP 96
    a=control:trackID=0
    a=framerate:10.000000
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=4D001F;sprop-parameter-sets=Z00AH5pkAoAt/4C3AQEBQAAA+gAAE4g6GADQcAA0HC7y40MAGg4ABoOF3lwoAA==,aO48gAA=
    a=recvonly
    m=audio 0 RTP/AVP 97
    a=control:trackID=1
    a=rtpmap:97 MPEG4-GENERIC/8000
    a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1588
    a=recvonly
07-06 21:32:36.985 8808-8808/com.google.android.exoplayer2.demo D/EventLogger: timelineChanged [1.91, 0.00, window=0, periodCount=1, windowCount=1, reason=PREPARED
      period [?]
07-06 21:32:36.986 8808-8808/com.google.android.exoplayer2.demo D/EventLogger:   window [?, false, false]
    ]
07-06 21:32:36.998 8808-8808/com.google.android.exoplayer2.demo D/EventLogger: loading [1.93, 0.00, window=0, true]
07-06 21:32:37.013 8808-19507/com.google.android.exoplayer2.demo V/Sender: SETUP rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=0 RTSP/1.0
    CSeq: 4
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Transport: RTP/AVP;unicast;client_port=47766-47767
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=0", response="c456cc6c3817b77e17f84804924a59f2"
07-06 21:32:37.237 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 200 OK
    CSeq: 4
    Session: 410068335614;timeout=60
    Transport: RTP/AVP/UDP;unicast;client_port=47766-47767;server_port=49442-49443;ssrc=2FDC2459
    x-Dynamic-Rate: 1
07-06 21:32:37.284 8808-19507/com.google.android.exoplayer2.demo V/Sender: SETUP rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=1 RTSP/1.0
    CSeq: 5
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Transport: RTP/AVP;unicast;client_port=47728-47729
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=1", response="cb0c1cf04380985582fb2fd867d18518"
07-06 21:32:37.437 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 454 Session Not Found
    CSeq: 5
    Session: 410068335614
    WWW-Authenticate: Digest realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203"
07-06 21:32:37.461 8808-8808/com.google.android.exoplayer2.demo E/EventLogger: internalError [2.39, 0.00, window=0, period=0, loadError]
07-06 21:32:37.462 8808-19507/com.google.android.exoplayer2.demo V/Sender: TEARDOWN rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 6
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Session: 410068335614
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0", response="1185c868bdc9d422172ecf69829c0b66"
07-06 21:32:39.135 8808-8821/com.google.android.exoplayer2.demo I/zygote64: Compiler allocated 6MB to compile boolean android.app.IApplicationThread$Stub.onTransact(int, android.os.Parcel, android.os.Parcel, int)
07-06 21:32:39.435 8808-8808/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Release ada7d97 [ExoPlayerLib/2.8.2] [OnePlus3T, ONEPLUS A3000, OnePlus, 26] [goog.exo.core, goog.exo.ui, goog.exo.rtsp]
07-06 21:32:39.436 8808-19504/com.google.android.exoplayer2.demo V/RtspSampleStreamWrapper: onStopPlayback
    onStopPlayback
07-06 21:32:39.447 8808-8808/com.google.android.exoplayer2.demo E/EventLogger: internalError [4.38, 0.00, window=0, period=0, loadError]

changyujiang commented Jul 7, 2018

Also there is an 454 SESSION NOT FOUND error when access to MPEG4 audio track. Could anyone help me ...

07-06 21:32:35.068 8808-8808/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Init ada7d97 [ExoPlayerLib/2.8.2] [OnePlus3T, ONEPLUS A3000, OnePlus, 26]
07-06 21:32:35.072 8808-8808/com.google.android.exoplayer2.demo D/EventLogger: state [0.00, 0.00, window=0, true, BUFFERING]
07-06 21:32:35.136 8808-8857/com.google.android.exoplayer2.demo D/OpenGLRenderer: endAllActiveAnimators on 0x751dba5800 (ExpandableListView) with handle 0x751dc22500
07-06 21:32:35.584 8808-19507/com.google.android.exoplayer2.demo V/Sender: OPTIONS rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
07-06 21:32:35.937 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 401 Unauthorized
    CSeq: 1
    WWW-Authenticate: Digest realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203"
07-06 21:32:35.962 8808-19507/com.google.android.exoplayer2.demo V/Sender: OPTIONS rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 2
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0", response="26b8acb1d2ab9fc8846fb51249279e48"
07-06 21:32:36.696 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 200 OK
    CSeq: 2
    Server: Rtsp Server/3.0
    Public: OPTIONS, DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, TEARDOWN, SET_PARAMETER, GET_PARAMETER
07-06 21:32:36.710 8808-19507/com.google.android.exoplayer2.demo V/Sender: DESCRIBE rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 3
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Accept: application/sdp
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0", response="9d90ed09745d27c2a0d6c59a32d99953"
07-06 21:32:36.956 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 200 OK
    CSeq: 3
    x-Accept-Dynamic-Rate: 1
    Content-Base: rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/
    Cache-Control: must-revalidate
    Content-Type: application/sdp
    Content-Length: 631
    
    v=0
    o=- 2252261495 2252261495 IN IP4 0.0.0.0
    s=Media Server
    c=IN IP4 0.0.0.0
    t=0 0
    a=control:*
    a=packetization-supported:DH
    a=rtppayload-supported:DH
    a=range:npt=now-
    m=video 0 RTP/AVP 96
    a=control:trackID=0
    a=framerate:10.000000
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=4D001F;sprop-parameter-sets=Z00AH5pkAoAt/4C3AQEBQAAA+gAAE4g6GADQcAA0HC7y40MAGg4ABoOF3lwoAA==,aO48gAA=
    a=recvonly
    m=audio 0 RTP/AVP 97
    a=control:trackID=1
    a=rtpmap:97 MPEG4-GENERIC/8000
    a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1588
    a=recvonly
07-06 21:32:36.985 8808-8808/com.google.android.exoplayer2.demo D/EventLogger: timelineChanged [1.91, 0.00, window=0, periodCount=1, windowCount=1, reason=PREPARED
      period [?]
07-06 21:32:36.986 8808-8808/com.google.android.exoplayer2.demo D/EventLogger:   window [?, false, false]
    ]
07-06 21:32:36.998 8808-8808/com.google.android.exoplayer2.demo D/EventLogger: loading [1.93, 0.00, window=0, true]
07-06 21:32:37.013 8808-19507/com.google.android.exoplayer2.demo V/Sender: SETUP rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=0 RTSP/1.0
    CSeq: 4
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Transport: RTP/AVP;unicast;client_port=47766-47767
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=0", response="c456cc6c3817b77e17f84804924a59f2"
07-06 21:32:37.237 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 200 OK
    CSeq: 4
    Session: 410068335614;timeout=60
    Transport: RTP/AVP/UDP;unicast;client_port=47766-47767;server_port=49442-49443;ssrc=2FDC2459
    x-Dynamic-Rate: 1
07-06 21:32:37.284 8808-19507/com.google.android.exoplayer2.demo V/Sender: SETUP rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=1 RTSP/1.0
    CSeq: 5
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Transport: RTP/AVP;unicast;client_port=47728-47729
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0/trackID=1", response="cb0c1cf04380985582fb2fd867d18518"
07-06 21:32:37.437 8808-19506/com.google.android.exoplayer2.demo V/Receiver: RTSP/1.0 454 Session Not Found
    CSeq: 5
    Session: 410068335614
    WWW-Authenticate: Digest realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203"
07-06 21:32:37.461 8808-8808/com.google.android.exoplayer2.demo E/EventLogger: internalError [2.39, 0.00, window=0, period=0, loadError]
07-06 21:32:37.462 8808-19507/com.google.android.exoplayer2.demo V/Sender: TEARDOWN rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0 RTSP/1.0
    CSeq: 6
    User-Agent: ExoPlayerLib/2.8.2 (Media Player for Android)
    Session: 410068335614
    Authorization: Digest username="admin", realm="Login to AMC0017W4TL5S0AB27", nonce="fe1edfaf0a567e383f084295bf97f203", uri="rtsp://10.1.10.63/cam/realmonitor?channel=1&subtype=0", response="1185c868bdc9d422172ecf69829c0b66"
07-06 21:32:39.135 8808-8821/com.google.android.exoplayer2.demo I/zygote64: Compiler allocated 6MB to compile boolean android.app.IApplicationThread$Stub.onTransact(int, android.os.Parcel, android.os.Parcel, int)
07-06 21:32:39.435 8808-8808/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Release ada7d97 [ExoPlayerLib/2.8.2] [OnePlus3T, ONEPLUS A3000, OnePlus, 26] [goog.exo.core, goog.exo.ui, goog.exo.rtsp]
07-06 21:32:39.436 8808-19504/com.google.android.exoplayer2.demo V/RtspSampleStreamWrapper: onStopPlayback
    onStopPlayback
07-06 21:32:39.447 8808-8808/com.google.android.exoplayer2.demo E/EventLogger: internalError [4.38, 0.00, window=0, period=0, loadError]

@wingu-wiktor

This comment has been minimized.

Show comment
Hide comment
@wingu-wiktor

wingu-wiktor Aug 4, 2018

Hey, I also encountered problems with authentication for dvr device, the same as described by @changyujiang. It's about wrong header creation for authentication.
I also tried to play sample url without authentication - rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov - I've used @tresvecesseis Exoplayer on branch dev2-rtsp, I could see only a black screen, although the time was downloaded correctly.
I ended up using build-in Android's VideoView which works fine with rtsp.
Do you have any clue what can be the cause of rtsp not playing? Is it because of lack of TCP support?
I am total newbie in terms of working with videos on Android -is ExoPlayer somehow superior than VideoView for simple dvr playback? If yes can I help somehow with development of rtsp feature?

wingu-wiktor commented Aug 4, 2018

Hey, I also encountered problems with authentication for dvr device, the same as described by @changyujiang. It's about wrong header creation for authentication.
I also tried to play sample url without authentication - rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov - I've used @tresvecesseis Exoplayer on branch dev2-rtsp, I could see only a black screen, although the time was downloaded correctly.
I ended up using build-in Android's VideoView which works fine with rtsp.
Do you have any clue what can be the cause of rtsp not playing? Is it because of lack of TCP support?
I am total newbie in terms of working with videos on Android -is ExoPlayer somehow superior than VideoView for simple dvr playback? If yes can I help somehow with development of rtsp feature?

ened and others added some commits Aug 21, 2018

Merge pull request #3 from ened/dev-v2-rtsp-merge
Merges latest ExoPlayer changes into the RTSP branch
@googlebot

This comment has been minimized.

Show comment
Hide comment
@googlebot

googlebot Sep 10, 2018

Collaborator

So there's good news and bad news.

👍 The good news is that everyone that needs to sign a CLA (the pull request submitter and all commit authors) have done so. Everything is all good there.

😕 The bad news is that it appears that one or more commits were authored or co-authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that here in the pull request.

Note to project maintainer: This is a terminal state, meaning the cla/google commit status will not change from this state. It's up to you to confirm consent of all the commit author(s), set the cla label to yes (if enabled on your project), and then merge this pull request when appropriate.

Collaborator

googlebot commented Sep 10, 2018

So there's good news and bad news.

👍 The good news is that everyone that needs to sign a CLA (the pull request submitter and all commit authors) have done so. Everything is all good there.

😕 The bad news is that it appears that one or more commits were authored or co-authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that here in the pull request.

Note to project maintainer: This is a terminal state, meaning the cla/google commit status will not change from this state. It's up to you to confirm consent of all the commit author(s), set the cla label to yes (if enabled on your project), and then merge this pull request when appropriate.

@ened

This comment has been minimized.

Show comment
Hide comment
@ened

ened Sep 14, 2018

Contributor

@googlebot yes, approved.

Contributor

ened commented Sep 14, 2018

@googlebot yes, approved.

@AndrewRH

This comment has been minimized.

Show comment
Hide comment
@AndrewRH

AndrewRH Oct 1, 2018

Any update on getting this approved? It would be a great addition! :)

AndrewRH commented Oct 1, 2018

Any update on getting this approved? It would be a great addition! :)

@ptreitler

This comment has been minimized.

Show comment
Hide comment
@ptreitler

ptreitler Oct 3, 2018

I have tested the latest version and it looks very good overall! Much more stable than earlier versions I tested.

Just two issues I came across:

I've had some crashes with this stack trace

I think this occurs after the player has been released. I fixed it by catching all exceptions in Dispatcher.wait:
ExoPlayer-Dispatcher-patch.txt

And I've had some issues when trying to play the RTSP streams from IP cameras that use authentication as with this URL.

The player remains stuck in the "buffering" state. I didn't find anything useful in logcat, the last entry is

com.google.android.exoplayer2.demo V/Sender: OPTIONS * RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayerLib/2.7.3 (Media Player for Android)

Do you know how to fix this or at least gain more information about the issue?

Anyway, glad to see that the project is making progress, keep up the good work!

ptreitler commented Oct 3, 2018

I have tested the latest version and it looks very good overall! Much more stable than earlier versions I tested.

Just two issues I came across:

I've had some crashes with this stack trace

I think this occurs after the player has been released. I fixed it by catching all exceptions in Dispatcher.wait:
ExoPlayer-Dispatcher-patch.txt

And I've had some issues when trying to play the RTSP streams from IP cameras that use authentication as with this URL.

The player remains stuck in the "buffering" state. I didn't find anything useful in logcat, the last entry is

com.google.android.exoplayer2.demo V/Sender: OPTIONS * RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayerLib/2.7.3 (Media Player for Android)

Do you know how to fix this or at least gain more information about the issue?

Anyway, glad to see that the project is making progress, keep up the good work!

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Oct 3, 2018

I have tested the latest version and it looks very good overall! Much more stable than earlier versions I tested.

Just two issues I came across:

I've had some crashes with this stack trace

I think this occurs after the player has been released. I fixed it by catching all exceptions in Dispatcher.wait:
ExoPlayer-Dispatcher-patch.txt

And I've had some issues when trying to play the RTSP streams from IP cameras that use authentication as with this URL.

The player remains stuck in the "buffering" state. I didn't find anything useful in logcat, the last entry is

com.google.android.exoplayer2.demo V/Sender: OPTIONS * RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayerLib/2.7.3 (Media Player for Android)

Do you know how to fix this or at least gain more information about the issue?

Anyway, glad to see that the project is making progress, keep up the good work!

@ptreitler In the latest commits on dev-v2-rtsp branch the authentication issues are fix.

Attached a screenshot using your rtsp url:
img-20181003-wa0007

portizb commented Oct 3, 2018

I have tested the latest version and it looks very good overall! Much more stable than earlier versions I tested.

Just two issues I came across:

I've had some crashes with this stack trace

I think this occurs after the player has been released. I fixed it by catching all exceptions in Dispatcher.wait:
ExoPlayer-Dispatcher-patch.txt

And I've had some issues when trying to play the RTSP streams from IP cameras that use authentication as with this URL.

The player remains stuck in the "buffering" state. I didn't find anything useful in logcat, the last entry is

com.google.android.exoplayer2.demo V/Sender: OPTIONS * RTSP/1.0
    CSeq: 1
    User-Agent: ExoPlayerLib/2.7.3 (Media Player for Android)

Do you know how to fix this or at least gain more information about the issue?

Anyway, glad to see that the project is making progress, keep up the good work!

@ptreitler In the latest commits on dev-v2-rtsp branch the authentication issues are fix.

Attached a screenshot using your rtsp url:
img-20181003-wa0007

@ptreitler

This comment has been minimized.

Show comment
Hide comment
@ptreitler

ptreitler Oct 3, 2018

@portizb Thanks, I'll try again with that branch.

ptreitler commented Oct 3, 2018

@portizb Thanks, I'll try again with that branch.

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Oct 3, 2018

Any update on getting this approved? It would be a great addition! :)

@AndrewRH We are very busy working on other projects but I am trying to finish RTSP interleaved mode support as well as fix some bugs. So for now, we do not know when it may be approved.

portizb commented Oct 3, 2018

Any update on getting this approved? It would be a great addition! :)

@AndrewRH We are very busy working on other projects but I am trying to finish RTSP interleaved mode support as well as fix some bugs. So for now, we do not know when it may be approved.

@ptreitler

This comment has been minimized.

Show comment
Hide comment
@ptreitler

ptreitler Oct 8, 2018

@portizb Is there an issue tracker or any way we can help with the bugfixes?

ptreitler commented Oct 8, 2018

@portizb Is there an issue tracker or any way we can help with the bugfixes?

@ptreitler

This comment has been minimized.

Show comment
Hide comment
@ptreitler

ptreitler Oct 8, 2018

Some more feedback regarding RTSP streams with authentication: It works with many of the sample streams I tested, but some still fail. See
this updated media.exolist.json.

The same streams work when played with Android's VideoView on my test device.

ptreitler commented Oct 8, 2018

Some more feedback regarding RTSP streams with authentication: It works with many of the sample streams I tested, but some still fail. See
this updated media.exolist.json.

The same streams work when played with Android's VideoView on my test device.

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Oct 10, 2018

Some more feedback regarding RTSP streams with authentication: It works with many of the sample streams I tested, but some still fail. See
this updated media.exolist.json.

The same streams work when played with Android's VideoView on my test device.

@ptreitler I was testing the rtsp streams on your list and found errors that are already fixed, but none is due to authentication. Thanks for that.

There is a stream in the list that contains a RTP video payload that is not supported (MPEG4V-ES). We only support H264 in video streams:

         "name": "Sony SNC-DH260 - California, Los Angeles",
         "uri": "rtsp: // admin: admin@172.8.60.173/media/video1"

There is also another stream that is not available (RTSP Not Found):

         "name": "AXIS Q1755 - Tennessee, Tullahoma",
         "uri": "rtsp: // root: pass@216.153.40.42/axis-media/media.amps"

Today or tomorrow a new version will be available with the support of RTSP interleaved and bug fixes.

portizb commented Oct 10, 2018

Some more feedback regarding RTSP streams with authentication: It works with many of the sample streams I tested, but some still fail. See
this updated media.exolist.json.

The same streams work when played with Android's VideoView on my test device.

@ptreitler I was testing the rtsp streams on your list and found errors that are already fixed, but none is due to authentication. Thanks for that.

There is a stream in the list that contains a RTP video payload that is not supported (MPEG4V-ES). We only support H264 in video streams:

         "name": "Sony SNC-DH260 - California, Los Angeles",
         "uri": "rtsp: // admin: admin@172.8.60.173/media/video1"

There is also another stream that is not available (RTSP Not Found):

         "name": "AXIS Q1755 - Tennessee, Tullahoma",
         "uri": "rtsp: // root: pass@216.153.40.42/axis-media/media.amps"

Today or tomorrow a new version will be available with the support of RTSP interleaved and bug fixes.

@portizb

This comment has been minimized.

Show comment
Hide comment
@portizb

portizb Oct 10, 2018

@portizb Is there an issue tracker or any way we can help with the bugfixes?

@ptreitler We don't have an issue tracker. We try to fix the bugs when developers communicates in this pull request conversation.

Sometimes, it is very difficult to find the errors when the developer is testing a camera on your local network, and it makes it difficult to solve the issue because we do not have access to it or because we can not test it in the real environment of the developer.

Anyway, I think it's a good idea to use the issue tracker in the pull request track. I'll talk about this with @tresvecesseis.

Currently, we are trying to fix some issue memory heap leaks when an error occurs in preparing or playing media streams.

We hope soon to have a stable baseline so that it can be finally approved.

portizb commented Oct 10, 2018

@portizb Is there an issue tracker or any way we can help with the bugfixes?

@ptreitler We don't have an issue tracker. We try to fix the bugs when developers communicates in this pull request conversation.

Sometimes, it is very difficult to find the errors when the developer is testing a camera on your local network, and it makes it difficult to solve the issue because we do not have access to it or because we can not test it in the real environment of the developer.

Anyway, I think it's a good idea to use the issue tracker in the pull request track. I'll talk about this with @tresvecesseis.

Currently, we are trying to fix some issue memory heap leaks when an error occurs in preparing or playing media streams.

We hope soon to have a stable baseline so that it can be finally approved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment