sedmelluq / lavaplayer Goto Github PK
View Code? Open in Web Editor NEWAudio player library for Discord
License: Apache License 2.0
Audio player library for Discord
License: Apache License 2.0
Hi. An error has been occurred when loading audio from Nicovideo (www.nicovideo.jp).
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Unknown file format. at com.sedmelluq.discord.lavaplayer.source.ProbingAudioSourceManager.handleLoadResult(ProbingAudioSourceManager.java:21) at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.loadItem(HttpAudioSourceManager.java:65) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:429) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:415) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:219) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.executeQueue(OrderedExecutor.java:98) at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.run(OrderedExecutor.java:87) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
I've tried everything, restarting, trying links AND search terms, different songs, youtube AND soundcloud, but nothing seems to work,
Hello,
I'm encountering an issue with running the bot on a RPi3 as a JAR. It connects fine but once a track is queued for playback it errors out on missing dependencies:
[18:11:24] [Info] [JDA]: Login Successful! [18:11:25] [Info] [JDASocket]: Connected to WebSocket [18:11:25] [Info] [JDA]: Finished Loading! [18:11:35] [Info] [JDAAudioManager]: Audio System successfully setup! Exception in thread "lava-daemon-pool-playback-1-thread-1" java.lang.UnsatisfiedLinkError: Required library at /natives/linux-arm/libconnector.so was not found at com.sedmelluq.discord.lavaplayer.natives.NativeLibLoader.extractLibrary(NativeLibLoader.java:93) at com.sedmelluq.discord.lavaplayer.natives.NativeLibLoader.load(NativeLibLoader.java:77) at com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader.loadConnectorLibrary(ConnectorNativeLibLoader.java:17) at com.sedmelluq.discord.lavaplayer.natives.vorbis.VorbisDecoderLibrary.getInstance(VorbisDecoderLibrary.java:13) at com.sedmelluq.discord.lavaplayer.natives.vorbis.VorbisDecoder.<init>(VorbisDecoder.java:19) at com.sedmelluq.discord.lavaplayer.container.ogg.OggVorbisTrackProvider.<init>(OggVorbisTrackProvider.java:33) at com.sedmelluq.discord.lavaplayer.container.ogg.OggTrackLoader.chooseTrackFromIdentifier(OggTrackLoader.java:40) at com.sedmelluq.discord.lavaplayer.container.ogg.OggTrackLoader.loadTrack(OggTrackLoader.java:31) at com.sedmelluq.discord.lavaplayer.container.ogg.OggAudioTrack.processTrackLoop(OggAudioTrack.java:50) at com.sedmelluq.discord.lavaplayer.container.ogg.OggAudioTrack.lambda$process$0(OggAudioTrack.java:42) at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:248) at com.sedmelluq.discord.lavaplayer.container.ogg.OggAudioTrack.process(OggAudioTrack.java:40) at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:27) at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioTrack.process(HttpAudioTrack.java:51) at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:90) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
I used maven to built this bot and the same JAR functions fine on Windows systems.
It doesn't wanna play private links from Soundcloud
Example: https://soundcloud.com/aiaclear/stalker-kalide-somebody-new/s-9Ux9V
I get this when I try to play something:
Exception in thread "lava-daemon-pool-playback-1-thread-1" java.lang.UnsatisfiedLinkError: Required library at /natives/linux-arm/libconnector.so was not found
at com.sedmelluq.discord.lavaplayer.natives.NativeLibLoader.extractLibrary(NativeLibLoader.java:93)
at com.sedmelluq.discord.lavaplayer.natives.NativeLibLoader.load(NativeLibLoader.java:77)
at com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader.loadConnectorLibrary(ConnectorNativeLibLoader.java:17)
at com.sedmelluq.discord.lavaplayer.natives.aac.AacDecoderLibrary.getInstance(AacDecoderLibrary.java:14)
at com.sedmelluq.discord.lavaplayer.natives.aac.AacDecoder.<init>(AacDecoder.java:28)
at com.sedmelluq.discord.lavaplayer.container.mpeg.MpegAacTrackConsumer.<init>(MpegAacTrackConsumer.java:38)
at com.sedmelluq.discord.lavaplayer.container.mpeg.MpegAudioTrack.selectAudioTrack(MpegAudioTrack.java:86)
at com.sedmelluq.discord.lavaplayer.container.mpeg.MpegAudioTrack.loadAudioTrack(MpegAudioTrack.java:63)
at com.sedmelluq.discord.lavaplayer.container.mpeg.MpegAudioTrack.process(MpegAudioTrack.java:42)
at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:27)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:77)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:67)
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:90)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager$$Lambda$51/20864022.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Got this error and its preventing the bot from running, the method is in there, and without any errors
Exception in thread "main" java.lang.NoSuchMethodError: com.sedmelluq.discord.lavaplayer.tools.ExecutorTools.createEagerlyScalingExecutor(IIJLjava/lang/String;)Ljava/util/concurrent/ExecutorService;
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.(DefaultAudioPlayerManager.java:91)
at dAndroid.dAndroid2.(dAndroid2.java:335)
at dAndroid.dAndroid2.main(dAndroid2.java:51)
Hello Sedmelluq,
if a track is ending the player give us an InterruptedException. Discord make an update can you please update the player.
Full Exception:
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1302)
at java.util.concurrent.Semaphore.acquire(Semaphore.java:312)
at net.dv8tion.jda.core.requests.WebSocketClient.queueAudioDisconnect(WebSocketClient.java:1115)
at net.dv8tion.jda.core.audio.AudioWebSocket.close(AudioWebSocket.java:450)
at net.dv8tion.jda.core.audio.AudioConnection.close(AudioConnection.java:226)
at net.dv8tion.jda.core.managers.impl.AudioManagerImpl.closeAudioConnection(AudioManagerImpl.java:139)
at net.dv8tion.jda.core.managers.impl.AudioManagerImpl.closeAudioConnection(AudioManagerImpl.java:130)
at audioManager.TrackManager.onTrackEnd(TrackManager.java:79)
at com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter.onEvent(AudioEventAdapter.java:70)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.dispatchEvent(AudioPlayer.java:295)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.handleTerminator(AudioPlayer.java:217)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provideDirectly(AudioPlayer.java:197)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provide(AudioPlayer.java:167)
at com.sedmelluq.discord.lavaplayer.track.playback.AudioFrameProviderTools.delegateToTimedProvide(AudioFrameProviderTools.java:18)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provide(AudioPlayer.java:162)
at audioManager.PlayerSendHandler.canProvide(PlayerSendHandler.java:18)
at net.dv8tion.jda.core.audio.AudioConnection$PacketProvider.getNextPacket(AudioConnection.java:607)
at net.dv8tion.jda.core.audio.factory.DefaultSendSystem.lambda$start$61(DefaultSendSystem.java:57)
at java.lang.Thread.run(Thread.java:748)
Sorry for my bad english i am german.
~Endergame15
Hello,
I've been experiencing SocketTimeouts when playing the Monster cat 24/7 stream. When I first issue the play command, the bot will play the stream normally, but anywhere from 15mins to 1hour, Lavalink will stop playing out of nowhere and the following exception will be raised: https://sentry.io/share/issue/3232313230322e333536343935383737/
This doesn't happen when playing long videos from youtube, so it seems to be an issue related to twitch.tv.
I'm running lavalink (lavaplayer 1.2.43, lavalink 1.1) as a systemd unit service, on an ubuntu 16.04 box. Neither my machine or network are being rammed, for now this machine is only playing one song at a time.
Java information (default-jre):
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
If it matters, lavalink is running with root privileges. I am using eris-lavalink as a client.
Is this normal behavior? Am I supposed to handle this somehow?
erros.log:
[11:27:36] [lava-daemon-pool-info-loader-2-thread-1] [AudioLoader] Load failed com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Loading Twitch channel information failed. at com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager.fetchStreamChannelInfo(TwitchStreamAudioSourceManager.java:146) at com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager.loadItem(TwitchStreamAudioSourceManager.java:59) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:429) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:415) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:219) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 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.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) at sun.security.ssl.InputRecord.read(InputRecord.java:503) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930) at sun.security.ssl.AppInputStream.read(AppInputStream.java:105) at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139) at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155) at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261) at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165) at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface.execute(HttpInterface.java:60) at com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools.fetchResponseAsJson(HttpClientTools.java:286) at com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager.fetchStreamChannelInfo(TwitchStreamAudioSourceManager.java:144) ... 8 common frames omitted [17:46:06] [lava-daemon-pool-info-loader-2-thread-1] [AudioLoader] Load failed com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Loading Twitch channel information failed. at com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager.fetchStreamChannelInfo(TwitchStreamAudioSourceManager.java:146) at com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager.loadItem(TwitchStreamAudioSourceManager.java:59) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:429) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:415) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:219) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 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.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) at sun.security.ssl.InputRecord.read(InputRecord.java:503) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930) at sun.security.ssl.AppInputStream.read(AppInputStream.java:105) at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139) at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155) at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261) at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165) at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface.execute(HttpInterface.java:60) at com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools.fetchResponseAsJson(HttpClientTools.java:286) at com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager.fetchStreamChannelInfo(TwitchStreamAudioSourceManager.java:144) ... 8 common frames omitted
I can run tests and provide more information if needed.
What is the best way (if any) to seek tracks that Lavaplayer determines to not be seekable? I have some tracks that I queue and are local (queued directly from a link). They are encoded using opusenc
and are correctly formatted (48K, 2 channel, VBR). They do have the correct metadata and Lavaplayer recognizes the ogg
container format. However, the duration is set to Long.MAX_VALUE
making seeking impossible on these tracks.
I assume it's because the OggOpusTrackStream
in Lavaplayer returns an unsupported operation exception for the seekToTimecode
method by default.
Is there a better way to encode these tracks on my end (MP3 and the likes work fine), or does something like GreedyInputStream
have to be used to override and seek into tracks until the buffer is invalid or throws an EOF?
Thanks!
Hello,
I see from the description that the player can play .aac files, which is fantastic, but for some reason http://ckpk.streamon.fm:8000/CKPK-192k.aac does not seem to work. Is there anything that can be done to make it compatible?
Thank you.
This is temporarily fixed by restarting however it quickly breaks again (could be do to with volume of requests).
Version: 1.2.42
I am thinking about making a Discord bot.
Does it support mpga stream in mono, 8000Hz, 8kb/s?
Example: https://www.liveatc.net/play/klsv.pls
If not, is that planned?
I'm using https://github.com/Frederikam/FredBoat to play Youtube in a Discord chat, and it'd be nice to have some normalization, so one doesn't have to constantly change the volume
Hey, I'm having troubles making loadItem respond to me... It just skips the whole function.
URLs which contain a -
(hyphen) or _
(underscore) throw an exception:
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Not a valid URL.
at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.detectContainerWithClient(HttpAudioSourceManager.java:106)
at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.detectContainer(HttpAudioSourceManager.java:83)
at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.loadItem(HttpAudioSourceManager.java:62)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:357)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:343)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$createItemLoader$0(DefaultAudioPlayerManager.java:165)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.executeQueue(OrderedExecutor.java:98)
at com.sedmelluq.discord.lavaplayer.tools.OrderedExecutor$ChannelRunnable.run(OrderedExecutor.java:87)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.URISyntaxException: Illegal character in query at index 34: https://www.youtube.com/watch?v=ZI\_zlkGN46Y
at java.net.URI$Parser.fail(URI.java:2848)
at java.net.URI$Parser.checkChars(URI.java:3021)
at java.net.URI$Parser.parseHierarchical(URI.java:3111)
at java.net.URI$Parser.parse(URI.java:3053)
at java.net.URI.<init>(URI.java:588)
at com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager.detectContainerWithClient(HttpAudioSourceManager.java:92)
... 11 more```
Don't know if this is temporary, but this exception keeps on repeating itself. At first I thought it was my code going wrong, however I tested using your example and it appears that it errored anyways (even though a couple of hours ago it was working perfectly)
When playing locally stored files i get the following error:
Stacktrace:
http://pastebin.com/DqLsr3pC
I am compiling and running on Mac OS X.
build.gradle:
repositories {
[...]
jcenter()
}
dependencies {
[...]
compile 'com.sedmelluq:lavaplayer:1.1.37'
}
The files are valid and can be played with other players.
I have my test bot connected to two guilds. When i kick it of one guild the player will "stop" playing in the other guild. It is not really stopping the song, but not making any sound, like it was muted. By pausing and unpausing the bot again i can hear sound again. Is there anything i can do against that?
(My lavaplayer and the jda are up-to-date).
Thank you. ๐
I'm attempting to use lavaplayer with JDA for a Discord bot and I'm running into the following exception:
java.lang.UnsatisfiedLinkError: /tmp/lava-jni-natives/1489710936108/libconnector.so: /lib64/libm.so.6: version 'GLIBC_2.15' not found (required by /tmp/lava-jni-natives/1489710936108/libconnector.so)
I think it's telling me that the libconnector.so on the server was compiled against the wrong GLIBC version, but I'm walking through the code in the repo and it's not clear to me where it's actually trying to pull libconnector.so from. It seems to expect the server to have its own preexisting copy, I suppose? I guess this is more of a question of how the library actually works than a problem with it.
The server in question is a virtual one that I rent, so I don't have full control over it. I pointed the libconnector.so temp directory to a place I could access and listed its members with readelf and I'm finding lots of version markers for 2.2.5, which tells me something is outdated. If it really is a server problem, let me know so I can bring it up with my host.
Can you add this? If so thanks.
There is no .index/nexus-maven-repository-index.properties file. Because of that, the repository can't be updated and LavaPlayer not used.
Stacktrace from IntelliJ (2016.3.2):
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.io.FileNotFoundException: Resource nexus-maven-repository-index.properties does not exist
at org.jetbrains.idea.maven.server.Maven3ServerIndexerImpl$2.run(Maven3ServerIndexerImpl.java:204)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedderImpl.executeWithMavenSession(Maven3ServerEmbedderImpl.java:621)
at org.jetbrains.idea.maven.server.Maven3ServerIndexerImpl.updateIndex(Maven3ServerIndexerImpl.java:170)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
I already asked if this is possible. Since it is not i am opening this Issue.
It would be great to play audio from a byte[] or an InputStream of an audio file like *.mp3
Trying to compile this in an ARM based devices such as Raspberry Pi 3 results in failure, particularly the native libraries in the "natives" folder.
Browsing the source code of build.gradle and natives/build.gradle indicates that it only supports x86 & x86-64 for Linux.
Hello, I want to learn how to use your library for normal playback (as a regular media player). If so, how?
I'm having trouble playing some YouTube videos like this one:
https://www.youtube.com/watch?v=oTWv63RyLP8
I'm using lavaplayer 1.2.9.
Stacktrace:
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Unable to play this YouTube track.
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.loadTrackFormats(YoutubeAudioTrack.java:127)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.loadBestFormatWithUrl(YoutubeAudioTrack.java:94)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:60)
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:85)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: No adaptive formats, no dash.
... 8 more
Hi i cant compile, i dont rly know how to do it and when i test with gradlew build the error is:
FAILURE: Build failed with an exception.
Where:
Build file 'C:\Users\renardn\Desktop\lavaplayer-master\lavaplayer-master\natives
\build.gradle' line: 119
What went wrong:
Execution failed for task ':natives:connector-32-setup'.
Cannot run program "cmake" (in directory "C:\Users\renardn\Desktop\lavaplayer-
master\lavaplayer-master\natives\build\tmp\vsloc"): CreateProcess error=2, File not found
I have a friend whose Discord music bot apparently uses this player. I'm wondering if including support for various chiptune formats, such as .spc, .vgm, and .nsf, would be possible. There are no doubt some open chiptune players here or elsewhere on the internet.
When streaming a video from YouTube, HTOP reports CPU usage of 100% and the sound playback stutters. A Raspberry Pi 3 should easily be able to stream and process audio; prior to using LavaPlayer I was using JDA's old built-in system on a RPi 1A without an issue.
Is there anything I can do to reduce CPU usage, otherwise I believe this should be considered an issue worth looking into?
It is perhaps also worth noting that on my desktop PC the application is reported as using 0% CPU; perhaps the network IO is straining the Pi?
Does anyone have a solution for that, or knows what i am doing wrong?
Thanks for the Help.
[23:24:25] [ ERROR] [LocalAudioTrackExecutor] Error in playback of EFqjDXy9s5A
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track.
at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:40)
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:97)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:315)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager$$Lambda$31/1898224592.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: org.apache.http.NoHttpResponseException: r2---sn-4g5e6nez.googlevideo.com:443 failed to respond
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.loadMatroskaFile(MatroskaAudioTrack.java:56)
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:34)
at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:27)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:75)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:67)
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:89)
... 5 common frames omitted
Caused by: org.apache.http.NoHttpResponseException: r2---sn-4g5e6nez.googlevideo.com:443 failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:143)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface.execute(HttpInterface.java:56)
at com.sedmelluq.discord.lavaplayer.tools.io.PersistentHttpStream.connect(PersistentHttpStream.java:94)
at com.sedmelluq.discord.lavaplayer.tools.io.PersistentHttpStream.internalRead(PersistentHttpStream.java:122)
at com.sedmelluq.discord.lavaplayer.tools.io.PersistentHttpStream.read(PersistentHttpStream.java:138)
at java.io.DataInputStream.readByte(DataInputStream.java:265)
at com.sedmelluq.discord.lavaplayer.container.matroska.format.MatroskaEbmlReader.readEbmlInteger(MatroskaEbmlReader.java:39)
at com.sedmelluq.discord.lavaplayer.container.matroska.format.MatroskaFileReader.readNextElement(MatroskaFileReader.java:40)
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.readFile(MatroskaStreamingFile.java:79)
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.loadMatroskaFile(MatroskaAudioTrack.java:51)
... 10 common frames omitted
When i try to change the Volume peer the player this error occures, ive already searched for the missing dll files but they are not in the repo
Hi,
as I said in the title, the first M3U file after a reboot is working perfectly. The next file(If the song is stopped) does not work anymore.
File, tested with: http://www.iloveradio.de/ilove2dance.m3u
Message: The URL is not playable
Hey I'm having issues finding all the libraries that lavaplayer uses...
I installed slf4j, and tried to install logback-core but I keep getting this issue
[13:21:55] [Fatal] [JDA]: java.lang.NoClassDefFoundError: ch/qos/logback/classic/selector/ContextSelector at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:189) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:112) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:105) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:235) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:208) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:221) at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.<clinit>(DefaultAudioPlayerManager.java:59) at net.mrwhitegoat.gabethedog.GabeListener.onGuildMessageReceived(GabeListener.java:43) at net.dv8tion.jda.core.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:307) at net.dv8tion.jda.core.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:64) at net.dv8tion.jda.core.handle.MessageCreateHandler.handleDefaultMessage(MessageCreateHandler.java:101) at net.dv8tion.jda.core.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:51) at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:38) at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:688) at net.dv8tion.jda.core.requests.WebSocketClient.onTextMessage(WebSocketClient.java:437) at com.neovisionaries.ws.client.ListenerManager.callOnTextMessage(ListenerManager.java:352) at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:262) at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:240) at com.neovisionaries.ws.client.ReadingThread.handleTextFrame(ReadingThread.java:965) at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:748) at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:110) at com.neovisionaries.ws.client.ReadingThread.run(ReadingThread.java:66) Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.selector.ContextSelector at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 22 more
Havent changed my code at all. Getting issues when loading playlists or certain videos. https://paste.ofcode.org/hN2957C8rKXwb3uAFE9AcM
Here is the song attempting to play in the error. https://www.youtube.com/watch?v=f9EFW1yaQzA
It IS from a playlist.
Every time I attempt to start playing audio from soundcloud I get this error when calling
AudioFrame frame = this.connection.player.provide();
The line in my code thats throwing the error
The error seems to originate at Line 18 in AudioFrameProviderTools.java, or atleast thats the deepest point printed in the stack trace.
[17:16:39] [DiscLoader/SEVERE]: java.lang.RuntimeException: java.lang.InterruptedException
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.track.playback.AudioFrameProviderTools.delegateToTimedProvide(AudioFrameProviderTools.java:21)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provide(AudioPlayer.java:162)
[17:16:39] [DiscLoader/SEVERE]: at io.discloader.discloader.network.voice.StreamProvider.getNextPacket(StreamProvider.java:72)
[17:16:39] [DiscLoader/SEVERE]: at io.discloader.discloader.network.voice.StreamSender$1.run(StreamSender.java:36)
[17:16:39] [DiscLoader/SEVERE]: Caused by: java.lang.InterruptedException
[17:16:39] [DiscLoader/SEVERE]: at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(Unknown Source)
[17:16:39] [DiscLoader/SEVERE]: at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(Unknown Source)
[17:16:39] [DiscLoader/SEVERE]: at java.util.concurrent.ArrayBlockingQueue.poll(Unknown Source)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.track.playback.AudioFrameBuffer.provide(AudioFrameBuffer.java:106)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.provide(LocalAudioTrackExecutor.java:353)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.track.BaseAudioTrack.provide(BaseAudioTrack.java:95)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provideDirectly(AudioPlayer.java:190)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provide(AudioPlayer.java:167)
[17:16:39] [DiscLoader/SEVERE]: at com.sedmelluq.discord.lavaplayer.track.playback.AudioFrameProviderTools.delegateToTimedProvide(AudioFrameProviderTools.java:18)
[17:16:39] [DiscLoader/SEVERE]: ... 3 more
I'm using version 1.2.27 if that helps.
Hey,
I always get a strange issue, if I play a YouTube livestream with the lavaplayer. The stream works for 1 - 3 hours, after that the bot stops playing and throws an exception. Sometimes it is this:
But even sometimes it is this:
Everything else (Non-youtubelivestream) seems to be working. (Twitch, Soundcloud etc.)
It would be nice to have an option in the YoutubeAudioSourceManager to be able to player a youtube video from a certain time. Maybe something like loadTrackWithVideoId(String videoId, int seconds, boolean mustExist);
?
[..]
CMake Error at udpqueue/CMakeLists.txt:27 (add_library):
Cannot find source file:
linux/timing.c
[..]
As far as I can see, the directory udpqueue-natives/udpqueue/linux (with timing.c & mutex.c) is missing
Could you add support for GLIBC_2.13?
Hello,
First, Thank you for made lavaplayer.
I am using lavaplayer well, but having some issue about Youtube region restriction. For example, this video cannot play outside of South Korea and Japan. The server that using lavaplayer is in Japan but It is not working with following error message.
This video contains content from PONYCANYON, who has blocked it in your country on copyright grounds.
What should I do for play video like this?
Thank you.
I've got a custom program that streams data from a device in my house,
perioidcally, public int onAudioDataDelivered(short[] samples, int sampleCount, int sampleRate, int channels)
is called to deliver the stream.
How do I convert this into an AudioTrack?
I'm trying to use the JDA Demo with the latest version of lavaplayer and i get this error whenever I try to play music.
java.lang.ClassNotFoundException: com.sedmelluq.discord.lavaplayer.tools.DaemonThreadFactory
Some tracks (from yt) are skipped in the middle or at the beginning. This is what I get in my logs:
I'm using D4J and almost the example integration with some minor changes.
Hey there! I'm having an issue integrating your project into an existing bot code base. I'm mostly trying to get a file path on my computer pointing to wav
or mp3
files to be read and played. Here is where that is done in my code:
private void playFile(File audioFile, Guild guild) {
AudioManager audio = guild.getAudioManager();
AudioPlayer player;
if (audio.getSendingHandler() == null || audioSchedulers.get(guild) == null) {
// Create a new player.
player = dispatcher.getAudioManager().createPlayer();
audio.setSendingHandler(new AudioPlayerSendHandler(player));
AudioTrackScheduler scheduler = new AudioTrackScheduler();
player.addListener(scheduler);
audioSchedulers.put(guild, scheduler);
} else {
player = ((AudioPlayerSendHandler)(audio.getSendingHandler())).getPlayer();
}
String path = audioFile.getPath();
LOG.info("Sending request for '" + path + "' to AudioManager");
dispatcher.getAudioManager().loadItem(path, new AudioHandler(player));
}
Where AudioHandler
is defined as:
package net.dirtydeeds.discordsoundboard.audio;
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import net.dv8tion.jda.core.utils.SimpleLog;
public class AudioHandler implements AudioLoadResultHandler {
public static final SimpleLog LOG = SimpleLog.getLog("AudioHandler");
private AudioPlayer player;
public AudioHandler(AudioPlayer player) {
this.player = player;
}
@Override
public void trackLoaded(AudioTrack track) {
LOG.info("Loaded track " + track.getIdentifier() + " => " + track);
boolean started = player.startTrack(track, false);
LOG.info("Started track with success: " + started);
}
@Override
public void playlistLoaded(AudioPlaylist playlist) {
}
@Override
public void noMatches() {
LOG.warn("No match for audio identifier.");
}
@Override
public void loadFailed(FriendlyException exception) {
exception.printStackTrace();
}
}
However, I seem to keep hitting the noMatches()
function call for the path being passed (e.g., /home/safatli/Code/sounds/Memes/inception.mp3
). I've also tried to pass a YouTube URL and am getting the same result.
Any insight?
Any way to disable the logger? It's spamming the entire console.
I really love this lib as it's light yet powerful. But my bot experiencing some issues with playback rate, sometimes the song got jumpy, faster/slower. Is this mainly because of the ping to discord server? My machine is 2 Cores with 2GB mem. Please address how I would fix it.
I have a folder full of small mp3-files (1 to 5 seconds). They are freshly encoded and without errors. I am using v1.1.41.
Every few invokations the audio takes a few seconds to be played. Additionally, following exception is thrown nearly every time a file is played:
22:45:05.664 [Voice Send Handler] ERROR sx.blah.discord.Discord4J - Encountered error on voice websocket:
org.eclipse.jetty.io.EofException: null
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:292)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(SslConnection.java:936)
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:429)
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:322)
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:372)
at org.eclipse.jetty.websocket.common.io.FrameFlusher$Flusher.flush(FrameFlusher.java:153)
at org.eclipse.jetty.websocket.common.io.FrameFlusher$Flusher.process(FrameFlusher.java:217)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
at org.eclipse.jetty.websocket.common.io.FrameFlusher.enqueue(FrameFlusher.java:382)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.outgoingFrame(AbstractWebSocketConnection.java:614)
at org.eclipse.jetty.websocket.client.io.WebSocketClientConnection.outgoingFrame(WebSocketClientConnection.java:72)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.close(AbstractWebSocketConnection.java:289)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.close(AbstractWebSocketConnection.java:283)
at org.eclipse.jetty.websocket.common.WebSocketSession.close(WebSocketSession.java:123)
at sx.blah.discord.api.internal.DiscordVoiceWS.disconnect(DiscordVoiceWS.java:137)
at sx.blah.discord.handle.impl.obj.VoiceChannel.leave(VoiceChannel.java:119)
at main.Main.leaveVoiceChannel(Main.java:110)
at main.Main.handleTrackFinished(Main.java:298)
at util.TrackScheduler.onTrackEnd(LavaPlayer.java:119)
at com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter.onEvent(AudioEventAdapter.java:70)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.dispatchEvent(AudioPlayer.java:282)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.handleTerminator(AudioPlayer.java:211)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provideDirectly(AudioPlayer.java:188)
at com.sedmelluq.discord.lavaplayer.player.AudioPlayer.provide(AudioPlayer.java:160)
at util.AudioProvider.isReady(LavaPlayer.java:175)
at sx.blah.discord.handle.audio.impl.DefaultProcessor.isReady(DefaultProcessor.java:21)
at sx.blah.discord.handle.audio.impl.AudioManager.getAudioDataForProvider(AudioManager.java:87)
at sx.blah.discord.handle.audio.impl.AudioManager.getAudio(AudioManager.java:78)
at sx.blah.discord.api.internal.DiscordVoiceWS$1.run(DiscordVoiceWS.java:153)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.nio.channels.ClosedByInterruptException: null
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:478)
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:270)
... 36 common frames omitted
My code is loosely based on the Discord4J-Demo. I marked in my code where the delays are produced.
public class LavaPlayer {
private final AudioPlayerManager playerManager;
private final Map<Long, GuildMusicManager> musicManagers;
public LavaPlayer() {
this.musicManagers = new HashMap<>();
this.playerManager = new DefaultAudioPlayerManager();
AudioSourceManagers.registerRemoteSources(playerManager);
AudioSourceManagers.registerLocalSource(playerManager);
}
private synchronized GuildMusicManager getGuildAudioPlayer(IGuild guild) {
long guildId = Long.parseLong(guild.getID());
GuildMusicManager musicManager = musicManagers.get(guildId);
if (musicManager == null) {
musicManager = new GuildMusicManager(playerManager, guild);
musicManagers.put(guildId, musicManager);
}
guild.getAudioManager().setAudioProvider(musicManager.getAudioProvider());
return musicManager;
}
public void playAudio(IVoiceChannel voiceChannel, IChannel textChannel, URL soundFile, IUser user) {
GuildMusicManager musicManager = getGuildAudioPlayer(textChannel.getGuild());
playerManager.loadItem(soundFile.getPath(), new AudioLoadResultHandler() {
@Override
public void trackLoaded(AudioTrack track) {
// sometimes bot takes a few seconds to join channel
voiceChannel.join();
// sometimes bot takes a few seconds to play audio after joining
musicManager.player.playTrack(track);
}
@Override
public void playlistLoaded(AudioPlaylist playlist) {}
@Override
public void noMatches() {}
@Override
public void loadFailed(FriendlyException exception) {
Main.getInstance().writeMessage(textChannel, "Could not play: " + exception.getMessage());
}
});
}
}
class GuildMusicManager {
public final AudioPlayer player;
public GuildMusicManager(AudioPlayerManager manager, IGuild guild) {
player = manager.createPlayer();
player.addListener(new AudioEventAdapter() {
@Override
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
Main.getInstance().handleTrackFinished(guild);
}
});
}
public AudioProvider getAudioProvider() {
return new AudioProvider(player);
}
}
class AudioProvider implements IAudioProvider {
private final AudioPlayer audioPlayer;
private AudioFrame lastFrame;
public AudioProvider(AudioPlayer audioPlayer) {
this.audioPlayer = audioPlayer;
}
@Override
public boolean isReady() {
if (lastFrame == null) {
lastFrame = audioPlayer.provide();
}
return lastFrame != null;
}
@Override
public byte[] provide() {
if (lastFrame == null) {
lastFrame = audioPlayer.provide();
}
byte[] data = lastFrame != null ? lastFrame.data : null;
lastFrame = null;
return data;
}
@Override
public int getChannels() {
return 2;
}
@Override
public AudioEncodingType getAudioEncodingType() {
return AudioEncodingType.OPUS;
}
}
I don't know where to go from here.
Additional info: The bot ist hosted on a 2GHz, 2GB RAM machine with 100 MBit/s upload. There are roughly 1600 connected guilds, the bot is invoked every few seconds.
I get the following exception:
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track.
at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:40)
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:102)
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Must find action functions from script.
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSignatureCipherManager.extractTokensFromScript(YoutubeSignatureCipherManager.java:164)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSignatureCipherManager.getCipherKeyFromScript(YoutubeSignatureCipherManager.java:129)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSignatureCipherManager.getValidUrl(YoutubeSignatureCipherManager.java:88)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.loadBestFormatWithUrl(YoutubeAudioTrack.java:99)
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:60)
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:90)
... 4 more
So far, the only video this has happened with is https://www.youtube.com/watch?v=tG35R8F2j8k
. Every time I try and play this video, this exception gets thrown.
I have been trying to figure out why my bot's audio stutters and I think it may be an issue with lavaplayer. At first I thought the issue was with Discord4J, as I have been told this is an issue if I use its built in audio player, but I am using lavaplayer for my audio. My bot is based on this example provided: https://github.com/decyg/d4jexamplebot
Is there an issue with that that causes the audio to stutter, or should I just live with it and assume its normal?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.