Skip to content
New issue

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

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

Already on GitHub? # to your account

Could not play .m3u8 media #3158

Closed
BobSmith43 opened this issue Aug 9, 2017 · 3 comments
Closed

Could not play .m3u8 media #3158

BobSmith43 opened this issue Aug 9, 2017 · 3 comments

Comments

@BobSmith43
Copy link

Issue description

the issue is best described this way, when I am using my app for playing .m3u8 files

Reproduction steps

Start the player and try to play the video.

Link to test content

http://node1.twisted-symmetry.space:2000/HLS/capribb/capribb.m3u8

Version of ExoPlayer being used

im using exoplayer 2.3.1 the issue is happening.

Device(s) and version(s) of Android being used

this issue is happening on every android device my app is installed at. But the testing device is moto g4 plus with android 7.0 nougat.

A full bug report captured from the device

08-09 12:39:27.026 31360-31360/? I/art: Late-enabling -Xcheck:jni
08-09 12:39:27.630 31360-31411/com.google.android.exoplayer2.demo I/Adreno: QUALCOMM build                   : 7d18700, I8ee426a9a2
																			Build Date                       : 10/07/16
																			OpenGL ES Shader Compiler Version: XE031.09.00.03
																			Local Branch                     : mybranch22308589
																			Remote Branch                    : quic/LA.BR.1.3.6_rb1.6
																			Remote Branch                    : NONE
																			Reconstruct Branch               : NOTHING
08-09 12:39:27.642 31360-31411/com.google.android.exoplayer2.demo I/OpenGLRenderer: Initialized EGL, version 1.4
08-09 12:39:27.642 31360-31411/com.google.android.exoplayer2.demo D/OpenGLRenderer: Swap behavior 1
08-09 12:39:44.196 31360-31360/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Init 2.3.1 [athene_f, Moto G (4), motorola, 24]
08-09 12:39:44.222 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: state [0.00, true, I]
08-09 12:39:44.263 31360-31901/com.google.android.exoplayer2.demo D/NetworkSecurityConfig: No Network Security Config specified, using platform default
08-09 12:39:44.380 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: state [0.16, true, B]
08-09 12:39:44.454 31360-31411/com.google.android.exoplayer2.demo D/OpenGLRenderer: endAllActiveAnimators on 0x9b74f480 (ExpandableListView) with handle 0x9dc0b610
08-09 12:39:44.853 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:39:44.853 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:39:44.853 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [33.86, true, true]
08-09 12:39:44.853 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:39:44.892 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: loading [true]
08-09 12:39:52.183 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:39:52.183 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:39:52.183 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:39:52.184 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:39:59.480 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:39:59.480 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:39:59.480 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:39:59.480 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:01.639 31360-31367/com.google.android.exoplayer2.demo I/art: Do partial code cache collection, code=30KB, data=30KB
08-09 12:40:01.640 31360-31367/com.google.android.exoplayer2.demo I/art: After code cache collection, code=30KB, data=30KB
08-09 12:40:01.640 31360-31367/com.google.android.exoplayer2.demo I/art: Increasing code cache capacity to 128KB
08-09 12:40:06.798 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:06.798 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:06.798 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:40:06.798 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:14.122 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:14.122 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:14.122 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.01, true, true]
08-09 12:40:14.122 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:21.427 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:21.428 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:21.428 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:40:21.428 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:28.724 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:28.725 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:28.725 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.01, true, true]
08-09 12:40:28.725 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:36.041 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:36.041 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:36.041 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:40:36.041 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:43.522 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:43.522 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:43.522 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [39.99, true, true]
08-09 12:40:43.522 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:51.301 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:51.301 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:51.301 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:40:51.302 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:40:57.533 31360-31369/com.google.android.exoplayer2.demo W/art: Suspending all threads took: 16.988ms
08-09 12:40:57.543 31360-31373/com.google.android.exoplayer2.demo I/art: Background partial concurrent mark sweep GC freed 3857(194KB) AllocSpace objects, 5(244KB) LOS objects, 39% free, 13MB/22MB, paused 5.287ms total 38.839ms
08-09 12:40:58.605 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:40:58.605 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:40:58.605 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:40:58.605 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:07.277 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:07.277 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:07.277 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [39.99, true, true]
08-09 12:41:07.277 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:14.574 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:14.574 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:14.574 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:41:14.574 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:21.872 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:21.872 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:21.872 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:41:21.872 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:29.157 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:29.158 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:29.158 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:41:29.158 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:33.070 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: positionDiscontinuity
08-09 12:41:36.450 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:36.450 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:36.450 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [39.99, true, true]
08-09 12:41:36.450 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:43.736 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:43.736 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:43.736 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:41:43.736 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:51.028 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:51.028 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:51.028 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:41:51.028 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:41:58.382 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:41:58.382 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:41:58.383 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:41:58.383 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:05.751 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:05.751 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:05.751 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:42:05.751 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:13.092 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:13.092 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:13.092 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.01, true, true]
08-09 12:42:13.092 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:20.390 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:20.390 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:20.390 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [39.99, true, true]
08-09 12:42:20.390 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:27.769 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:27.769 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:27.770 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:42:27.770 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:35.064 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:35.064 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:35.065 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:42:35.065 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:42.369 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:42.369 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:42.369 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:42:42.369 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:49.660 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:49.661 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:49.661 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:42:49.661 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:42:56.949 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:42:56.949 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:42:56.950 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:42:56.950 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:43:04.938 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:43:04.938 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:43:04.938 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.01, true, true]
08-09 12:43:04.938 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:43:12.224 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:43:12.224 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:43:12.224 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [40.00, true, true]
08-09 12:43:12.224 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]
08-09 12:43:19.508 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 12:43:19.508 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   period [?]
08-09 12:43:19.508 31360-31360/com.google.android.exoplayer2.demo D/EventLogger:   window [37.34, true, true]
08-09 12:43:19.508 31360-31360/com.google.android.exoplayer2.demo D/EventLogger: ]

Screenshot

device-2017-08-09-125415

@AquilesCanta
Copy link
Contributor

I was testing this but the playlist suddenly became unavailable (giving me 404). Can you fix it?

@BobSmith43
Copy link
Author

@AquilesCanta I have checked this URL with external player like VLC & that is working fine. Also tested on device webview it plays video there as well.

@AquilesCanta
Copy link
Contributor

AquilesCanta commented Aug 9, 2017

So the issue here is that the TS declares an ADTS PES but does not include any packets for said stream, so the player never ends up preparing. The stream will play if you modify HlsMediaChunk so that it enables DefaultTsPayloadReaderFactory.FLAG_IGNORE_AAC_STREAM when constructing the TsExtractor.

The correct solution is to remove the ADTS entry from the stream's PMT.
There is also a pending enhancement to allow extractor injection (#2748). This would allow you to enable the flag. But I cannot provide any timelines for this landing.
Another solution I can think of is create a master playlist whose only EXT-X-STREAM-INF points to http://node1.twisted-symmetry.space:2000/HLS/capribb/capribb.m3u8 and in its codecs attribute, include only the video codecs. Instead of playing directly the media playlist, you can play your wrapper master playlist, and ExoPlayer will then turn on the mentioned flag automatically because it will know, according to the codecs list, that the stream does not contain audio. Even though it's declared in the PMT. This is a hacky solution, but does not require any code changes.

Hope this helps!

@google google locked and limited conversation to collaborators Dec 8, 2017
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Projects
None yet
Development

No branches or pull requests

2 participants