Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upAdd RTSP support #3854
Conversation
googlebot
added
the
cla: yes
label
Feb 15, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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?
|
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
self-assigned this
Feb 16, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.
|
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.
|
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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).
|
Regarding controlling the player and listening to player events in the media source: depending on the requirements, you may be able to use the |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.
|
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.
|
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. |
googlebot
added
cla: no
and removed
cla: yes
labels
Feb 18, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
CLAs look good, thanks! |
googlebot
added
cla: yes
and removed
cla: no
labels
Feb 18, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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 |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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 ! |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.
Edit: some more logs
|
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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)? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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). |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.mediaappears to be anExtractorimplementation. If this is accurate, could it be in theextractorpackage 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!
|
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:
Let me know what you think. Thanks! |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.
|
@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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
frog1014
commented
Mar 15, 2018
|
Is it possible to implement RTSP over HTTP? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
bpollman
commented
Mar 21, 2018
|
This looks great. Does this or are there plans to support SRTP and RTSPS? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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 ...
|
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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. |
ened
and others
added some commits
Aug 21, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
googlebot
Sep 10, 2018
Collaborator
So there's good news and bad news.
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.
|
So there's good news and bad news. Note to project maintainer: This is a terminal state, meaning the |
portizb
added some commits
Sep 10, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@googlebot yes, approved. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
AndrewRH
commented
Oct 1, 2018
|
Any update on getting this approved? It would be a great addition! :) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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: 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
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! |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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.txtAnd 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.
portizb
commented
Oct 3, 2018
@ptreitler In the latest commits on dev-v2-rtsp branch the authentication issues are fix. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
ptreitler
commented
Oct 3, 2018
|
@portizb Thanks, I'll try again with that branch. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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
@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. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
ptreitler
commented
Oct 8, 2018
|
@portizb Is there an issue tracker or any way we can help with the bugfixes? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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 The same streams work when played with Android's VideoView on my test device. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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
•
@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", There is also another stream that is not available (RTSP Not Found): "name": "AXIS Q1755 - Tennessee, Tullahoma", Today or tomorrow a new version will be available with the support of RTSP interleaved and bug fixes. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
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
•
@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. |

tresvecesseis commentedFeb 15, 2018
•
edited
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:
devices use URL parameters to encode user/password info)
(interleaved not implemented)
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.