Skip to content
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

Owncast live stream cannot be parsed (v3.1) #29

Open
micudaj opened this issue Jan 24, 2023 · 6 comments
Open

Owncast live stream cannot be parsed (v3.1) #29

micudaj opened this issue Jan 24, 2023 · 6 comments

Comments

@micudaj
Copy link

micudaj commented Jan 24, 2023

When I use a URL from Owncast streaming server it cannot be parsed. I get the following error:

2023-01-24 09:24:10,621 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'bzm - Streaming Sampler'.
java.lang.NullPointerException: null
	at java.net.URI$Parser.parse(URI.java:3104) ~[?:?]
	at java.net.URI.<init>(URI.java:600) ~[?:?]
	at java.net.URI.create(URI.java:881) ~[?:?]
	at com.blazemeter.jmeter.videostreaming.hls.Playlist.buildAbsoluteUri(Playlist.java:117) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.videostreaming.hls.Playlist.lambda$getMediaSegments$1(Playlist.java:139) ~[jmeter-bzm-hls-3.1.jar:?]
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[?:?]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
	at com.blazemeter.jmeter.videostreaming.hls.Playlist.getMediaSegments(Playlist.java:140) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.videostreaming.hls.HlsSampler$MediaPlayback.updateMediaSegments(HlsSampler.java:116) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.videostreaming.hls.HlsSampler$MediaPlayback.<init>(HlsSampler.java:110) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.videostreaming.hls.HlsSampler$MediaPlayback.<init>(HlsSampler.java:100) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.videostreaming.hls.HlsSampler.sample(HlsSampler.java:59) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.videostreaming.core.VideoStreamingSampler.sample(VideoStreamingSampler.java:79) ~[jmeter-bzm-hls-3.1.jar:?]
	at com.blazemeter.jmeter.hls.logic.HlsSampler.sample(HlsSampler.java:212) ~[jmeter-bzm-hls-3.1.jar:?]
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1290) ~[ApacheJMeter_http.jar:5.5]
	at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651) ~[ApacheJMeter_core.jar:5.5]
	at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570) ~[ApacheJMeter_core.jar:5.5]
	at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core.jar:5.5]
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core.jar:5.5]
	at java.lang.Thread.run(Thread.java:834) ~[?:?]
2023-01-24 09:24:10,628 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2023-01-24 09:24:10,628 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1

Example content of playlist file:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:19
#EXT-X-INDEPENDENT-SEGMENTS
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:44.269+0100
stream-qPvv4BTVR-19.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:46.269+0100
stream-qPvv4BTVR-20.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:48.269+0100
stream-qPvv4BTVR-21.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:50.269+0100
stream-qPvv4BTVR-22.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:52.269+0100
stream-qPvv4BTVR-23.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:54.269+0100
stream-qPvv4BTVR-24.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:56.269+0100
stream-qPvv4BTVR-25.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:24:58.269+0100
stream-qPvv4BTVR-26.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:00.269+0100
stream-qPvv4BTVR-27.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:02.269+0100
stream-qPvv4BTVR-28.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:04.269+0100
stream-qPvv4BTVR-29.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:06.269+0100
stream-qPvv4BTVR-30.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:08.269+0100
stream-qPvv4BTVR-31.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:10.269+0100
stream-qPvv4BTVR-32.ts
#EXTINF:2.000000,
#EXT-X-PROGRAM-DATE-TIME:2023-01-24T09:25:12.269+0100
stream-qPvv4BTVR-33.ts
@micudaj micudaj changed the title Owncast live stream cannot be parsed Owncast live stream cannot be parsed (v3.1) Jan 24, 2023
@RicardoPoleo
Copy link

RicardoPoleo commented Jan 24, 2023

Hello @micudaj,

Thanks for taking the time to report this issue.

For us to properly address it, could you provide the following information:

  1. Which version of the Plugin are you using (I'm assuming V3.1)
  2. Which version of JMeter are you using
  3. What's the operative system you are testing the plugin on
  4. The URL that is producing this behavior
  5. Any particular configurations that we should be aware of?

If any of this information happens to contain sensitive data, you can always email me the details to one of our emails ([email protected]), and we will properly store and review it.

Hope to hear from you soon,

@micudaj
Copy link
Author

micudaj commented Jan 24, 2023

Which version of the Plugin are you using (I'm assuming V3.1) --> 3.1
Which version of JMeter are you using --> 5.5
What's the operative system you are testing the plugin on --> Mac OS 12.6.2
The URL that is producing this behavior --> https://xyz.test.de/hls/2/stream.m3u8 (only internal resolvable)
Any particular configurations that we should be aware of? --> none, was a default setup following https://www.blazemeter.com/blog/hls-plugin#how

@RicardoPoleo
Copy link

Do you know if this issue also happens with any of the public live streams of that platform?

So we can simulate it?

Kind regards,

@micudaj
Copy link
Author

micudaj commented Jan 24, 2023

happens also on streams from the owncast directory:
Go to https://owncast.online/ and scroll down for current streams.

e.g. https://live.retrostrange.com/hls/1/stream.m3u8

@micudaj
Copy link
Author

micudaj commented Jan 24, 2023

I saw that hlsparserj is archived, maybe this is of interest for you: https://github.com/carlanton/m3u8-parser

@micudaj
Copy link
Author

micudaj commented Jan 25, 2023

I think the problem is that hlsparserj is compliant with Version 12 of the Pantos spec, in which EXTINF tag MUST be followed by a media segment, but it in the released RFC this is no longer a MUST. https://www.rfc-editor.org/rfc/rfc8216#section-4.3.2.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants