Giter VIP home page Giter VIP logo

lavaplayer's People

Contributors

a9lim avatar aikaterna avatar bytealex avatar danthonywalker avatar devoxin avatar devyukine avatar drschlaubi avatar ducc avatar duncte123 avatar dxssucuk avatar emzi0767 avatar freyacodes avatar jagrosh avatar jellybrick avatar jonbeckas avatar kimcore avatar markozajc avatar matsprehn avatar minndevelopment avatar mpotthoff avatar nikammerlaan avatar robinfriedli avatar schnapster avatar sedmelluq avatar shikhir-arora avatar shredder121 avatar topi314 avatar viztea avatar walkyst avatar xavinlol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lavaplayer's Issues

OGG Track loading issue

Description

When I load an ogg audio stream (icecast webradio), I get this error:

2023-05-17 18:30:23.670  INFO 94 --- [XNIO-1 task-12] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "http://icecast.flazebot.com:8100/phonk_premium.ogg"
2023-05-17 18:30:23.671  WARN 94 --- [lava-daemon-pool-info-loader-2-thread-1] c.s.d.l.container.ogg.OggContainerProbe  : Failed to collect additional information on OGG stream.

java.lang.NullPointerException: Cannot invoke "com.sedmelluq.discord.lavaplayer.container.ogg.OggStreamSizeInfo.getDuration()" because "sizeInfo" is null
	at com.sedmelluq.discord.lavaplayer.container.ogg.vorbis.OggVorbisCodecHandler.loadMetadata(OggVorbisCodecHandler.java:62) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.container.ogg.OggTrackLoader.loadMetadata(OggTrackLoader.java:36) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.container.ogg.OggContainerProbe.collectStreamInformation(OggContainerProbe.java:61) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.container.ogg.OggContainerProbe.probe(OggContainerProbe.java:46) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.container.MediaContainerDetection.checkContainer(MediaContainerDetection.java:91) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.container.MediaContainerDetection.detectContainer(MediaContainerDetection.java:76) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.container.MediaContainerDetection.detectContainer(MediaContainerDetection.java:61) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.detectContainerWithClient(HttpAudioSourceManager.java:142) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.detectContainer(HttpAudioSourceManager.java:120) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.loadItem(HttpAudioSourceManager.java:81) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:449) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:431) ~[lavaplayer-1.4.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:223) ~[lavaplayer-1.4.0.jar!/:na]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

2023-05-17 18:30:23.671  INFO 94 --- [lava-daemon-pool-info-loader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track phonk

The track plays correctly but at the end of the music, the end of track event is called and the stream is not played anymore even though the audio stream has not stopped.

After taking the version 3.7.4 of Lavalink it turns out that the problem is solved, I think it comes from the update of lavaplayer to 1.4.0, the lavalink logs (same configuration) :

2023-05-17 20:16:21.626  INFO 230156 --- [XNIO-1 task-1] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "http://icecast.flazebot.com:8100/phonk_premium.ogg"
2023-05-17 20:16:21.902  INFO 230156 --- [lava-daemon-pool-info-loader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track phonk
2023-05-17 20:16:21.905  INFO 230156 --- [XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=http://icecast.flazebot.com:8100/phonk_premium.ogg, client=192.168.0.2

Version info

Client used: Pomice

Output of java -version:

openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 17.0.6+10-Debian-1deb11u1, mixed mode, sharing)

Output of java -jar Lavalink.jar --version:

Version:        3.7.5
Build time:     06.03.2023 12:02:05 UTC
Branch          HEAD
Commit:         c00286d
Commit time:    06.03.2023 11:59:46 UTC
JVM:            17.0.6
Lavaplayer      1.4.0-original

YouTube sending missing data from playlist

Description

One of my users came to me about a problem with loading a playlist and it works just fine but with this specific playlist it won't load and I get the following error: java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null

To Reproduce

Steps to reproduce the behavior:

  1. Attempt to load the following playlist with v3 or v4: https://www.youtube.com/playlist?list=PLOZHxgoRx5l2AGC3AQMmoVgkhUaHBuriM

Expected behavior

All tracks to load

Version info

Client used: lavalink-client

Lavalink Logs:

2023-10-10T21:12:32.736-07:00  INFO 6288 --- [  XNIO-1 task-3] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://youtube.com/playlist?list=PLOZHxgoRx5l2AGC3AQMmoVgkhUaHBuriM&si=kfZxBI39pUSF4hEj"
2023-10-10T21:12:33.893-07:00  INFO 6288 --- [  XNIO-1 task-3] lavalink.server.player.AudioLoader       : Loaded playlist hYpE hOuRs
2023-10-10T21:12:33.925-07:00  WARN 6288 --- [  XNIO-1 task-3] c.s.d.l.p.DefaultAudioPlayerManager      : Load result handler for https://youtube.com/playlist?list=PLOZHxgoRx5l2AGC3AQMmoVgkhUaHBuriM&si=kfZxBI39pUSF4hEj threw an exception

java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
        at java.base/java.io.DataOutputStream.writeUTF(DataOutputStream.java:359) ~[na:na]
        at java.base/java.io.DataOutputStream.writeUTF(DataOutputStream.java:333) ~[na:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.encodeTrack(DefaultAudioPlayerManager.java:218) ~[lavaplayer-2.0.2.jar!/:na]
        at lavalink.server.util.UtilKt.encodeTrack(util.kt:138) ~[classes!/:4.0.0-beta.4]
        at lavalink.server.util.UtilKt.toTrack(util.kt:48) ~[classes!/:4.0.0-beta.4]
        at lavalink.server.player.AudioLoader.playlistLoaded(AudioLoader.kt:70) ~[classes!/:4.0.0-beta.4]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:422) ~[lavaplayer-2.0.2.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394) ~[lavaplayer-2.0.2.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156) ~[lavaplayer-2.0.2.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager.loadItemSync(AudioPlayerManager.java:91) ~[lavaplayer-2.0.2.jar!/:na]
        at lavalink.server.player.AudioLoader.load(AudioLoader.kt:56) ~[classes!/:4.0.0-beta.4]
        at lavalink.server.player.AudioLoaderRestHandler.loadTracks(AudioLoaderRestHandler.kt:56) ~[classes!/:4.0.0-beta.4]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at lavalink.server.io.ResponseHeaderFilter.doFilterInternal(ResponseHeaderFilter.kt:17) ~[classes!/:4.0.0-beta.4]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
        at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) ~[xnio-api-3.8.8.Final.jar!/:3.8.8.Final]
        at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

Additional context

Was asked to open this issue from the Discord server by topi

MP3 2.5 files are unsupported and result in undefined behaviour

As a continuation of Walkyst/lavaplayer-natives-fork#6, it seems that this issue isn't caused by libmpg123 itself, but by lavaplayer incorrectly determining the MP3 parameters if the input is a MP3 2.5 file.
This results in a slew of vague and unhelpful mpg123 error messages (shown in the issue linked before).

I'm not entirely sure what it would take to implement MP3 2.5 support, but reworking this, and everything that depends on it, is probably a good start:

private static boolean isMpegVersionOne(byte[] buffer, int offset) {
return (buffer[offset + 1] & 0x08) == 0x08;
}

The above method incorrectly returns true for my sample file. Forcing it to return false doesn't solve much, because the bitrate and sample rate are still incorrectly determined.

Something went wrong on playing

I'm constantly getting this error message on LavaLink. How should I fix it?

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when looking up the track      
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45) ~[lavaplayer-2.0.4.jar!/:na]

Video returned by YouTube isn't what was requested

There seems to be a new issue with YouTube popping up sporadically. It seems to affect any video but it does not happen 100% of the time, I was able to reproduce it with the following video: https://www.youtube.com/watch?v=-k9qDxyxS3s

When it fails, it produces the following error:

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Video returned by YouTube isn't what was requested
	at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.load(DefaultYoutubeTrackDetailsLoader.java:59)
	at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:36)
	at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:230)
	at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:254)
	at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:250)
	at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:103)
	at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:68)
	at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:46)
	at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:218)
	at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:149)
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:412)
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394)
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156)
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$loadItem$0(DefaultAudioPlayerManager.java:175)
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: {"responseContext":{"serviceTrackingParams":[{"service":"GFEEDBACK","params":[{"key":"is_viewed_live","value":"False"},{"key":"is_alc_surface","value":"false"},{"key":"ipcc","value":"0"},{"key":"logged_in","value":"0"},{"key":"e","value":"23858057,23944306,23946420,23966208,23983296,23998056,24004644,24036947,24077241,24078649,24080738,24094148,24117491,24120820,24132305,24135310,24143331,24166867,24173288,24181174,24187377,24187920,24230811,24232551,24241378,24255545,24265964,24267186,24290971,24377598,24390675,24397985,24406318,24407446,24451319,24458317,24458324,24458329,24458684,24468724,24515423,24522874,24524098,24542367,24548627,24548629,24556101,24560416,24569425,24585133,24585737,24697013,39325978,51003636,51009781,51012659,51014091,51016856,51017346,51019626,51020570,51025415,51027870,51030103,51033399,51033765,51037346,51037349,51037540,51043775,51048489,51050361,51053689,51057842,51057857,51057865,51060353,51064835,51068313,51068632,51069269,51074183,51079239,51079299,51080128,51082236,51082384,51083232,51084267,51084279,51084290,51089177,51089441,51092557,51092661,51094171,51094178,51094197,51094200,51094207,51095478,51096646,51096989,51099085,51099404,51101454,51101465,51103088,51103518,51103858,51105795,51105868,51106995,51107338,51108006,51108486,51108620,51108974,51109702,51110160,51111738,51112401,51113658,51113661,51115184,51116067,51116578,51118064,51118293,51118595,51118932,51123073,51123540,51124104,51124478,51125857,51125903,51126664,51126845,51127837,51128585,51129060,51129702,51129851,51131429,51131840,51132393,51134506,51134769,51134883,51135346,51135658,51136217,51136785,51136842,51137086,51137134,51137185,51137672,51139379,51140749,51141541,51141780,51141798,51142469,51142566,51145258,51146435,51146962,51148976,51148983,51149606,51152042,51152050,51152207,51153082"}]},{"service":"CSI","params":[{"key":"c","value":"ANDROID"},{"key":"cver","value":"18.06.35"},{"key":"yt_li","value":"0"},{"key":"GetPlayer_rid","value":"0xc1fc2bd437f0434a"}]},{"service":"GUIDED_HELP","params":[{"key":"logged_in","value":"0"}]},{"service":"ECATCHER","params":[{"key":"client.version","value":"18.06"},{"key":"client.name","value":"ANDROID"}]},{"service":"LISTNR","params":[{"key":"e","value":"51136217,51134506,51089441,51104424,51111738,51152042,24267186,51080128,24406318,51102763,51103518,51118293,24524098,51101454,24036947,51096989,24290971,51126664,51012659,51064835,24181216,51108006,51124104,24569425,51068632,24556101,51125857,24254870,24560416,24024517,24230811,51152050,51019626,24143331,24033252,51132393,24250570,51146435,51074183,51131840,51016856,51092661,24458317,24548627,51112401,51137672,24458684,51050361,51104418,51140749,24410415,51030735,51142469,24458324,24195012,51103088,24232551,24522874,51082384,51104447,51144986,51009781,51074286,51096646,24181174,51123540,51118932,24451319,51025415,24220751,51146962,51043775,51134883,51152207,51033765,51137185,51106995,24135310,51141780,51069269,51101465,51116067,51053689,51116578,24515423,24458329,51137134,51048489,51033399,51037540,24166867,51139379,51153082,24286257,51060353,51105868,51125903,51149606,51129060,24397985,51027870,51020570,24117491,24377598,51142566,51128585,51127837,51135346,24585737,24585133,51003636,24274141,51079239,51136842,51095478,51014091,51110160,24195115,39325978,24548629,24542367,51136785"}]}],"maxAgeSeconds":0},"playabilityStatus":{"status":"OK","playableInEmbed":true,"offlineability":{"buttonRenderer":{"serviceEndpoint":{"clickTrackingParams":"CAkQ6ewBIhMI8qOq2uWahQMVLso_BB0epAIL","ypcGetOfflineUpsellEndpoint":{"params":"ChPqqN25AQ0KC2FRdkdJSWRnRkRNIgthUXZHSUlkZ0ZETSoVCAkYAVIPCgthUXZHSUlkZ0ZETSAB"}},"trackingParams":"CAkQ6ewBIhMI8qOq2uWahQMVLso_BB0epAIL"}},"pictureInPicture":{"pictureInPictureRenderer":{"playableInPip":true}},"miniplayer":{"miniplayerRenderer":{"playbackMode":"PLAYBACK_MODE_ALLOW"}},"contextParams":"Q0FFU0FnZ0M="},"streamingData":{"expiresInSeconds":"21540","formats":[{"itag":18,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=18&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&cnr=14&ratebypass=yes&dur=300.071&lmt=1711576327765252&mt=1711760447&fvip=2&fexp=51141541&c=ANDROID&txp=5538434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Ccnr%2Cratebypass%2Cdur%2Clmt&sig=AJfQdSswRAIgbMiIvk_Iy89iHsRlVsOiu58NKt11LSanCLlJmqEP5JACIC67Aq5WBk7ZkOo15TkMcDUCUC2agjTjkysizlIZfQJ1&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"","bitrate":137681,"width":640,"height":358,"lastModified":"1711576327765252","quality":"medium","fps":6,"qualityLabel":"360p","projectionType":"RECTANGULAR","audioQuality":"AUDIO_QUALITY_LOW","approxDurationMs":"300071","audioSampleRate":"44100","audioChannels":2}],"adaptiveFormats":[{"itag":134,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=134&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=310413&dur=300.000&lmt=1711576325179364&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgUgENMoU7UQozIUJrzLRpaqLGNeang3Ch94zAgWLka7ICIFwHYgJyiX_Ob0-7Q76JxbQQhjt9o2kH5oaQDVLOUZJP&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"avc1.4d4016\"","bitrate":9667,"width":640,"height":358,"initRange":{"start":"0","end":"740"},"indexRange":{"start":"741","end":"1288"},"lastModified":"1711576325179364","contentLength":"310413","quality":"medium","fps":6,"qualityLabel":"360p","projectionType":"RECTANGULAR","averageBitrate":8277,"highReplication":true,"approxDurationMs":"300000"},{"itag":243,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=243&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=620700&dur=299.999&lmt=1711576309861254&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAOgjyj4bNRT42eZZPpPmo_CwWwV5f4yVCh614-GOpirbAiAlrSGUyDcRYMM_hrU1y9kwCrAN41p5FH-hRvm3plxViQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/webm; codecs=\"vp9\"","bitrate":19045,"width":640,"height":358,"initRange":{"start":"0","end":"218"},"indexRange":{"start":"219","end":"939"},"lastModified":"1711576309861254","contentLength":"620700","quality":"medium","fps":6,"qualityLabel":"360p","projectionType":"RECTANGULAR","averageBitrate":16552,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"299999"},{"itag":396,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=396&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=563729&dur=300.000&lmt=1711576399164396&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhALLdwjkHHCKhDxqPlZ1qZUA43514j_cr6wYJmkT34u97AiBXcrCM6hK1jz7kQQgASEZl5MNQ_PlFNPZoZ-u91YSczA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"av01.0.01M.08\"","bitrate":17204,"width":640,"height":358,"initRange":{"start":"0","end":"699"},"indexRange":{"start":"700","end":"1247"},"lastModified":"1711576399164396","contentLength":"563729","quality":"medium","fps":6,"qualityLabel":"360p","projectionType":"RECTANGULAR","averageBitrate":15032,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"300000"},{"itag":133,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=133&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=208905&dur=300.000&lmt=1711576334264359&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgTXzfIZWobxpjnuM0RGCGeFQk4V0gYBHXN-Ch5ngAVWoCIFewVrjl-DKJWFujfjX9W7dCNcKpE_dko5ujdsN1z9Fl&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"avc1.4d4015\"","bitrate":7003,"width":426,"height":238,"initRange":{"start":"0","end":"740"},"indexRange":{"start":"741","end":"1288"},"lastModified":"1711576334264359","contentLength":"208905","quality":"small","fps":6,"qualityLabel":"240p","projectionType":"RECTANGULAR","averageBitrate":5570,"approxDurationMs":"300000"},{"itag":242,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=242&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=384187&dur=299.999&lmt=1711576293743107&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgPV3ttKDGHntBtS2suyaHxpMyg5KnqdDUD_--rnV9TWoCIQDUmd68TPH0aUUZnizk6qLjl4HXDWUqXdzBD_SowTj-uQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/webm; codecs=\"vp9\"","bitrate":11689,"width":426,"height":238,"initRange":{"start":"0","end":"217"},"indexRange":{"start":"218","end":"935"},"lastModified":"1711576293743107","contentLength":"384187","quality":"small","fps":6,"qualityLabel":"240p","projectionType":"RECTANGULAR","averageBitrate":10245,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"299999"},{"itag":395,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=395&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=324781&dur=300.000&lmt=1711576321021233&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAMq2FYcQGEEPJ7UKKa8AczKMQ9DuFJkChayyxxUDNjlMAiEA3Rc8gO30bgQf9iSPQc7R9gj3Jl7UzcPIGgClzBMCf5Y%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"av01.0.00M.08\"","bitrate":10124,"width":426,"height":238,"initRange":{"start":"0","end":"699"},"indexRange":{"start":"700","end":"1247"},"lastModified":"1711576321021233","contentLength":"324781","quality":"small","fps":6,"qualityLabel":"240p","projectionType":"RECTANGULAR","averageBitrate":8660,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"300000"},{"itag":160,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=160&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=139006&dur=300.000&lmt=1711576325035365&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgVB4hLGg7bm5P-5UkSeL5-mfmBbAF1is4xP7AWBKEfYoCIFU-ZrmDl9d-46UYmTy5u6ksLQtMN5g0f_QK6znXb0s_&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"avc1.4d400b\"","bitrate":5131,"width":256,"height":144,"initRange":{"start":"0","end":"739"},"indexRange":{"start":"740","end":"1287"},"lastModified":"1711576325035365","contentLength":"139006","quality":"tiny","fps":6,"qualityLabel":"144p","projectionType":"RECTANGULAR","averageBitrate":3706,"approxDurationMs":"300000"},{"itag":278,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=278&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=223725&dur=299.999&lmt=1711576390934771&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAJXvNg5kIF_QP7izz6-W_JnCCAPJXOCEAni-nSRDPi16AiEAjJ4MhWBRqbbFCXyLnNG85hoM-l9U9xmpURv4oFI4o_Q%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/webm; codecs=\"vp9\"","bitrate":6956,"width":256,"height":144,"initRange":{"start":"0","end":"217"},"indexRange":{"start":"218","end":"930"},"lastModified":"1711576390934771","contentLength":"223725","quality":"tiny","fps":6,"qualityLabel":"144p","projectionType":"RECTANGULAR","averageBitrate":5966,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"299999"},{"itag":394,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=394&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=207535&dur=300.000&lmt=1711576438084941&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAKVMSSd0CsfYMGFDfbbNcpWn16e-7J5UGOtH7LSGS_yzAiA2-WsYBFD-77iWQUnCytXRBCnNxffFojspmLQipIaSOA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"av01.0.00M.08\"","bitrate":6913,"width":256,"height":144,"initRange":{"start":"0","end":"699"},"indexRange":{"start":"700","end":"1247"},"lastModified":"1711576438084941","contentLength":"207535","quality":"tiny","fps":6,"qualityLabel":"144p","projectionType":"RECTANGULAR","averageBitrate":5534,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"300000"},{"itag":597,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=597&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=141189&dur=300.000&lmt=1711576306929520&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAP01_9JWOrnMZedTwv5Eeq4LBaJfzIfSit7zcUNSbuvfAiEA0HU0s387AyhCPq3zYDzx8V2jWFy0devJ2A--N8BynL8%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/mp4; codecs=\"avc1.4d400b\"","bitrate":5196,"width":256,"height":144,"initRange":{"start":"0","end":"739"},"indexRange":{"start":"740","end":"1287"},"lastModified":"1711576306929520","contentLength":"141189","quality":"tiny","fps":6,"qualityLabel":"144p","projectionType":"RECTANGULAR","averageBitrate":3765,"approxDurationMs":"300000"},{"itag":598,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=598&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=222740&dur=299.999&lmt=1711576303810722&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAKxf_yd8KzfGwMAC1oj2lULKq2R-u-a8IBihzQU61H_vAiEAvej45qTbhVV0JVBHbXZEtyhFpZfrrqBGDNkWasOtEt8%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"video/webm; codecs=\"vp9\"","bitrate":6956,"width":256,"height":144,"initRange":{"start":"0","end":"217"},"indexRange":{"start":"218","end":"930"},"lastModified":"1711576303810722","contentLength":"222740","quality":"tiny","fps":6,"qualityLabel":"144p","projectionType":"RECTANGULAR","averageBitrate":5939,"colorInfo":{"primaries":"COLOR_PRIMARIES_BT709","transferCharacteristics":"COLOR_TRANSFER_CHARACTERISTICS_BT709","matrixCoefficients":"COLOR_MATRIX_COEFFICIENTS_BT709"},"approxDurationMs":"299999"},{"itag":139,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=139&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fmp4&gir=yes&clen=1830967&dur=300.141&lmt=1711574706493930&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgVZJtpdeuZcHltzo2myq6HPICE9BWAsbaLMwiAArw8zECIQCbO-VuOcQcAYBiTneWjthmtJgkb2f8aByjbxn8w0Dflg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/mp4; codecs=\"mp4a.40.5\"","bitrate":50039,"initRange":{"start":"0","end":"640"},"indexRange":{"start":"641","end":"1044"},"lastModified":"1711574706493930","contentLength":"1830967","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":48802,"audioQuality":"AUDIO_QUALITY_LOW","approxDurationMs":"300141","audioSampleRate":"22050","audioChannels":2,"loudnessDb":-9986},{"itag":140,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fmp4&gir=yes&clen=4857095&dur=300.071&lmt=1711574696628887&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAPiIfV9leVFtZhCnWmwg_qbuOBPCs3KUtgiLz4bRAvMRAiEApLQjS5Bz1nNDoPedcyo-ZBU5kQZzKJrCJ6OoBPKduZA%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/mp4; codecs=\"mp4a.40.2\"","bitrate":130951,"initRange":{"start":"0","end":"631"},"indexRange":{"start":"632","end":"1035"},"lastModified":"1711574696628887","contentLength":"4857095","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":129491,"highReplication":true,"audioQuality":"AUDIO_QUALITY_MEDIUM","approxDurationMs":"300071","audioSampleRate":"44100","audioChannels":2,"loudnessDb":-9986},{"itag":249,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=249&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=136118&dur=300.021&lmt=1711574692785189&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAO0Lno4luJOaHxGXgxbe_PRGbbKWoESdyQ82FP0EBErnAiBXP3cbHyh9ee0aCjwB80La1_-pAPfkA-UEUp5TCzAlSQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/webm; codecs=\"opus\"","bitrate":10800,"initRange":{"start":"0","end":"258"},"indexRange":{"start":"259","end":"768"},"lastModified":"1711574692785189","contentLength":"136118","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":3629,"audioQuality":"AUDIO_QUALITY_LOW","approxDurationMs":"300021","audioSampleRate":"48000","audioChannels":2,"loudnessDb":-9986},{"itag":250,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=250&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=136118&dur=300.021&lmt=1711574710710074&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgemaZliMIlRe3QbXuyoqZiTZKUfQyoWg3vajRdzsXAG4CIQC3FBbV9Ym9nhc5W4QjjPyTALGcJLdYsa8yJsiKnw7n3g%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/webm; codecs=\"opus\"","bitrate":10800,"initRange":{"start":"0","end":"258"},"indexRange":{"start":"259","end":"768"},"lastModified":"1711574710710074","contentLength":"136118","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":3629,"audioQuality":"AUDIO_QUALITY_LOW","approxDurationMs":"300021","audioSampleRate":"48000","audioChannels":2,"loudnessDb":-9986},{"itag":251,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=251&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=136118&dur=300.021&lmt=1711574689964039&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIge0tPK1cpmpPmYdyVD_9C14lAUaJT4v7t55wHv_TcMwYCIBZVjWncG-b4AQxYPnrC-ww8Gwc_pznktqJVEGqlR3cB&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/webm; codecs=\"opus\"","bitrate":10800,"initRange":{"start":"0","end":"258"},"indexRange":{"start":"259","end":"768"},"lastModified":"1711574689964039","contentLength":"136118","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":3629,"audioQuality":"AUDIO_QUALITY_MEDIUM","approxDurationMs":"300021","audioSampleRate":"48000","audioChannels":2,"loudnessDb":-9986},{"itag":599,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=599&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fmp4&gir=yes&clen=1155650&dur=300.141&lmt=1711574730071930&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgLixB71hVrAK3u8PIQDwEkQXkYlGB7j524LnvD_XIRuQCID-1efZP5hPayR6eCnXMSS1ZVfY3ZzL_XgZgAIBGg-jX&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/mp4; codecs=\"mp4a.40.5\"","bitrate":32052,"initRange":{"start":"0","end":"640"},"indexRange":{"start":"641","end":"1044"},"lastModified":"1711574730071930","contentLength":"1155650","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":30802,"audioQuality":"AUDIO_QUALITY_ULTRALOW","approxDurationMs":"300141","audioSampleRate":"22050","audioChannels":2,"loudnessDb":-9986},{"itag":600,"url":"https://rr2---sn-p5qlsn7s.googlevideo.com/videoplayback?expire=1711782347&ei=a2UHZrLCGq6U_9EPnsiKWA&ip=138.199.52.72&id=o-AJmY_akAVe1IbRpLKg6ojQspHxlwB0kE8JDUEOnamcdX&itag=600&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=T2&mm=31%2C26&mn=sn-p5qlsn7s%2Csn-ab5sznld&ms=au%2Conr&mv=m&mvi=2&pl=24&initcwndbps=2300000&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=136118&dur=300.021&lmt=1711574696633882&mt=1711760447&fvip=2&keepalive=yes&fexp=51141541&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhALMSLco05z44IPHICkUc1ZEPK0Vvjhz6MAYHu2iB3KzNAiBJ721RWaQwF9_UEh6W4fYVltCKtb8TmPYKEigT-dgOMg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ALClDIEwRQIgZ3zRpiST-vrFIi5jDuM0BJShxyIPjGCTGG1TMk1D7EMCIQC-awNnzQZHUfS3ZmyDrh-1c77QCGr5ke5JF5JkrL5nuQ%3D%3D","mimeType":"audio/webm; codecs=\"opus\"","bitrate":10800,"initRange":{"start":"0","end":"258"},"indexRange":{"start":"259","end":"768"},"lastModified":"1711574696633882","contentLength":"136118","quality":"tiny","projectionType":"RECTANGULAR","averageBitrate":3629,"audioQuality":"AUDIO_QUALITY_ULTRALOW","approxDurationMs":"300021","audioSampleRate":"48000","audioChannels":2,"loudnessDb":-9986}]},"playbackTracking":{"videostatsPlaybackUrl":{"baseUrl":"https://s.youtube.com/api/stats/playback?cl=619301790&docid=aQvGIIdgFDM&ei=a2UHZrLCGq6U_9EPnsiKWA&fexp=v1%2C23858057%2C86249%2C2114%2C19788%2C17088%2C14760%2C6588%2C32303%2C40294%2C1408%2C2089%2C13410%2C23343%2C3329%2C11485%2C3005%2C8021%2C23536%2C6421%2C7886%2C6203%2C543%2C42891%2C1740%2C8827%2C14167%2C10419%2C1222%2C23785%2C86627%2C13077%2C7310%2C8333%2C1128%2C43873%2C6998%2C7%2C5%2C355%2C10040%2C46699%2C7451%2C1224%2C18269%2C6260%2C2%2C7472%2C4315%2C9009%2C15708%2C604%2C111276%2C14628965%2C11677658%2C6145%2C2878%2C1432%2C2765%2C490%2C2280%2C944%2C4845%2C2455%2C2233%2C3296%2C366%2C3581%2C3%2C191%2C6235%2C4714%2C1872%2C3328%2C4153%2C15%2C8%2C2488%2C4482%2C3478%2C319%2C637%2C4914%2C5056%2C60%2C829%2C2108%2C148%2C848%2C1035%2C12%2C11%2C4887%2C264%2C3116%2C104%2C1510%2C7%2C19%2C3%2C7%2C1271%2C1168%2C343%2C2096%2C319%2C2050%2C11%2C1623%2C430%2C340%2C1937%2C73%2C1127%2C343%2C668%2C480%2C134%2C354%2C728%2C458%2C1578%2C663%2C1257%2C3%2C1523%2C883%2C511%2C1486%2C229%2C302%2C337%2C4141%2C467%2C564%2C374%2C1379%2C46%2C761%2C181%2C992%2C748%2C475%2C642%2C149%2C1578%2C411%2C553%2C2113%2C263%2C114%2C463%2C312%2C559%2C568%2C57%2C244%2C48%2C51%2C487%2C1707%2C1370%2C792%2C239%2C18%2C671%2C97%2C2692%2C1177%2C527%2C2014%2C7%2C623%2C2436%2C8%2C157%2C875&ns=yt&plid=AAYU1ltK3Pf_8f2h&adformat=0_6&el=adunit&len=301&of=wbAUJoLFDaeeOSJrHXH1sg&vm=CAEQABgEOjJBSHFpSlRMdF9JdU5jZmExYzlDSWN5T1VMTjV0RlhKTkt1Snp1Q1Q4NFVXUXNZSXM1d2JuQVBta0tESXFiMU5FSkwyazFxU002akJ4YWkyZHBubVdRNWlZUFo1V0JTbkZtMlc0Tkg5U1A2bWNtb0hoam0zelZJM1ZZLTlRaEd0cUZ1M3hCZXAzMjhib1ppclBsNFoxeTJzcWxzaklhVlZaQUFoAg","headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"},{"headerType":"PLUS_PAGE_ID"}]},"videostatsDelayplayUrl":{"baseUrl":"https://s.youtube.com/api/stats/delayplay?cl=619301790&docid=aQvGIIdgFDM&ei=a2UHZrLCGq6U_9EPnsiKWA&fexp=v1%2C23858057%2C86249%2C2114%2C19788%2C17088%2C14760%2C6588%2C32303%2C40294%2C1408%2C2089%2C13410%2C23343%2C3329%2C11485%2C3005%2C8021%2C23536%2C6421%2C7886%2C6203%2C543%2C42891%2C1740%2C8827%2C14167%2C10419%2C1222%2C23785%2C86627%2C13077%2C7310%2C8333%2C1128%2C43873%2C6998%2C7%2C5%2C355%2C10040%2C46699%2C7451%2C1224%2C18269%2C6260%2C2%2C7472%2C4315%2C9009%2C15708%2C604%2C111276%2C14628965%2C11677658%2C6145%2C2878%2C1432%2C2765%2C490%2C2280%2C944%2C4845%2C2455%2C2233%2C3296%2C366%2C3581%2C3%2C191%2C6235%2C4714%2C1872%2C3328%2C4153%2C15%2C8%2C2488%2C4482%2C3478%2C319%2C637%2C4914%2C5056%2C60%2C829%2C2108%2C148%2C848%2C1035%2C12%2C11%2C4887%2C264%2C3116%2C104%2C1510%2C7%2C19%2C3%2C7%2C1271%2C1168%2C343%2C2096%2C319%2C2050%2C11%2C1623%2C430%2C340%2C1937%2C73%2C1127%2C343%2C668%2C480%2C134%2C354%2C728%2C458%2C1578%2C663%2C1257%2C3%2C1523%2C883%2C511%2C1486%2C229%2C302%2C337%2C4141%2C467%2C564%2C374%2C1379%2C46%2C761%2C181%2C992%2C748%2C475%2C642%2C149%2C1578%2C411%2C553%2C2113%2C263%2C114%2C463%2C312%2C559%2C568%2C57%2C244%2C48%2C51%2C487%2C1707%2C1370%2C792%2C239%2C18%2C671%2C97%2C2692%2C1177%2C527%2C2014%2C7%2C623%2C2436%2C8%2C157%2C875&ns=yt&plid=AAYU1ltK3Pf_8f2h&adformat=0_6&el=adunit&is_ad=1&len=301&of=wbAUJoLFDaeeOSJrHXH1sg&vm=CAEQABgEOjJBSHFpSlRMdF9JdU5jZmExYzlDSWN5T1VMTjV0RlhKTkt1Snp1Q1Q4NFVXUXNZSXM1d2JuQVBta0tESXFiMU5FSkwyazFxU002akJ4YWkyZHBubVdRNWlZUFo1V0JTbkZtMlc0Tkg5U1A2bWNtb0hoam0zelZJM1ZZLTlRaEd0cUZ1M3hCZXAzMjhib1ppclBsNFoxeTJzcWxzaklhVlZaQUFoAg","headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"},{"headerType":"PLUS_PAGE_ID"}]},"videostatsWatchtimeUrl":{"baseUrl":"https://s.youtube.com/api/stats/watchtime?cl=619301790&docid=aQvGIIdgFDM&ei=a2UHZrLCGq6U_9EPnsiKWA&fexp=v1%2C23858057%2C86249%2C2114%2C19788%2C17088%2C14760%2C6588%2C32303%2C40294%2C1408%2C2089%2C13410%2C23343%2C3329%2C11485%2C3005%2C8021%2C23536%2C6421%2C7886%2C6203%2C543%2C42891%2C1740%2C8827%2C14167%2C10419%2C1222%2C23785%2C86627%2C13077%2C7310%2C8333%2C1128%2C43873%2C6998%2C7%2C5%2C355%2C10040%2C46699%2C7451%2C1224%2C18269%2C6260%2C2%2C7472%2C4315%2C9009%2C15708%2C604%2C111276%2C14628965%2C11677658%2C6145%2C2878%2C1432%2C2765%2C490%2C2280%2C944%2C4845%2C2455%2C2233%2C3296%2C366%2C3581%2C3%2C191%2C6235%2C4714%2C1872%2C3328%2C4153%2C15%2C8%2C2488%2C4482%2C3478%2C319%2C637%2C4914%2C5056%2C60%2C829%2C2108%2C148%2C848%2C1035%2C12%2C11%2C4887%2C264%2C3116%2C104%2C1510%2C7%2C19%2C3%2C7%2C1271%2C1168%2C343%2C2096%2C319%2C2050%2C11%2C1623%2C430%2C340%2C1937%2C73%2C1127%2C343%2C668%2C480%2C134%2C354%2C728%2C458%2C1578%2C663%2C1257%2C3%2C1523%2C883%2C511%2C1486%2C229%2C302%2C337%2C4141%2C467%2C564%2C374%2C1379%2C46%2C761%2C181%2C992%2C748%2C475%2C642%2C149%2C1578%2C411%2C553%2C2113%2C263%2C114%2C463%2C312%2C559%2C568%2C57%2C244%2C48%2C51%2C487%2C1707%2C1370%2C792%2C239%2C18%2C671%2C97%2C2692%2C1177%2C527%2C2014%2C7%2C623%2C2436%2C8%2C157%2C875&ns=yt&plid=AAYU1ltK3Pf_8f2h&adformat=0_6&el=adunit&is_ad=1&len=301&of=wbAUJoLFDaeeOSJrHXH1sg&vm=CAEQABgEOjJBSHFpSlRMdF9JdU5jZmExYzlDSWN5T1VMTjV0RlhKTkt1Snp1Q1Q4NFVXUXNZSXM1d2JuQVBta0tESXFiMU5FSkwyazFxU002akJ4YWkyZHBubVdRNWlZUFo1V0JTbkZtMlc0Tkg5U1A2bWNtb0hoam0zelZJM1ZZLTlRaEd0cUZ1M3hCZXAzMjhib1ppclBsNFoxeTJzcWxzaklhVlZaQUFoAg","headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"},{"headerType":"PLUS_PAGE_ID"}]},"ptrackingUrl":{"baseUrl":"https://www.youtube.com/ptracking?content_v=&ei=a2UHZrLCGq6U_9EPnsiKWA&plid=AAYU1ltK3Pf_8f2h&pltype=adpromoted&ptchn=youtube_host&ptk=youtube_host&video_id=aQvGIIdgFDM","headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"},{"headerType":"PLUS_PAGE_ID"}]},"qoeUrl":{"baseUrl":"https://s.youtube.com/api/stats/qoe?adformat=0_6&cl=619301790&docid=aQvGIIdgFDM&ei=a2UHZrLCGq6U_9EPnsiKWA&event=streamingstats&fexp=v1%2C23858057%2C86249%2C2114%2C19788%2C17088%2C14760%2C6588%2C32303%2C40294%2C1408%2C2089%2C13410%2C23343%2C3329%2C11485%2C3005%2C8021%2C23536%2C6421%2C7886%2C6203%2C543%2C42891%2C1740%2C8827%2C14167%2C10419%2C1222%2C23785%2C86627%2C13077%2C7310%2C8333%2C1128%2C43873%2C6998%2C7%2C5%2C355%2C10040%2C46699%2C7451%2C1224%2C18269%2C6260%2C2%2C7472%2C4315%2C9009%2C15708%2C604%2C111276%2C14628965%2C11677658%2C6145%2C2878%2C1432%2C2765%2C490%2C2280%2C944%2C4845%2C2455%2C2233%2C3296%2C366%2C3581%2C3%2C191%2C6235%2C4714%2C1872%2C3328%2C4153%2C15%2C8%2C2488%2C4482%2C3478%2C319%2C637%2C4914%2C5056%2C60%2C829%2C2108%2C148%2C848%2C1035%2C12%2C11%2C4887%2C264%2C3116%2C104%2C1510%2C7%2C19%2C3%2C7%2C1271%2C1168%2C343%2C2096%2C319%2C2050%2C11%2C1623%2C430%2C340%2C1937%2C73%2C1127%2C343%2C668%2C480%2C134%2C354%2C728%2C458%2C1578%2C663%2C1257%2C3%2C1523%2C883%2C511%2C1486%2C229%2C302%2C337%2C4141%2C467%2C564%2C374%2C1379%2C46%2C761%2C181%2C992%2C748%2C475%2C642%2C149%2C1578%2C411%2C553%2C2113%2C263%2C114%2C463%2C312%2C559%2C568%2C57%2C244%2C48%2C51%2C487%2C1707%2C1370%2C792%2C239%2C18%2C671%2C97%2C2692%2C1177%2C527%2C2014%2C7%2C623%2C2436%2C8%2C157%2C875&ns=yt&plid=AAYU1ltK3Pf_8f2h","headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"},{"headerType":"PLUS_PAGE_ID"}]},"atrUrl":{"baseUrl":"https://s.youtube.com/api/stats/atr?docid=aQvGIIdgFDM&ei=a2UHZrLCGq6U_9EPnsiKWA&is_ad=1&len=301&ns=yt&plid=AAYU1ltK3Pf_8f2h&ver=2","elapsedMediaTimeSeconds":3,"headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"},{"headerType":"PLUS_PAGE_ID"}]},"engageUrl":{"baseUrl":"https://s.youtube.com/api/stats/engage?adformat=0_6&cl=619301790&cmt=%5BVSS_CMT%5D&conn=%5BVSS_CONN%5D&cpn=%5BVSS_CPN%5D&docid=aQvGIIdgFDM&ei=a2UHZrLCGq6U_9EPnsiKWA&el=adunit&fexp=v1%2C23858057%2C86249%2C2114%2C19788%2C17088%2C14760%2C6588%2C32303%2C40294%2C1408%2C2089%2C13410%2C23343%2C3329%2C11485%2C3005%2C8021%2C23536%2C6421%2C7886%2C6203%2C543%2C42891%2C1740%2C8827%2C14167%2C10419%2C1222%2C23785%2C86627%2C13077%2C7310%2C8333%2C1128%2C43873%2C6998%2C7%2C5%2C355%2C10040%2C46699%2C7451%2C1224%2C18269%2C6260%2C2%2C7472%2C4315%2C9009%2C15708%2C604%2C111276%2C14628965%2C11677658%2C6145%2C2878%2C1432%2C2765%2C490%2C2280%2C944%2C4845%2C2455%2C2233%2C3296%2C366%2C3581%2C3%2C191%2C6235%2C4714%2C1872%2C3328%2C4153%2C15%2C8%2C2488%2C4482%2C3478%2C319%2C637%2C4914%2C5056%2C60%2C829%2C2108%2C148%2C848%2C1035%2C12%2C11%2C4887%2C264%2C3116%2C104%2C1510%2C7%2C19%2C3%2C7%2C1271%2C1168%2C343%2C2096%2C319%2C2050%2C11%2C1623%2C430%2C340%2C1937%2C73%2C1127%2C343%2C668%2C480%2C134%2C354%2C728%2C458%2C1578%2C663%2C1257%2C3%2C1523%2C883%2C511%2C1486%2C229%2C302%2C337%2C4141%2C467%2C564%2C374%2C1379%2C46%2C761%2C181%2C992%2C748%2C475%2C642%2C149%2C1578%2C411%2C553%2C2113%2C263%2C114%2C463%2C312%2C559%2C568%2C57%2C244%2C48%2C51%2C487%2C1707%2C1370%2C792%2C239%2C18%2C671%2C97%2C2692%2C1177%2C527%2C2014%2C7%2C623%2C2436%2C8%2C157%2C875&is_ad=1&lact=%5BVSS_LACT%5D&len=301&ns=yt&of=wbAUJoLFDaeeOSJrHXH1sg&plid=AAYU1ltK3Pf_8f2h&rt=%5BVSS_RT%5D&state=%5BVSS_STATE%5D&vis=%5BVSS_VIS%5D&vm=CAEQABgEOjJBSHFpSlRMdF9JdU5jZmExYzlDSWN5T1VMTjV0RlhKTkt1Snp1Q1Q4NFVXUXNZSXM1d2JuQVBta0tESXFiMU5FSkwyazFxU002akJ4YWkyZHBubVdRNWlZUFo1V0JTbkZtMlc0Tkg5U1A2bWNtb0hoam0zelZJM1ZZLTlRaEd0cUZ1M3hCZXAzMjhib1ppclBsNFoxeTJzcWxzaklhVlZaQUFoAg","headers":[{"headerType":"USER_AUTH"},{"headerType":"VISITOR_ID"}]},"videostatsScheduledFlushWalltimeSeconds":[10,20,30],"videostatsDefaultFlushIntervalSeconds":300},"videoDetails":{"videoId":"aQvGIIdgFDM","title":"Video Not Available","lengthSeconds":"300","keywords":["tips","tricks","help","tutorial","youtube","youtubehelp","support","how to"],"channelId":"UCMDQxm7cUx3yXkfeHa5zJIQ","isOwnerViewing":false,"shortDescription":"Video Not Available","isCrawlable":false,"thumbnail":{"thumbnails":[{"url":"https://i.ytimg.com/vi/aQvGIIdgFDM/hqdefault.jpg?sqp=-oaymwEyCHgQWkhG8quKqQMmCAEVAACIQnABwAEG8AEB-AH-BIAC5gKKAgwIABABGGUgZShlMA8=&rs=AOn4CLAcNCNgR1o21wW2bPNPSXq9zrx6Hg","width":120,"height":90},{"url":"https://i.ytimg.com/vi/aQvGIIdgFDM/hqdefault.jpg?sqp=-oaymwE2CMACELQBSEbyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gSAAuYCigIMCAAQARhlIGUoZTAP&rs=AOn4CLDb0DVkt1kDweb1B48oUPyR5z4pCA","width":320,"height":180},{"url":"https://i.ytimg.com/vi/aQvGIIdgFDM/hqdefault.jpg?sqp=-oaymwEmCOADEOgC8quKqQMa8AEB-AH-BIAC5gKKAgwIABABGGUgZShlMA8=&rs=AOn4CLCK1AwhQMVrg5kj-Jdn6saENiLGKw","width":480,"height":360}]},"allowRatings":false,"viewCount":"404928","author":"YouTube Viewers","isPrivate":false,"isUnpluggedCorpus":false,"isLiveContent":false},"annotations":[{"playerAnnotationsExpandedRenderer":{"featuredChannel":{"startTimeMs":"5000","endTimeMs":"301000","watermark":{"thumbnails":[{"url":"https://i.ytimg.com/an/MDQxm7cUx3yXkfeHa5zJIQ/featured_channel.jpg?v=5d85123f","width":40,"height":40}]},"trackingParams":"CAgQ8zciEwjyo6ra5ZqFAxUuyj8EHR6kAgs="},"allowSwipeDismiss":true}}],"playerConfig":{"audioConfig":{"loudnessDb":-9986,"perceptualLoudnessDb":-10000,"enablePerFormatLoudness":true},"exoPlayerConfig":{"useExoPlayer":true,"useAdaptiveBitrate":true,"maxInitialByteRate":91136,"minDurationForQualityIncreaseMs":12364,"maxDurationForQualityDecreaseMs":3720,"minDurationToRetainAfterDiscardMs":21000,"lowWatermarkMs":15000,"highWatermarkMs":30000,"lowPoolLoad":0.8,"highPoolLoad":0.8,"sufficientBandwidthOverhead":0.9,"bufferChunkSizeKb":50,"httpConnectTimeoutMs":16000,"httpReadTimeoutMs":8000,"numAudioSegmentsPerFetch":1,"numVideoSegmentsPerFetch":2,"minDurationForPlaybackStartMs":1600,"enableExoplayerReuse":false,"useRadioTypeForInitialQualitySelection":true,"blacklistFormatOnError":false,"enableBandaidHttpDataSource":true,"httpLoadTimeoutMs":18000,"canPlayHdDrm":true,"videoBufferSegmentCount":389,"audioBufferSegmentCount":38,"useAbruptSplicing":false,"minRetryCount":10,"minChunksNeededToPreferOffline":2,"secondsToMaxAggressiveness":0,"enableSurfaceviewResizeWorkaround":true,"enableVp9IfThresholdsPass":false,"matchQualityToViewportOnUnfullscreen":false,"lowAudioQualityConnTypes":["MOBILE_CONNECTION_TYPE_CELLULAR_2G","MOBILE_CONNECTION_TYPE_CELLULAR_3G"],"useDashForLiveStreams":true,"enableLibvpxVideoTrackRenderer":false,"lowAudioQualityBandwidthThresholdBps":786432,"enableVariableSpeedPlayback":true,"preferOnesieBufferedFormat":true,"minimumBandwidthSampleBytes":16384,"useDashForOtfAndCompletedLiveStreams":true,"disableCacheAwareVideoFormatEvaluation":false,"useLiveDvrForDashLiveStreams":true,"cronetResetTimeoutOnRedirects":true,"emitVideoDecoderChangeEvents":false,"onesieVideoBufferLoadTimeoutMs":"0","onesieVideoBufferReadTimeoutMs":"0","libvpxEnableGl":false,"enableVp9EncryptedIfThresholdsPass":false,"enableOpus":true,"usePredictedBuffer":true,"maxReadAheadMediaTimeMs":120000,"useMediaTimeCappedLoadControl":true,"allowCacheOverrideToLowerQualitiesWithinRange":0,"allowDroppingUndecodedFrames":true,"minDurationForPlaybackRestartMs":5000,"serverProvidedBandwidthHeader":"","liveOnlyPegStrategy":"LIVE_ONLY_PEG_STRATEGY_SEEK_ON_REBUFFER_ESTIMATE_DURATION","enableRedirectorHostFallback":true,"enableHighlyAvailableFormatFallbackOnPcr":false,"recordTrackRendererTimingEvents":true,"minErrorsForRedirectorHostFallback":0,"nonHardwareMediaCodecNames":["OMX.ffmpeg.vp9.decoder","OMX.google.vp9.decoder","c2.android.vp9.decoder","OMX.Intel.sw_vd.vp9","OMX.MTK.VIDEO.DECODER.SW.VP9","c2.mtk.sw.vp9.decoder","OMX.google.av1.decoder","c2.android.av1.decoder","OMX.sprd.av1.decoder"],"enableVp9IfInHardware":true,"enableVp9EncryptedIfInHardware":true,"useOpusMedAsLowQualityAudio":false,"minErrorsForPcrFallback":0,"useStickyRedirectHttpDataSource":true,"onlyVideoBandwidth":true,"useRedirectorOnNetworkChange":false,"enableMaxReadaheadAbrThreshold":true,"cacheCheckDirectoryWritabilityOnce":false,"predictorType":"PREDICTOR_TYPE_NEAREST_RANK","slidingPercentile":0.25,"slidingWindowSize":12,"maxFrameDropIntervalMs":100,"ignoreLoadTimeoutForFallback":false,"serverBweMultiplier":1,"drmMaxKeyfetchDelayMs":900000,"maxResolutionForWhiteNoise":0,"whiteNoiseRenderEffectMode":"RENDER_EFFECT_MODE_UNKNOWN","enableLibvpxHdr":false,"enableCacheAwareStreamSelection":true,"useExoCronetDataSource":true,"whiteNoiseScale":0,"whiteNoiseOffset":0,"preventVideoFrameLaggingWithLibvpx":false,"enableMediaCodecHdr":true,"enableMediaCodecSwHdr":false,"liveOnlyWindowChunks":10,"bearerMinDurationToRetainAfterDiscardMs":[21000,21000,21000,21000,120000,120000,90000,120000],"forceWidevineL3":false,"useAverageBitrate":false,"useMedialibAudioTrackRendererForLive":true,"useExoPlayerV2":true,"logMediaRequestEventsToCsi":true,"onesieFixNonZeroStartTimeFormatSelection":false,"liveOnlyReadaheadStepSizeChunks":1,"liveOnlyBufferHealthHalfLifeSeconds":60,"liveOnlyMinBufferHealthRatio":0.75,"liveOnlyMinLatencyToSeekRatio":3,"manifestlessPartialChunkStrategy":"ANDROID_PARTIAL_CHUNK_STRATEGY_RETRY_RANGE_CHECK_LMT","ignoreViewportSizeWhenSticky":false,"enableLibvpxFallback":false,"disableLibvpxLoopFilter":false,"enableVpxMediaView":false,"hdrMinScreenBrightness":0,"hdrMaxScreenBrightnessThreshold":0,"onesieDataSourceAboveCacheDataSource":true,"httpNonplayerLoadTimeoutMs":72000,"numVideoSegmentsPerFetchStrategy":"NUM_SEGMENTS_PER_FETCH_STRATEGY_LIMITED_DURATION","maxVideoDurationPerFetchMs":12000,"maxVideoEstimatedLoadDurationMs":-1,"estimatedServerClockHalfLife":5,"estimatedServerClockStrictOffset":false,"minReadAheadMediaTimeMs":0,"readAheadGrowthRate":0,"useDynamicReadAhead":false,"useYtVodMediaSourceForV2":false,"enableV2Gapless":false,"useLiveHeadTimeMillis":true,"allowTrackSelectionWithUpdatedVideoItagsForExoV2":true,"maxAllowableTimeBeforeMediaTimeUpdateSec":15,"enableDynamicHdr":false,"v2PerformEarlyStreamSelection":false,"v2UsePlaybackStreamSelectionResult":false,"v2MinTimeBetweenAbrReevaluationMs":2000,"avoidReusePlaybackAcrossLoadvideos":false,"enableInfiniteNetworkLoadingRetries":true,"reportExoPlayerStateOnTransition":true,"manifestlessSequenceMethod":"MANIFESTLESS_SEQUENCE_METHOD_LIVE_HEAD","useLiveHeadWindow":true,"enableDynamicHdrInHardware":true,"ultralowAudioQualityBandwidthThresholdBps":0,"retryLiveNetNocontentWithDelay":true,"ignoreUnneededSeeksToLiveHead":true,"adaptiveLiveHeadWindow":true,"drmMetricsQoeLoggingFraction":0.01,"liveNetNocontentMaximumErrors":-1,"waitForDrmLicenseBeforeProcessingAndroidStuckBufferfull":true,"slidingPercentileScalar":0.85,"minAdaptiveVideoQuality":0,"platypusBackBufferDurationMs":30000},"playbackStartConfig":{"startTimeToleranceBeforeMs":"20000"},"adRequestConfig":{"filterTimeEventsOnDelta":10000,"useCriticalExecOnAdsPrep":true,"userCriticalExecOnAdsProcessing":true,"enableCountdownNextToThumbnailAndroid":true,"preskipScalingFactorAndroid":0.712,"preskipPaddingAndroid":6},"networkProtocolConfig":{"useQuic":true},"androidNetworkStackConfig":{"networkStack":"CRONET","androidCronetResponsePriority":{"priorityValue":"BACKGROUND_10_THREAD_PRIORITY"},"androidMetadataNetworkConfig":{"coalesceRequests":true}},"lidarSdkConfig":{"enableActiveViewReporter":true,"useMediaTime":true,"sendTosMetrics":true,"usePlayerState":false,"enableIosAppStateCheck":true,"enableImprovedSizeReportingAndroid":true,"enableIsAndroidVideoAlwaysMeasurable":true,"enableActiveViewAudioMeasurementAndroid":true},"androidMedialibConfig":{"isItag18MainProfile":true,"dashManifestVersion":5,"initialBandwidthEstimates":[{"detailedNetworkType":"DETAILED_NETWORK_TYPE_WIFI","bandwidthBps":"921853"},{"detailedNetworkType":"DETAILED_NETWORK_TYPE_LTE","bandwidthBps":"631467"}],"viewportSizeFraction":0.85,"enablePrerollPrebuffer":true,"prebufferOptimizeForViewportSize":true,"hpqViewportSizeFraction":0.58},"playerControlsConfig":{"showCachedInTimebar":true},"variableSpeedConfig":{"availablePlaybackSpeeds":[{"label":{"runs":[{"text":"0.25x"}]},"value":0.25},{"label":{"runs":[{"text":"0.5x"}]},"value":0.5},{"label":{"runs":[{"text":"0.75x"}]},"value":0.75},{"label":{"runs":[{"text":"Normal"}]},"value":1},{"label":{"runs":[{"text":"1.25x"}]},"value":1.25},{"label":{"runs":[{"text":"1.5x"}]},"value":1.5},{"label":{"runs":[{"text":"1.75x"}]},"value":1.75},{"label":{"runs":[{"text":"2x"}]},"value":2}],"androidVariableSpeedTimeoutSecs":0,"enableVariableSpeedOnOtf":true},"decodeQualityConfig":{"maximumVideoDecodeVerticalResolution":2160},"vrConfig":{"allowVr":true,"allowSubtitles":true,"showHqButton":true,"sphericalDirectionLoggingEnabled":true,"enableAndroidVr180MagicWindow":true,"enableAndroidMagicWindowEduOverlay":true,"magicWindowEduOverlayText":"Move device to explore video","magicWindowEduOverlayAnimationUrl":"https://youtube.com/img/vr/magic_window_edu_overlay_animation_v2.webp"},"qoeStatsClientConfig":{"batchedEntriesPeriodMs":"30000"},"androidPlayerStatsConfig":{"usePblForAttestationReporting":false,"usePblForHeartbeatReporting":false,"usePblForPlaybacktrackingReporting":false,"usePblForQoeReporting":true,"changeCpnOnFatalPlaybackError":true},"stickyQualitySelectionConfig":{"stickySelectionType":"DISABLE_STICKY","expirationTimeSinceLastManualVideoQualitySelectionMs":"259200000","expirationTimeSinceLastPlaybackStartMs":"18000000","stickyCeilingOverridesSimpleBitrateCap":true},"adSurveyRequestConfig":{"useGetRequests":true},"retryConfig":{"retryEligibleErrors":["fmt.decode","android.exo.fatal","scripted_player.js.fatal","android.stuck.bufferfull","player.timeout","android.audiotrack"],"retryUnderSameConditionAttempts":1,"retryWithNewSurfaceAttempts":1,"progressiveFallbackOnNonNetworkErrors":true,"l3FallbackOnDrmErrors":true,"retryAfterCacheRemoval":true,"widevineL3EnforcedFallbackOnDrmErrors":true,"exoProxyableFormatFallback":true,"maxPlayerRetriesWhenNetworkUnavailable":2,"retryWithLibvpx":true,"suppressFatalErrorAfterStop":false,"fallbackFromHfrToSfrOnFormatDecodeError":true,"fallbackToSwDecoderOnFormatDecodeError":true},"cmsPathProbeConfig":{"cmsPathProbeDelayMs":7000},"mediaCommonConfig":{"dynamicReadaheadConfig":{"maxReadAheadMediaTimeMs":160000,"minReadAheadMediaTimeMs":15000,"readAheadGrowthRateMs":300,"readAheadWatermarkMarginRatio":0,"minReadAheadWatermarkMarginMs":0,"maxReadAheadWatermarkMarginMs":0,"shouldIncorporateNetworkActiveState":false},"mediaUstreamerRequestConfig":{"enableVideoPlaybackRequest":true,"videoPlaybackUstreamerConfig":"CrQICqcGCAAlMZkqPi1mZmY_NT0Klz9YAWABaAF46AKAAQGgAQGoAQC1AfYo3D_gAQHoAQPwAQH5AQAAAAAAANA_gQIAAAAAAAAYQJACAZgC8AGgAugCuAIAyAIB2gKTARCw6gEYqEYgoJwBKNg2MJh1cIgngAH0A-ABAZgCDMACAdACAuACAegCAoADAogDiCeYAwGoAwOwAwG4AwHAAwHIAwHQAwH4AwGQBAGYBAGgBAGoBAHIBAHQBAHgBADoBAH4BAeABX2IBQGQBQGwBQG4BQHQBQHYBQHgBdAP-AXQD4AGAbgGAcAGAdgGAegGAZAHAfoC6QEtAACCQjUAAJZCQAFIAWUAAIBAaMBwqAHQhgPNAQAAgD_wAQH9AQAAgD-FAgAAgD6NAs3MzD-VAilcjz2YAgG1AgAAgD_AApAByAIB0gIRsP__________AR48RlpcXV7aAgUyMDowMOACeOgC6AL1AilcDz79AgAAAD6AAwGdAwrXIz2gAwHFAwAAoEHIAwHVAwAAekTYAwHlA2JKREDtAzLK8z6IBAGYBAHFBJqZWUDVBAAAgD_wBAHIBQHgBQGYBgGoBgG1Br03hjW9BjMzg0DABwGhCAAAAAAAAPC_qQgAAAAAAADwv4IDAJADAeADkE6wBAG4BAHKBFsKFQiA4gkQmHUYrAIlAAAAACgAMABAARDg1AMY0A8qNgoKdGJfY29zdF81MCAIKQAAAAAAAAAASAFQAV2amZk-ZQAAAD9tAAAAP3UAAAA_eMCpB5IBADABSPAu6AQB8AQB-AQBiAUBkAUBmAUBoAUBqAUBsAUB0AUB2AUB6AUB8AUBiAYBkAYBmAYBqAaAgALABgHIBgGCBwoVAACAPxhkIJBOiAcBwAcByAcAgAgBoAgBuAgBmAkBqQkAAAAAAADwv7EJAAAAAAAA8L_aCSRGOFRNZElaQjNndXUyZllrMDVYUVd5VFBieVFHQ3VPbG5DWkuYCvvbsBiiChz327AY-NuwGPnbsBj627AY-9uwGPzbsBj927AYqAr927AYsAoBwAoB0AoB2AoBgAsBiAsByAsB-AsBoAwBGAEgATIMCIYBEOSP-da2lYUDMgwI8wEQhpfSz7aVhQMyDAiMAxDs55z6tpWFAzIMCIUBEKfQo9u2lYUDMgwI8gEQg7T6x7aVhQMyDAiLAxCxqvvUtpWFAzIMCKABEOWq8Na2lYUDMgwIlgIQ88Gm9raVhQMyDAiKAxDNquSMt5WFAzIMCNUEEPCen862lYUDMgwI1gQQovHgzLaVhQMyDAiLARDqs4zTsJWFAzIMCIwBEJelss6wlYUDMgwI-QEQpdjHzLCVhQMyDAj6ARC63o3VsJWFAzIMCPsBEIfAm8uwlYUDMgwI1wQQ-r6r3rCVhQMyDAjYBBCazLLOsJWFAzoASACQy9OPDgESSwA_093iMEQCICwuhyMTPa69PjpYlvJwBXA0LKUaykeSssWMGo73SKMWAiBeEp65hKQ1_9T-kqxqqKqZ9HeC2xhi42wUrlLYgMOVZRoCZWk=","videoPlaybackPostEmptyBody":false,"isVideoPlaybackRequestIdempotent":true},"predictedReadaheadConfig":{"minReadaheadMs":5000,"maxReadaheadMs":157000},"mediaFetchRetryConfig":{"initialDelayMs":1000,"backoffFactor":1.3,"maximumDelayMs":20000,"jitterFactor":0.1},"mediaFetchMaximumServerErrors":10,"mediaFetchMaximumNetworkErrors":-1,"mediaFetchMaximumErrors":10,"serverReadaheadConfig":{"enable":true,"nextRequestPolicy":{"targetAudioReadaheadMs":120000,"targetVideoReadaheadMs":120000}},"useServerDrivenAbr":false},"playerGestureConfig":{"downAndOutLandscapeAllowed":true,"downAndOutPortraitAllowed":true},"taskCoordinatorConfig":{"prefetchCoordinatorBufferedPositionMillisRelease":5000}},"trackingParams":"CAAQu2kiEwjyo6ra5ZqFAxUuyj8EHR6kAgs=","attestation":{"playerAttestationRenderer":{"challenge":"a=6&a2=1&b=oKBCc2GGAKJ90BNJQRHPQZ88iPc&c=1711760747&d=3&e=aQvGIIdgFDM&c5a=1&c5b=yt_player_ias&hh=4NskSyfeZEC29iBSF7SC5XW9wKLNBRkAXPyaXjUMCs8"}},"videoQualityPromoSupportedRenderers":{"videoQualityPromoRenderer":{"triggerCriteria":{"connectionWhitelist":["WIFI"],"joinLatencySeconds":15,"rebufferTimeSeconds":10,"watchTimeWindowSeconds":180,"refractorySeconds":2592000},"text":{"runs":[{"text":"Experiencing interruptions? "},{"text":"Find out why","bold":true}]},"endpoint":{"clickTrackingParams":"CAQQ6kUiEwjyo6ra5ZqFAxUuyj8EHR6kAgs=","urlEndpoint":{"url":"https://www.google.com/get/videoqualityreport/m/"}},"trackingParams":"CAQQ6kUiEwjyo6ra5ZqFAxUuyj8EHR6kAgs=","closeButton":{"videoQualityPromoCloseRenderer":{"trackingParams":"CAcQ60UiEwjyo6ra5ZqFAxUuyj8EHR6kAgs="}},"snackbar":{"notificationActionRenderer":{"responseText":{"runs":[{"text":"Experiencing interruptions?"}]},"actionButton":{"buttonRenderer":{"text":{"runs":[{"text":"Find out why"}]},"navigationEndpoint":{"clickTrackingParams":"CAYQ8FsiEwjyo6ra5ZqFAxUuyj8EHR6kAgs=","urlEndpoint":{"url":"https://www.google.com/get/videoqualityreport/m/"}},"trackingParams":"CAYQ8FsiEwjyo6ra5ZqFAxUuyj8EHR6kAgs="}},"trackingParams":"CAUQuWoiEwjyo6ra5ZqFAxUuyj8EHR6kAgs="}}}},"overlay":{},"playerSettingsMenuData":{"loggingDirectives":{"trackingParams":"CAMQtc4GIhMI8qOq2uWahQMVLso_BB0epAIL","visibility":{"types":"12"},"enableDisplayloggerExperiment":true}},"adBreakHeartbeatParams":"Q0FBJTNE","frameworkUpdates":{"entityBatchUpdate":{"mutations":[{"entityKey":"Eg0KC2FRdkdJSWRnRkRNIPYBKAE%3D","type":"ENTITY_MUTATION_TYPE_REPLACE","payload":{"offlineabilityEntity":{"key":"Eg0KC2FRdkdJSWRnRkRNIPYBKAE%3D","addToOfflineButtonState":"ADD_TO_OFFLINE_BUTTON_STATE_ENABLED","commandWrapper":{"command":{"innertubeCommand":{"clickTrackingParams":"CAIQ6ewBIhMI8qOq2uWahQMVLso_BB0epAIL","ypcGetOfflineUpsellEndpoint":{"params":"ChPqqN25AQ0KC2FRdkdJSWRnRkRNIgthUXZHSUlkZ0ZETSoVCAkYAVIPCgthUXZHSUlkZ0ZETSAB"}}},"loggingDirectives":{"trackingParams":"CAIQ6ewBIhMI8qOq2uWahQMVLso_BB0epAIL","enableDisplayloggerExperiment":true}},"contentCheckOk":true,"racyCheckOk":true,"loggingDirectives":{"trackingParams":"CAEQxzciEwjyo6ra5ZqFAxUuyj8EHR6kAgs=","visibility":{"types":"4"},"enableDisplayloggerExperiment":true}}}}],"timestamp":{"seconds":"1711760747","nanos":457886713}}}}
	... 19 more

Lavaplayer fails to play Vimeo tracks due to empty "progressive" array, causing NPE

Upon playing a Vimeo track, Lavaplayer downloads a track config from which it extracts request.files.progressive[0].url. However, on some tracks the progressive array is null, resulting in a NullPointerException. It appears that we need to add support for hls or dash.

image

Example url: https://vimeo.com/783006175

Track config url: https://player.vimeo.com/video/783006175/config?autopause=1&byline=0&collections=1&context=Vimeo%5CController%5CClipController.main&default_to_hd=1&h=250a7cefe0&outro=nothing&portrait=0&share=1&speed=1&title=0&watch_trailer=0&s=6ae0e5726574100d746264e851da4ccf6e8bd963_1704285204

Source:

private String loadPlaybackUrl(HttpInterface httpInterface) throws IOException {
JsonBrowser config = loadPlayerConfig(httpInterface);
if (config == null) {
throw new FriendlyException("Track information not present on the page.", SUSPICIOUS, null);
}
String trackConfigUrl = config.get("player").get("config_url").text();
JsonBrowser trackConfig = loadTrackConfig(httpInterface, trackConfigUrl);
return trackConfig.get("request").get("files").get("progressive").index(0).get("url").text();
}

YT livestream error

Description

when you play a YouTube livestream, destroy the player and try to play another livestream, it won't play on v4.
It also happens when you close your bot while playing a stream.
After that, only restarting lavalink or playing another song and skipping to the livestream to start working again.
I had never used lavalink, so I went back to 3.7 and switched to erela.js and the problem won't happen, so I guess it is a v4 problem or a magmastream is messing something up.
I also noticed that if you play a livestream and close the bot it will continue to play it after closed (the bot won't disconnect or anything)

To Reproduce

Steps to reproduce the behavior:

  1. Start playing a livestream from YouTube
  2. use a stop command to delete the player.
  3. use the play command again to play the livestream

Expected behavior

I expected it to play the stream, but it just sits there and won't play anything.

Version info

Client used: magmastream

Output of java -version:

openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)

Lavalink Logs:

2023-07-21T07:08:19.420581574Z  2023-07-21T04:08:19.420-03:00  INFO 1 --- [  XNIO-1 task-2] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://www.youtube.com/watch?v=jfKfPfyJRdk"
2023-07-21T07:08:19.469610449Z  2023-07-21T04:08:19.469-03:00  INFO 1 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track lofi hip hop radio  - beats to relax/study to
2023-07-21T07:08:19.472026676Z  2023-07-21T04:08:19.471-03:00  INFO 1 --- [  XNIO-1 task-2] l.server.io.RequestLoggingFilter         : GET /v4/loadtracks?identifier=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DjfKfPfyJRdk, client=51.81.38.169
2023-07-21T07:08:19.662121940Z  2023-07-21T04:08:19.661-03:00  INFO 1 --- [  XNIO-1 task-2] l.server.io.RequestLoggingFilter         : PATCH /v4/sessions/0guj86u9g6hucykf/players/1119839379947532348?noReplace=false, client=51.81.38.169, payload={"volume":100}
2023-07-21T07:08:19.665614938Z  2023-07-21T04:08:19.665-03:00  INFO 1 --- [  XNIO-1 task-4] l.server.io.RequestLoggingFilter         : PATCH /v4/sessions/0guj86u9g6hucykf/players/1119839379947532348?noReplace=false, client=51.81.38.169, payload={"encodedTrack":"QAAA2QMAM2xvZmkgaGlwIGhvcCByYWRpbyDtoL3ts5ogLSBiZWF0cyB0byByZWxheC9zdHVkeSB0bwAJTG9maSBHaXJsf/////////8AC2pmS2ZQZnlKUmRrAQEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9amZLZlBmeUpSZGsBAD9odHRwczovL2kueXRpbWcuY29tL3ZpL2pmS2ZQZnlKUmRrL21heHJlc2RlZmF1bHQuanBnP3Y9NjQzNTk2NjQAAAd5b3V0dWJlAAAAAAAAAAA="}
2023-07-21T07:08:20.378245951Z  2023-07-21T04:08:20.377-03:00  INFO 1 --- [  XNIO-1 task-4] l.server.io.RequestLoggingFilter         : PATCH /v4/sessions/0guj86u9g6hucykf/players/1119839379947532348?noReplace=false, client=51.81.38.169, payload={"voice":{"token":"06d0ba9ba4bb1691","endpoint":"brazil1570.discord.media:443","sessionId":"6c8988081db59b100a10422d4eef731f"}}
2023-07-21T07:08:20.406897402Z  2023-07-21T04:08:20.378-03:00 ERROR 1 --- [  XNIO-1 task-4] io.undertow.request                      : UT005023: Exception handling request to /v4/sessions/0guj86u9g6hucykf/players/1119839379947532348
2023-07-21T07:08:20.406929262Z  
2023-07-21T07:08:20.406934932Z  jakarta.servlet.ServletException: Request processing failed: java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeMpegStreamAudioTrack$TrackState.access$300(com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeMpegStreamAudioTrack$TrackState)" is null
2023-07-21T07:08:20.406941154Z  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1019) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.406946083Z  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:888) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.406950862Z  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
2023-07-21T07:08:20.406955441Z  at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.406960140Z  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.406965059Z  at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.406969828Z  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.406974607Z  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.406979296Z  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.406984396Z  at lavalink.server.io.ResponseHeaderFilter.doFilterInternal(ResponseHeaderFilter.kt:17) ~[classes!/:4.0.0-beta.1]
2023-07-21T07:08:20.406988974Z  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.406994946Z  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.406999765Z  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407004504Z  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407009212Z  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407014012Z  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407024712Z  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407029601Z  at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407034270Z  at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407039049Z  at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407043758Z  at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407050210Z  at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407054999Z  at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407060078Z  at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407064998Z  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407070037Z  at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407074876Z  at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407079725Z  at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407084464Z  at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407089233Z  at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407094243Z  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407099042Z  at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407103781Z  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407108360Z  at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407115924Z  at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407120603Z  at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407125251Z  at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407130050Z  at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407135451Z  at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407140390Z  at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407145119Z  at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407149738Z  at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
2023-07-21T07:08:20.407154346Z  at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
2023-07-21T07:08:20.407158895Z  at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
2023-07-21T07:08:20.407163524Z  at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
2023-07-21T07:08:20.407168323Z  at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) ~[xnio-api-3.8.8.Final.jar!/:3.8.8.Final]
2023-07-21T07:08:20.407173031Z  at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
2023-07-21T07:08:20.407177670Z  Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeMpegStreamAudioTrack$TrackState.access$300(com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeMpegStreamAudioTrack$TrackState)" is null
2023-07-21T07:08:20.407183231Z  at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeMpegStreamAudioTrack.getPosition(YoutubeMpegStreamAudioTrack.java:80) ~[lavaplayer-17c75f5.jar!/:na]
2023-07-21T07:08:20.407187930Z  at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.getPosition(DelegatedAudioTrack.java:61) ~[lavaplayer-17c75f5.jar!/:na]
2023-07-21T07:08:20.407192538Z  at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.encodeTrack(DefaultAudioPlayerManager.java:264) ~[lavaplayer-17c75f5.jar!/:na]
2023-07-21T07:08:20.407197167Z  at lavalink.server.util.UtilKt.encodeTrack(util.kt:138) ~[classes!/:4.0.0-beta.1]
2023-07-21T07:08:20.407201615Z  at lavalink.server.util.UtilKt.toTrack(util.kt:48) ~[classes!/:4.0.0-beta.1]
2023-07-21T07:08:20.407209049Z  at lavalink.server.util.UtilKt.toPlayer(util.kt:97) ~[classes!/:4.0.0-beta.1]
2023-07-21T07:08:20.407213909Z  at lavalink.server.player.PlayerRestHandler.patchPlayer(PlayerRestHandler.kt:212) ~[classes!/:4.0.0-beta.1]
2023-07-21T07:08:20.407218658Z  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
2023-07-21T07:08:20.407223186Z  at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
2023-07-21T07:08:20.407227564Z  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407232183Z  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407236862Z  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407241621Z  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407246450Z  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407251219Z  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407255958Z  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407260557Z  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407265135Z  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
2023-07-21T07:08:20.407269764Z  ... 46 common frames omitted

Additional context

Add support for Discord authenticated media files

Hello,

I think it can be useful to add support for medial links uploaded on Discord's CDN.

Since the new CDN authentication system, Lavaplayer returns an empty content (even when adding valid authentication parameters):

{ loadType: 'empty', data: null }

Lavaplayer version: 2.1.1.

Track position not respecting time scale DSP

Since lavaplayer now maintained by lavalink team I thought that reopen this issue on this repo is a good idea.

Problem description

Lavalink is a standalone audio sending node based on Lavaplayer and JDA-Audio. Bot developers can play audio using distributed lavalink nodes across different programming languages and bot frameworks.

Lavalink reports a state for each player about every five seconds, containing the current UNIX timestamp when the player update was created and a relative track position. Based on this information, the track's position can be computed. As lavaplayer now has a timescale filter, it is possible to alter the track speed and rate. The position of the track reported by lavaplayer does not respect the actual speed of the track. Calculating the position of the track on the client-side would be possible but would come with a higher error rate because of network latencies, filter jitter (the client does not know the exact time when the filter becomes active), ... (There are some times where the client has to interpolate the position of the track, which corresponds to the time difference between the current host machine time and the time of the last update, which error rate should be ignorable [e.g., errors because of different clock times due to NTP synchronization errors]).

The client state is generated in Lavalink, which you can see at the following: https://github.com/freyacodes/Lavalink/blob/85a54966218094bc06a4f1506003c55523462b04/LavalinkServer/src/main/java/lavalink/server/player/Player.java#L131
There you can see a call to lavaplayer, which requests the current track position.

When using the timescale filter, lavaplayer reports a wrong track position (it uses the position as if the timescale filter has not been applied).

Proposal

I would propose that the code for calculating/tracking the track position should be fitted to report a correct track position.

Additional info

All additional info can be found here: sedmelluq/lavaplayer#667

Issue decoding mp3s with frame size 961

Some MP3s fail to load, their frame length is 961.

For example, the same mp3 is fine when played through browser or Elisa music player.

I can provide mp3 to reproduce.

2023-09-13 18:22:26.886  WARN 1 --- [ader-8-thread-1] c.s.d.l.c.MediaContainerDetection        : Attempting to detect file with container mp3 failed.

java.lang.IndexOutOfBoundsException: Range [4, 4 + 1040) out of bounds for length 961
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) ~[na:na]
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromIndexSize(Unknown Source) ~[na:na]
        at java.base/jdk.internal.util.Preconditions.checkFromIndexSize(Unknown Source) ~[na:na]
        at java.base/java.util.Objects.checkFromIndexSize(Unknown Source) ~[na:na]
        at java.base/java.io.DataInputStream.readFully(Unknown Source) ~[na:na]
        at com.sedmelluq.discord.lavaplayer.container.mp3.Mp3FrameReader.fillFrameBuffer(Mp3FrameReader.java:121) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.mp3.Mp3TrackProvider.initialiseSeeker(Mp3TrackProvider.java:92) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.mp3.Mp3TrackProvider.parseHeaders(Mp3TrackProvider.java:87) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.mp3.Mp3ContainerProbe.probe(Mp3ContainerProbe.java:57) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.MediaContainerDetection.checkContainer(MediaContainerDetection.java:92) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.MediaContainerDetection.detectContainer(MediaContainerDetection.java:77) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.MediaContainerDetection.detectContainer(MediaContainerDetection.java:59) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.local.LocalAudioSourceManager.detectContainerForFile(LocalAudioSourceManager.java:58) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.local.LocalAudioSourceManager.loadItem(LocalAudioSourceManager.java:41) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:412) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$loadItem$0(DefaultAudioPlayerManager.java:175) ~[lavaplayer-2.0.1.jar!/:na]
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
        at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

2023-09-13 18:22:26.891 ERROR 1 --- [ader-8-thread-1] com.bots.shura.audio.AudioLoader         : LavaPlayer could not parse an audio source for some reason

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Unknown file format.
        at com.sedmelluq.discord.lavaplayer.source.ProbingAudioSourceManager.handleLoadResult(ProbingAudioSourceManager.java:35) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.local.LocalAudioSourceManager.loadItem(LocalAudioSourceManager.java:41) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:412) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156) ~[lavaplayer-2.0.1.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$loadItem$0(DefaultAudioPlayerManager.java:175) ~[lavaplayer-2.0.1.jar!/:na]
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
        at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

[v2.1.1] NoSuchMethodError on ByteBuffer when trying to play a track

Versions

  • Lavaplayer v2.1.1
  • JVM 1.8.0_402

Description

Hello,
When trying to play any track, I keep getting NSM on ByteBuffer (see stacktrace) even after mentionning in my gradle file that the source/target compatibility is Java 8

Stacktrace

[LocalAudioTrackExecutor/ERROR]: Error in playback of mLxI-q9Fi0s com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track. at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45) at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:113) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:330) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer; at com.sedmelluq.discord.lavaplayer.container.matroska.format.MutableMatroskaBlock.getNextFrameBuffer(MutableMatroskaBlock.java:56) at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:368) at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:332) at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:317) at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:293) at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:40) at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:284) at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:257) at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:39) at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25) at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:64) at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:51) at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:101)

build.gradle

plugins {
    id 'java'
    id 'application'
    id 'com.github.johnrengelman.shadow' version '8.0.0'
}

application.mainClass = "net.vadamdev.jafarbot.Main"
group 'net.vadamdev.jafarbot'
version '2.4.2'

repositories {
    mavenCentral()

    maven {
        url 'https://jitpack.io'
    }
}

dependencies {
    implementation group: 'net.dv8tion', name: 'JDA', version: '5.0.0-beta.21'
    implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.14'

    implementation group: 'dev.arbjerg', name:'lavaplayer', version:'2.1.1'

    implementation group: 'me.carleslc.Simple-YAML', name: 'Simple-Yaml', version: '1.8.4'
    implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
    implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
    implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1'
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

compileJava.options.encoding = 'UTF-8'

TrackException - This video is not available during duration of a visitor Id

Lavalink 4.0.4
Ipv6 /48 rotation

I have begun noticing issues with a node that experiences temporary spans where all tracks attempting to be played, sending the following track exception event:

TrackException(message=This video is not available, severity=COMMON, cause=com.sedmelluq.discord.lavaplayer.tools.FriendlyException: This video is not available)

Looking into my logs it seems correlated to the lifespan of a visitor ID.

  1. Everything working as intended
  2. Visitor ID refresh
  3. Track exceptions begin appearing
  4. 10 minutes elapse
  5. Visitor ID is refreshed
  6. Working as intended until maybe 6-10 hours later this happens again.

The frequency seems to slowly be increasing.

Common Failure: Video returned by Youtube isn't what was requested.

After working for a good amount of time, my bot now stopped playing youtube links or search requests. I configured logback to debug level and got this log:

120 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSearchProvider - Performing a search with query in the end 11:21:17.501 [JDA Gateway-Worker 1] DEBUG net.dv8tion.jda.internal.requests.WebSocketClient - Sending voice request {"op":4,"d":{"self_deaf":false,"guild_id":947823451253641256,"channel_id":947823451253641260,"self_mute":false}} 11:21:17.914 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSearchProvider - Attempting to parse results from search page 11:21:17.914 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager - Loaded a playlist with identifier ytsearch: in the end using YoutubeAudioSourceManager. addedTrack 11:21:17.914 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.player.AudioPlayer - Firing an event with class TrackStartEvent 11:21:17.915 [lava-daemon-pool-playback-1-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor - Starting to play track eVTXPUF4Oz4 locally with listener com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayer@1826b9ce 11:21:17.915 [lava-daemon-pool-playback-1-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader - Loading track info with payload: {"context":{"thirdParty":{"embedUrl":"https://google.com"},"client":{"screenPixelDensity":1,"androidSdkVersion":30,"screenWidthPoints":1920,"clientName":"ANDROID","screenHeightPoints":1080,"screenDensityFloat":1,"clientScreen":"EMBED","clientVersion":"18.06.35"}},"racyCheckOk":true,"contentCheckOk":true,"videoId":"eVTXPUF4Oz4","params":"CgIQBg","playbackContext":{"contentPlaybackContext":{"signatureTimestamp":"19809"}}} 11:21:17.915 [lava-daemon-pool-playback-1-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAccessTokenTracker - YouTube visitor id was recently updated, not updating again right away. 11:21:18.099 [lava-daemon-pool-playback-1-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor - Common failure for playback of eVTXPUF4Oz4: Video returned by YouTube isn't what was requested 11:21:18.099 [lava-daemon-pool-playback-1-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.player.AudioPlayer - Firing an event with class TrackExceptionEvent 11:21:18.162 [JDA RateLimit-Elastic-Worker 3] DEBUG net.dv8tion.jda.internal.requests.Requester - Received response with following cf-rays: [86cf44b49a2e5b24-VIE] 11:21:18.999 [JDA [0 / 1] AudioWS-ReadThread (guildId: 947823451253641256)] DEBUG net.dv8tion.jda.internal.audio.AudioWebSocket - Using encryption mode xsalsa20_poly1305_lite 11:21:19.031 [JDA [0 / 1] AudioWS-ReadThread (guildId: 947823451253641256)] DEBUG net.dv8tion.jda.internal.audio.AudioWebSocket - Unknown Audio OP code. {"op":18,"d":{"user_id":"238371252014678016","flags":2}} 11:21:19.032 [JDA [0 / 1] AudioWS-ReadThread (guildId: 947823451253641256)] DEBUG net.dv8tion.jda.internal.audio.AudioWebSocket - Unknown Audio OP code. {"op":20,"d":{"user_id":"238371252014678016","platform":0}} 11:21:19.464 [JDA [0 / 1] AudioWS-ReadThread (guildId: 947823451253641256)] DEBUG net.dv8tion.jda.internal.audio.AudioWebSocket - Audio connection has finished connecting! 11:21:19.465 [JDA [0 / 1] AudioConnection Guild: 947823451253641256 Sending Thread] DEBUG com.sedmelluq.discord.lavaplayer.player.AudioPlayer - Firing an event with class TrackEndEvent 11:21:19.532 [JDA Gateway-Worker 1] DEBUG net.dv8tion.jda.internal.requests.WebSocketClient - Sending voice request {"op":4,"d":{"self_deaf":false,"guild_id":"947823451253641256","channel_id":null,"self_mute":false}} 11:21:29.286 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader - Loading track info with payload: {"context":{"thirdParty":{"embedUrl":"https://google.com"},"client":{"screenPixelDensity":1,"androidSdkVersion":30,"screenWidthPoints":1920,"clientName":"ANDROID","screenHeightPoints":1080,"screenDensityFloat":1,"clientScreen":"EMBED","clientVersion":"18.06.35"}},"racyCheckOk":true,"contentCheckOk":true,"videoId":"E_39Fgq9hfk","params":"CgIQBg","playbackContext":{"contentPlaybackContext":{"signatureTimestamp":"19809"}}} 11:21:29.286 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAccessTokenTracker - YouTube visitor id was recently updated, not updating again right away. 11:21:29.384 [lava-daemon-pool-info-loader-2-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager - Common failure for loading item https://www.youtube.com/watch?v=E_39Fgq9hfk: Video returned by YouTube isn't what was requested

Currently im running it on a RaspberryPi4, but the results dont change on my windows machine.

Youtube videos with silence cause read timeout

Description

Queueing a song with a large amount of silence causes read issues.

To Reproduce

Steps to reproduce the behavior:
Queue a song like cdjzVKCZWrA, MahfSwXkD4s, or other "1 hour of silence broken by" videos

Expected behavior

I expected Lavalink to play the whole thing.

Version info

Client used: Red-Lavalink (v3 Lavalink client)

Output of java -version:
Temurin/Adopt Java 11, 13, or 17

Lavalink Logs:
https://gist.githubusercontent.com/Cog-CreatorsBot/15db353c261de4bd4f672968789158b4/raw/a37afcda2a371a944545597e115c8b9902b16b1a/spring.log

https://gist.githubusercontent.com/aikaterna/cf68a80a2a64b8a563597d7195759694/raw/583a874346bb6ed58d2a71c2df967bb09829a06e/gistfile1.txt

Feature Request - Spotify support

Would it be possible to have spotify added as a supported format? I feel like it would be extremely good and useful for lots of people (me included)

How can I set email&password? -> YoutubeAccessTokenTracker

[11:55:18] [lava-daemon-pool-info-loader-2-thread-1/WARN] (YoutubeAccessTokenTracker) YouTube auth tokens can't be retrieved because email and password is not set in YoutubeAudioSourceManager, age restricted videos will throw exceptions. [11:55:19] [lava-daemon-pool-info-loader-2-thread-1/INFO] (YoutubeAccessTokenTracker) Updating YouTube visitor id (current is null).

Unable to play tracks from Niconico

Niconico has completely shut down the old video delivery server (DMC) and completely migrated to the new video delivery system called DMS: https://blog.nicovideo.jp/niconews/205042.html
This has resulted in a change in the API specification, which no longer allows normal playback with lavaplayer.
As a reference, yt-dlp has already added support for DMS. I am not very familiar with java, so if you don't mind, please fix it.

(I used DeepL translator.)

Add support for ALAC.

ALAC is a lossless compression format using the m4a container. It is favored in the Apple ecosystem for lossless compression and is compatible with most popular music players (I do not use Apple computers, but I do store my lossless music in this format rather than FLAC for its compatibility with Apple Music).

It would be good for me if LavaPlayer could support playing this format.

I am not a Java developer and thus am not familiar with the package and testing ecosystem, but I could attempt this work at some point if the maintainers are not interested (it is niche).

No audio is played...

class InternalMusic {
    var playerManager: AudioPlayerManager = DefaultAudioPlayerManager()
    var player: AudioPlayer = playerManager.createPlayer()
    var videoid: String = ""
    fun setVideoID(videoid: String) {
        this.videoid = videoid
    }

    fun init() {
        playerManager.registerSourceManager(YoutubeAudioSourceManager(true, "myemail", "mypassword"))
        AudioSourceManagers.registerRemoteSources(playerManager)
    }
    fun play() {
        playerManager.loadItem(videoid,
        object : AudioLoadResultHandler {
            override fun trackLoaded(track: AudioTrack) {
                player.playTrack(track)
            }

            override fun playlistLoaded(playlist: AudioPlaylist) {
                for (track in playlist.tracks) {
                    player.playTrack(track)
                }
            }

            override fun noMatches() {
                println("No Matches for $videoid")
            }

            override fun loadFailed(throwable: FriendlyException) {
                println("Unable to load $videoid")
            }
        })
    }
    fun stop() { player.stopTrack() }
    fun pause() { player.setPaused(true) }
    fun resume() { player.setPaused(false) }
    fun volume(volume: Int) { player.volume = volume }
}

i call play function using this code:

var soundplayer = InternalMusic()
soundplayer.init()
soundplayer.setVideoID(id)
soundplayer.play()

and output is:

[13:09:00] [lava-daemon-pool-info-loader-2-thread-1/INFO] (YoutubeAccessTokenTracker) Updating YouTube access token (current is null).
[13:09:01] [lava-daemon-pool-info-loader-2-thread-1/INFO] (YoutubeAccessTokenTracker) Updating YouTube access token succeeded, new token is ..., next update will be after 69792 seconds.
[13:09:01] [lava-daemon-pool-info-loader-2-thread-1/INFO] (YoutubeAccessTokenTracker) Updating YouTube visitor id (current is null).
[13:09:02] [lava-daemon-pool-info-loader-2-thread-1/INFO] (YoutubeAccessTokenTracker) Updating YouTube visitor id succeeded, new one is ..., next update will be after 600 seconds.

no audio is played. what am I doing wrong?

Links copied from YouTube Android app fail to read

Url format used:
https://www.youtube.com/live/-RsAZYlqyK4?si=3BxDfv6_LKMi5zbQ
https://www.youtube.com/live/RRb5XV993W0?si=S9wQMrsIWOouWwTR

Traceback received:

2024-01-03 14:38:40.976  INFO 1798 --- [XNIO-1 task-1] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://www.youtube.com/live/-RsAZYlqyK4?si=3BxDfv6_LKMi5zbQ"
2024-01-03 14:38:41.181 ERROR 1798 --- [lava-daemon-pool-info-loader-2-thread-1] lavalink.server.player.AudioLoader       : Load failed

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Unknown file format.
	at com.sedmelluq.discord.lavaplayer.source.ProbingAudioSourceManager.handleLoadResult(ProbingAudioSourceManager.java:34) ~[lavaplayer-1.5.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.loadItem(HttpAudioSourceManager.java:81) ~[lavaplayer-1.5.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:428) ~[lavaplayer-1.5.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:410) ~[lavaplayer-1.5.0.jar!/:na]
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:208) ~[lavaplayer-1.5.0.jar!/:na]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
	Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation: 
  lavaplayer.version: 1.5.0
  os.arch: aarch64
  os.name: Mac OS X
  os.version: 13.6.3
  java.vendor: Eclipse Adoptium
  java.version: 17.0.9
  java.runtime.version: 17.0.9+9
  java.vm.version: 17.0.9+9

Granted, the "real" url for these example tracks works fine, i.e. https://www.youtube.com/watch?v=-RsAZYlqyK4 for the 1st example - I don't believe this url format that I'm reporting is being parsed correctly by lavaplayer.

I am using an older version of Lavalink, a v3 version, and haven't tested this on a v4 version yet.

Invalid status code for access token tv response: 400

I'm running into this error on my Lavalink server. I started by submitting a form post on the Lavalink Discord but was directed here as a possible bug report.

Background:
Developing a Discord bot using the Wavelink library to communicate with my Lavalink server. The bot and Lavalink server are being hosted within the same Ubuntu environment.

Sometimes when autoplay is set to enabled. Lavalink can't find related tracks to the one that was playing.

I'm not sure but I believe it has to do with the initial track, or the search term that was used to play the initial track. I also see in the logs that it fails to update my YouTube access token but there are times when autoplay still works with this error. I don't have MFA enabled on this YouTube account.

Lavalink version: 4.0.3
Wavelink version: 3.2.0

I'm happy to provide any other information.

Lavalink log file:
spring.log

application.yml file:

server: # REST and WS server
  port: 2333
  address: 127.0.0.1
  http2:
    enabled: true # Whether to enable HTTP/2 support
plugins:
#  name: # Name of the plugin
#    some_key: some_value # Some key-value pair for the plugin
#    another_key: another_value
lavalink:
  plugins:
#    - dependency: "com.github.example:example-plugin:1.0.0" # required, the coordinates of your plugin
#      repository: "https://maven.example.com/releases" # optional, defaults to the Lavalink releases repository by default
#      snapshot: false # optional, defaults to false, used to tell Lavalink to use the snapshot repository instead of the release repository
#  pluginsDir: "./plugins" # optional, defaults to "./plugins"
#  defaultPluginRepository: "https://maven.lavalink.dev/releases" # optional, defaults to the Lavalink release repository
#  defaultPluginSnapshotRepository: "https://maven.lavalink.dev/snapshots" # optional, defaults to the Lavalink snapshot repository
  server:
    password: "youshallnotpass124"
    sources:
      youtube: true
      bandcamp: true
      soundcloud: true
      twitch: false
      vimeo: true
      http: true
      local: false
    filters: # All filters are enabled by default
      volume: true
      equalizer: true
      karaoke: true
      timescale: true
      tremolo: true
      vibrato: true
      distortion: true
      rotation: true
      channelMix: true
      lowPass: true
    bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration <= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce pauses.
    frameBufferDurationMs: 5000 # How many milliseconds of audio to keep buffered
    opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.
    resamplingQuality: LOW # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.
    trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.
    useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.
    youtubePlaylistLoadLimit: 6 # Number of pages at 100 each
    playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds
    youtubeSearchEnabled: true
    soundcloudSearchEnabled: true
    gc-warnings: true
    #ratelimit:
      #ipBlocks: ["1.0.0.0/8", "..."] # list of ip blocks
      #excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
      #strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
      #searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
      #retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
    youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.
      email: "<myuser>" # Email of Google account
      password: "<mypass>" # Password of Google account
    #httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked
      #proxyHost: "localhost" # Hostname of the proxy, (ip or domain)
      #proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
      #proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
      #proxyPassword: "" # Password for basic authentication

metrics:
  prometheus:
    enabled: false
    endpoint: /metrics

sentry:
  dsn: ""
  environment: ""
#  tags:
#    some_key: some_value
#    another_key: another_value

logging:
  file:
    path: ./logs/

  level:
    root: INFO
    lavalink: DEBUG
    lavalink.server.io.SocketContext: TRACE

  request:
    enabled: true
    includeClientInfo: true
    includeHeaders: false
    includeQueryString: true
    includePayload: true
    maxPayloadLength: 10000


  logback:
    rollingpolicy:
      max-file-size: 10GB
      max-history: 30

Add more information

Would you please add more information in AudioTrackInfo or AudioPlayList?
AudioPlaylist: authorUrl, authorIconUri, PlaylistUrl
AudioTrackInfo: authorUrl, authorIconUri

YouTube livestream formatted like "youtube.com/live/video_id"

Description

Lavalink doesn't work with YouTube livestream formatted like : "https://www.youtube.com/live/jfKfPfyJRdk" (Load failed).

To Reproduce

Steps to reproduce the behavior:

  1. Go to YouTube mobile application
  2. Watch a livestream (sample video: jfKfPfyJRdk)
  3. Click on Share and copy the link. It will be formatted like: "https://www.youtube.com/live/jfKfPfyJRdk"
  4. Play this song sending the entire URL as "identifier".
  5. See error

Expected behavior

Music starts and works well, like if the URL was formatted like: "https://www.youtube.com/watch?v=jfKfPfyJRdk".

Version info

Client used: 4.0.0-beta.3

Output of java -version:
Java 17 (can not send command lines on Pterodactyl panel)

Lavalink Logs:

2023-09-14T22:55:54.197+02:00  INFO 33 --- [ XNIO-1 task-11] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://www.youtube.com/live/jfKfPfyJRdk"
2023-09-14T22:55:54.267+02:00 ERROR 33 --- [ XNIO-1 task-11] lavalink.server.player.AudioLoader       : Load failed
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Unknown file format.
        at com.sedmelluq.discord.lavaplayer.source.ProbingAudioSourceManager.handleLoadResult(ProbingAudioSourceManager.java:35) ~[lavaplayer-2.0.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.loadItem(HttpAudioSourceManager.java:82) ~[lavaplayer-2.0.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:403) ~[lavaplayer-2.0.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:385) ~[lavaplayer-2.0.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:150) ~[lavaplayer-2.0.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager.loadItemSync(AudioPlayerManager.java:86) ~[lavaplayer-2.0.0.jar!/:na]
        at lavalink.server.player.AudioLoader.load(AudioLoader.kt:56) ~[classes!/:4.0.0-beta.3]
        at lavalink.server.player.AudioLoaderRestHandler.loadTracks(AudioLoaderRestHandler.kt:56) ~[classes!/:4.0.0-beta.3]
        at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at lavalink.server.io.ResponseHeaderFilter.doFilterInternal(ResponseHeaderFilter.kt:17) ~[classes!/:4.0.0-beta.3]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.9.jar!/:6.0.9]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
        at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) ~[xnio-api-3.8.8.Final.jar!/:3.8.8.Final]
        at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

Additional context

Lavalink/player wont play yt track on ver 3.7.8

Description

wont play youtube track

To Reproduce

Steps to reproduce the behavior:
Play any yt video in discord bot command, then it happens:

2023-08-09 13:07:38.595 ERROR 2744 --- [ader-2-thread-1] c.s.d.l.p.DefaultAudioPlayerManager      : Error in loading item https://www.youtube.com/watch?v=EYACy7jELw4

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Loading information for a YouTube track failed.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:44) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:240) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:252) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:248) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:101) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:66) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:44) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:216) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:147) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:428) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:410) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:208) ~[lavaplayer-1.5.0.jar!/:na]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
        Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation:
  lavaplayer.version: 1.5.0
  os.arch: amd64
  os.name: Windows 10
  os.version: 10.0
  java.vendor: Oracle Corporation
  java.version: 17.0.7
  java.runtime.version: 17.0.7+8-LTS-jvmci-22.3-b15
  java.vm.version: 17.0.7+8-LTS-jvmci-22.3-b15
Caused by: java.lang.RuntimeException: java.io.IOException: Invalid status code for youtube embed video id: 500
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.toRuntimeException(ExceptionTools.java:66) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:38) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:228) ~[lavaplayer-1.5.0.jar!/:na]
        ... 14 common frames omitted
Caused by: java.io.IOException: Invalid status code for youtube embed video id: 500
        at com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools.assertSuccessWithContent(HttpClientTools.java:157) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.fetchScript(DefaultYoutubeTrackDetailsLoader.java:283) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadTrackInfoFromInnertube(DefaultYoutubeTrackDetailsLoader.java:202) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.load(DefaultYoutubeTrackDetailsLoader.java:48) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:36) ~[lavaplayer-1.5.0.jar!/:na]
        ... 15 common frames omitted

2023-08-09 13:07:38.597 ERROR 2744 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Load failed

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Loading information for a YouTube track failed.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:44) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:240) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:252) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:248) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:101) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:66) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:44) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:216) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:147) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:428) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:410) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:208) ~[lavaplayer-1.5.0.jar!/:na]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
        Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation:
  lavaplayer.version: 1.5.0
  os.arch: amd64
  os.name: Windows 10
  os.version: 10.0
  java.vendor: Oracle Corporation
  java.version: 17.0.7
  java.runtime.version: 17.0.7+8-LTS-jvmci-22.3-b15
  java.vm.version: 17.0.7+8-LTS-jvmci-22.3-b15
Caused by: java.lang.RuntimeException: java.io.IOException: Invalid status code for youtube embed video id: 500
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.toRuntimeException(ExceptionTools.java:66) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:38) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:228) ~[lavaplayer-1.5.0.jar!/:na]
        ... 14 common frames omitted
Caused by: java.io.IOException: Invalid status code for youtube embed video id: 500
        at com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools.assertSuccessWithContent(HttpClientTools.java:157) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.fetchScript(DefaultYoutubeTrackDetailsLoader.java:283) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadTrackInfoFromInnertube(DefaultYoutubeTrackDetailsLoader.java:202) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.load(DefaultYoutubeTrackDetailsLoader.java:48) ~[lavaplayer-1.5.0.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:36) ~[lavaplayer-1.5.0.jar!/:na]
        ... 15 common frames omitted

Expected behavior

Lavalink cant play yt link.

Version info

Client used: and 3.7.8

Output of java -version:

java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment GraalVM EE 22.3.2 (build 17.0.7+8-LTS-jvmci-22.3-b15)
Java HotSpot(TM) 64-Bit Server VM GraalVM EE 22.3.2 (build 17.0.7+8-LTS-jvmci-22.3-b15, mixed mode, sharing)

Lavalink Logs:
spring.log

Getting Required Library Not Found error on Windows 10

Hello- I am not sure if you can help me with this issue but I am using lavaplayer in a Minecraft mod I am making, and I am currently trying to port my mod from Fabric to Forge. It works fine in Fabric, but for some reason in Forge whenever I try to use it it fails to load a native library. I've attached my error log. All I've noticed is that it is not successfully copying the necessary native files to my system's tmp directory, I am not sure why however. I should note this log I've attached was generated when I was using an older version of LavaPlayer, specifically another fork, but this exact error still occurs with this specific updated version.
log.txt

Problem appeared again: Video returned by YouTube isn't what was requested

So this had already been fixed in 727959e-SNAPSHOT

but it appeared again, any solutions? All youtube tracks fail.

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Video returned by YouTube isn't what was requested
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.load(DefaultYoutubeTrackDetailsLoader.java:59)
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:36)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:230)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:254)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:250)
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:103)
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:68)
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:46)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:218)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:149)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:412)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$loadItem$0(DefaultAudioPlayerManager.java:175)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: {"responseContext":{"serviceTrackingParams":[{"service":"GFEEDBACK","params":[{"key":"ipcc","value":"0"},{"key":"is_viewed_live","value":"False"},{"key":"is_alc_surface","value":"false"},{"key":"logged_in","value":"0"},{"key":"e","value":"23858058,23888717,23946420,23966208,23983296,23998056,24004644,24036947,24077241,24078649,24080738,24117491,24120820,24135310,24135943,24143331,24166867,24181174,24187377,24230811,24232551,24241378,24265964,24267186,24290971,24299875,24377598,2439798

I have this problem with lavaplayer

Stacktrace:
[19:02:11] [lava-daemon-pool-info-loader-2-thread-1/WARN]: Failure loading public suffix list from default resource
java.io.FileNotFoundException: JAR entry mozilla/public-suffix-list.txt not found in /home/crafthost_serwery/svr98059/plugins/sigma-bot-1.0-SNAPSHOT-shaded.jar
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:143) ~[?:1.8.0_333]
at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:172) ~[?:1.8.0_333]
at java.net.URL.openStream(URL.java:1092) ~[?:1.8.0_333]
at org.apache.http.conn.util.PublicSuffixMatcherLoader.load(PublicSuffixMatcherLoader.java:61) ~[?:?]
at org.apache.http.conn.util.PublicSuffixMatcherLoader.getDefault(PublicSuffixMatcherLoader.java:89) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.http.ExtendedHttpClientBuilder.createConnectionSocketFactory(ExtendedHttpClientBuilder.java:101) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.http.ExtendedHttpClientBuilder.createConnectionManager(ExtendedHttpClientBuilder.java:95) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.http.ExtendedHttpClientBuilder.build(ExtendedHttpClientBuilder.java:57) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.io.AbstractHttpInterfaceManager.getSharedClient(AbstractHttpInterfaceManager.java:84) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.io.ThreadLocalHttpInterfaceManager.getInterface(ThreadLocalHttpInterfaceManager.java:34) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.getHttpInterface(YoutubeAudioSourceManager.java:188) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:229) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:254) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:250) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:103) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:68) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:46) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:218) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:149) ~[?:?]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:406) ~[?:?]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:388) ~[?:?]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:183) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_333]
at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.executeQueue(OrderedExecutor.java:90) [sigma-bot-1.0-SNAPSHOT-shaded.jar:?]
at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.run(OrderedExecutor.java:79) [sigma-bot-1.0-SNAPSHOT-shaded.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_333]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_333]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_333]
[19:02:11] [lava-daemon-pool-info-loader-2-thread-1/WARN]: Failure loading public suffix list from default resource
java.io.FileNotFoundException: JAR entry mozilla/public-suffix-list.txt not found in /home/crafthost_serwery/svr98059/plugins/sigma-bot-1.0-SNAPSHOT-shaded.jar
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:143) ~[?:1.8.0_333]
at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:172) ~[?:1.8.0_333]
at java.net.URL.openStream(URL.java:1092) ~[?:1.8.0_333]
at org.apache.http.conn.util.PublicSuffixMatcherLoader.load(PublicSuffixMatcherLoader.java:61) ~[?:?]
at org.apache.http.conn.util.PublicSuffixMatcherLoader.getDefault(PublicSuffixMatcherLoader.java:89) ~[?:?]
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:949) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.http.ExtendedHttpClientBuilder.build(ExtendedHttpClientBuilder.java:58) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.io.AbstractHttpInterfaceManager.getSharedClient(AbstractHttpInterfaceManager.java:84) ~[?:?]
at com.sedmelluq.discord.lavaplayer.tools.io.ThreadLocalHttpInterfaceManager.getInterface(ThreadLocalHttpInterfaceManager.java:34) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.getHttpInterface(YoutubeAudioSourceManager.java:188) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:229) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:254) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:250) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:103) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:68) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:46) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:218) ~[?:?]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:149) ~[?:?]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:406) ~[?:?]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:388) ~[?:?]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:183) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_333]
at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.executeQueue(OrderedExecutor.java:90) [sigma-bot-1.0-SNAPSHOT-shaded.jar:?]
at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.run(OrderedExecutor.java:79) [sigma-bot-1.0-SNAPSHOT-shaded.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_333]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_333]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_333]
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: Exception in thread "lava-daemon-pool-playback-1-thread-1"
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.format.MutableMatroskaBlock.getNextFrameBuffer(MutableMatroskaBlock.java:56)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:368)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:332)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:317)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:293)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:40)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:274)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:247)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:39)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:83)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStaticWithRetry(YoutubeAudioTrack.java:65)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:52)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:101)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:324)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[19:02:12] [lava-daemon-pool-playback-1-thread-1/WARN]: at java.lang.Thread.run(Thread.java:750)

Any one know how can I fix this?

YouTube auth tokens can't be retrieved

Lavaplayer stopped working for me. I'm using version 2.1.1.

After restarting my application and trying to play the first track I notice following logs:

[lava-daemon-pool-info-loader-2-thread-1] WARN com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAccessTokenTracker - YouTube auth tokens can't be retrieved because email and password is not set in YoutubeAudioSourceManager, age restricted videos will throw exceptions.
[lava-daemon-pool-info-loader-2-thread-1] INFO com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAccessTokenTracker - Updating YouTube visitor id (current is null).
[lava-daemon-pool-info-loader-2-thread-1] INFO com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAccessTokenTracker - Updating YouTube visitor id succeeded, new one is <redacted>, next update will be after 600 seconds.

Following this my AudioLoadResultHandler runs the function loadFailed(FriendlyException exception). Unfortunately I do not log the exception. I will try to provide more info when I got time.

This might be related to #90 but not sure.

Bot doesn't work anymore (Invalid status code for search response: 400)

Using Discord4J with lavaplayer. My bot randomly stopped working yesterday, and I'm not sure what's wrong. Here is the error displayed:

[lava-daemon-pool-info-loader-2-thread-1] ERROR com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager - Error in loading item ytsearch:test song
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when looking up the track
at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.dispatchItemLoadFailure(DefaultAudioPlayerManager.java:205)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:164)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$loadItem$0(DefaultAudioPlayerManager.java:175)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.RuntimeException: java.io.IOException: Invalid status code for search response: 400
at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:59)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSearchProvider.loadSearchResult(YoutubeSearchProvider.java:71)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.search(YoutubeAudioSourceManager.java:284)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.search(YoutubeAudioSourceManager.java:250)
at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:39)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:218)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:149)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:412)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156)
... 5 more
Caused by: java.io.IOException: Invalid status code for search response: 400
at com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools.assertSuccessWithContent(HttpClientTools.java:154)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSearchProvider.loadSearchResult(YoutubeSearchProvider.java:63)
... 13 more

Youtube Visitor ID was recently updated, not updating again right away

I was using lavaplayer for my own discord bot to play youtube into my server and when I put a valid youtube link it started playing the track, after some time it suddenly stopped playing the track and in the console started spamming this message:

DEBUG com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAccessTokenTracker -- YouTube visitor id was recently updated, not updating again right away.

Sometimes when i provide a valid link it response back with this message without playing anything:
DEBUG com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor -- Common failure for playback of mvkcyB_lve0: Video returned by YouTube isn't what was requested

Issue decoding AAC streams

Hello, I have encountered the following problem with several AAC streams:

ERROR com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor - Error in playback of https://streams.example.com
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when decoding the track.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:292)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:247)
        at com.sedmelluq.discord.lavaplayer.container.adts.AdtsAudioTrack.process(AdtsAudioTrack.java:36)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioTrack.process(HttpAudioTrack.java:54)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:101)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:330)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IllegalStateException: Error from decoder 16388
        at com.sedmelluq.discord.lavaplayer.natives.aac.AacDecoder.decode(AacDecoder.java:185)
        at com.sedmelluq.discord.lavaplayer.container.adts.AdtsStreamProvider.decodeAndSend(AdtsStreamProvider.java:111)
        at com.sedmelluq.discord.lavaplayer.container.adts.AdtsStreamProvider.provideFrames(AdtsStreamProvider.java:82)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:274)
        ... 9 more

This never happens immediately, but after about half an hour.

Error when reproduce Youtube

Hello I'm getting some problem on the latest version of lava player 2.0.0 I tried 1.5.0 with the same problem:


[20:22:25] [ERROR] [LocalAudioTrackExecutor]: Error in playback of IWrZpP24H8I
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:117)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:321)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
        at com.sedmelluq.discord.lavaplayer.container.matroska.format.MutableMatroskaBlock.getNextFrameBuffer(MutableMatroskaBlock.java:56)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:372)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:336)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:321)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:297)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:40)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:276)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:250)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:63)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:105)
        ... 4 common frames omitted
Exception in thread "lava-daemon-pool-playback-1-thread-2" java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
        at com.sedmelluq.discord.lavaplayer.container.matroska.format.MutableMatroskaBlock.getNextFrameBuffer(MutableMatroskaBlock.java:56)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:372)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:336)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:321)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:297)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:40)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:276)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:250)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:63)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:105)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:321)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

[20:18:49] [WARN] [YoutubeAccessTokenTracker]: YouTube auth tokens can't be retrieved because email and password is not set in YoutubeAudioSourceManager, age restricted videos will throw exceptions.
[20:18:50] [INFO] [YoutubeAccessTokenTracker]: Updating YouTube visitor id (current is null).
[20:18:50] [INFO] [YoutubeAccessTokenTracker]: Updating YouTube visitor id succeeded, new one is CgtDU3FjVmg2MnNQcyiqr9qmBjoKIJm604ek9aXrZA%3D%3D, next update will be after 600 seconds.
[20:18:50] [ERROR] [LocalAudioTrackExecutor]: Error in playback of jWNXYYVHeJI
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:117)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:321)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
        at com.sedmelluq.discord.lavaplayer.container.matroska.format.MutableMatroskaBlock.getNextFrameBuffer(MutableMatroskaBlock.java:56)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:372)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:336)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:321)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:297)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:40)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:276)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:250)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:63)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:105)
        ... 4 common frames omitted
Exception in thread "lava-daemon-pool-playback-1-thread-1" java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
        at com.sedmelluq.discord.lavaplayer.container.matroska.format.MutableMatroskaBlock.getNextFrameBuffer(MutableMatroskaBlock.java:56)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:372)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:336)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:321)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:297)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:40)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:276)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:250)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:63)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:105)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:321)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
IWrZpP24H8I

Someone have this problem?

Thanks in advice.

YouTube streams and videos longer than 6 hours stop playing

Versions

  • Lavalink v4.0..4
  • JVM v17.0.9
  • Lavaplayer v2.1.1

Description

When playing a YouTube stream / video that has a duration of 6 hours or more, a "TrackEndEvent" with a generic "finished" event is emitted, with no errors present in the logs

I have done tests using both a stream as well as a regular video that has a duration of 10 hours, both produce the exact same outcome

Steps to Reproduce

Below is a list of steps I have done to reproduce this issue, demonstrating that the stream / video ends at exactly 6 hours after initially playing

  1. Play a YouTube stream that is guaranteed to run for more than 6 hours, HERE is the stream used for the test
  2. Keep the stream running for at least 6 hours

Log Output and Assumptions

Output

HERE is a gobin containing the log of the test, I cut out most of it to be able to store it because the entire log output was too large

Assumptions

I believe this is because of a query parameter called "expire" present in the google video link found on line 87 in the gobin link (i redacted the host ip address from the link)

The value of this query parameter is a unix timestamp in seconds. After parsing the timestamp the time given is (Thursday, March 21, 2024 8:57:23 PM EDT) which is consistent with the log output

The "TrackStartEvent" is logged on line 84 at (2024-03-21T14:57:22.320-04:00)
The "TrackEndEvent" is logged on line 109 at (2024-03-21T20:57:27.379-04:00)

OGG track probing appears to fail if a thumbnail (video stream) is present

When probing a file with an OGG container, if a video stream is present (typically artwork), the file fails to be resolved with Lavaplayer throwing an exception stating "Unsupported track in OGG stream".

Caused by: java.lang.IllegalStateException: Unsupported track in OGG stream.
    at com.sedmelluq.discord.lavaplayer.container.ogg.OggTrackLoader.detectCodec(OggTrackLoader.java:60)
    at com.sedmelluq.discord.lavaplayer.container.ogg.OggTrackLoader.loadTrackBlueprint(OggTrackLoader.java:31)
    at com.sedmelluq.discord.lavaplayer.container.ogg.OggAudioTrack.process(OggAudioTrack.java:37)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.