Walkyst / lavaplayer-fork

Apache License 2.0
173 stars 68 forks source link

Issue with OggVorbis decoding in some local tracks #114

Closed TheComputerizer closed 7 months ago

TheComputerizer commented 1 year ago

Certain local ogg tracks seem to not be able to play throwing an error like the one pasted below. I was not able to narrow it down much past that, but using a binary file viewer on both tracks that worked and tracks that did not work did not have any obvious differences

[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]: com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when decoding the track.
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:44)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:293)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.container.ogg.OggAudioTrack.process(OggAudioTrack.java:44)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.source.local.LocalAudioTrack.process(LocalAudioTrack.java:45)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:361)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:     at java.lang.Thread.run(Thread.java:748)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:    Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation: 
  lavaplayer.version: 1.4.2-original
  os.arch: amd64
  os.name: Windows 10
  os.version: 10.0
  java.vendor: AdoptOpenJDK
  java.version: 1.8.0_292
  java.runtime.version: 1.8.0_292-b10
  java.vm.version: 25.292-b10
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]: Caused by: java.lang.IllegalStateException: Passing input failed with error -135.
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:    at com.sedmelluq.discord.lavaplayer.natives.vorbis.VorbisDecoder.input(VorbisDecoder.java:69)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:    at com.sedmelluq.discord.lavaplayer.container.ogg.vorbis.OggVorbisTrackHandler.provideFromBuffer(OggVorbisTrackHandler.java:84)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:    at com.sedmelluq.discord.lavaplayer.container.ogg.vorbis.OggVorbisTrackHandler.provideFrames(OggVorbisTrackHandler.java:76)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:    at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
[02:51:43] [lava-daemon-pool-playback-13-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:    ... 8 more

Here is a google drive link with some examples of ogg files that both work and don't work.

Walkyst commented 1 year ago

It throw error right after starting play or at some point?

TheComputerizer commented 1 year ago

It throws the error right when it tries to start playing

Walkyst commented 1 year ago

Just played both of broken files and it playing fine, im thinking that you are doing rewinding to 0 after starting to play, in that case i'm getting exception too

Walkyst commented 1 year ago

Try ogg-stream-fix branch

TheComputerizer commented 1 year ago

That is probably right since my system has a custom start time for songs that defaults to 0 and doesn't get set unless the song starts playing successfully. It's just weird that it wasn't happening with every ogg file for me.

I will test the fix branch

TheComputerizer commented 1 year ago

There seems to be a new related issue when testing with the fix the branch

[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]: com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when seeking to a position.
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:44)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.performSeek(LocalAudioTrackExecutor.java:407)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.checkPendingSeek(LocalAudioTrackExecutor.java:395)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:260)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.container.ogg.OggAudioTrack.process(OggAudioTrack.java:46)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.source.local.LocalAudioTrack.process(LocalAudioTrack.java:45)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:361)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [mods.thecomputerizer.musictriggers.client.channels.ChannelListener:onTrackException:46]:  at java.lang.Thread.run(Thread.java:748)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:     Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation: 
  lavaplayer.version: 1.4.2-original
  os.arch: amd64
  os.name: Windows 10
  os.version: 10.0
  java.vendor: AdoptOpenJDK
  java.version: 1.8.0_292
  java.runtime.version: 1.8.0_292-b10
  java.vm.version: 25.292-b10
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]: Caused by: java.lang.NullPointerException
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:     at com.sedmelluq.discord.lavaplayer.container.ogg.vorbis.OggVorbisTrackHandler.seekToTimecode(OggVorbisTrackHandler.java:99)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:     at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.performSeek(LocalAudioTrackExecutor.java:405)
[00:56:03] [lava-daemon-pool-playback-4-thread-1/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:635]:     ... 10 more
Walkyst commented 1 year ago

Can you send file or link that used here?

TheComputerizer commented 1 year ago

The file I tried was the mainmenu.ogg one under the good audio of the drive link I sent in the original message. Also if it helps with debugging this is the method where I handle playing a new track.

TheComputerizer commented 1 year ago

I should mention that my tracks do play correctly when I shift the logic around so that it calls AudioTrack#setPosition before calling AudioPlayer#startTrack so you can treat this as a low priority issue since it is not too hard to work around.