- Fixed YouTube search not working in some regions due to different time format.
- Made it easier to use custom AudioPlayer implementations.
- Fixed volume formula not scaling well beyond 150 - now switches to linear mode after 150.
- Maximum volume setting set to 1000.
- Fixed AAC+SBR+PS not working properly for MP4/MKV containers.
- Ability to write more custom audio players as the player is now an interface.
- HTTP stream reconnect when using Conscrypt as SSL provider.
- Fixed mutable audio frames and non-allocating buffer exploding in some use cases.
- Fixed PCM output format regression.
- Option for allocation-free frame provision pipeline by allowing to set NonAllocatingAudioFrameBuffer as the default frame buffer implementation and then using the new provide methods that take mutable audio frame instances.
- Ability to set SSL context for internally used HTTP clients. This allows for custom SSL providers such as Conscrypt.
- Support for custom output formats using custom implementations of AudioDataFormat.
- Audio frame is now an interface, which is a breaking change for all use cases.
- Removed the concept of audio hooks.
- Some audio sources not freeing their HTTP clients when they were discarded.
- Potential NPE when the only node went down when a track was playing on it.
- Not closing OGG decoders created during track probing (still got closed on finalize).
- Missing Javadocs.
- Fixed WAV files with format header longer than 16 bytes not working.
- Fixed Twitch or Mixer tracks ending when next chunk of the stream is not available yet.
- Fixed non-mono inputs being distorted or passing the wrong number of channels to custom filters.
- Fixed loading a mix on a non-existing track throwing an exception instead of triggering no matches.
- Ogg FLAC and Ogg Opus metadata (title and artist).
- Track length detection for Ogg Opus and Ogg FLAC on a seekable stream.
- Metadata detection from ShoutCast stream headers.
- Method to set track frame buffer duration per player.
- Fixed HTTP 403 for some YouTube tracks due to adding one parameter to the playback URL twice.
- Equalizer filter and its filter factory to LavaPlayer classes (still need to be applied manually).
- Ability to add a custom audio filter factory to an instance of an audio player.
- Fixed Twitch stream loading regression.
- Fixed YouTube mix loading regression.
- Added method to get Twitch track channel name.
- Fixed NPE when YouTube URL has parameters without values.
- Fixed Windows native libraries being mixed up.
- Attempt to retry connection in case of socket read timeout.
- Fixed mobile SoundCloud links not working.
- Fixed 32-bit Windows natives being incompatible.
- YouTube search result loader performs HTTP requests with cookies disabled by default now.
- Fixed YouTube URLs with extra characters after video ID not working even though YouTube accepts them.
- Fixed NPE when video ID is not in valid format, now triggers
noMatches
instead. - Fixed missing YouTube video triggering
loadFailed
instead ofnoMatches
.
- Fixed attempting to load a native library that does not exist since last version on Windows x86.
- Fixed all consecutive HTTP connections failing after the HTTP of a source manager is reconfigured.
- Fixed ADTS/AAC streams with SBR and/or PS enabled (also known as AAC+ streams).
- Fixed ADTS/AAC streams with MPEG version 2 refused.
- Fixed MPEG2 MP3 file frames read incorrectly, causing artifacts and spam in standard error stream.
- Methods to allow reconfiguring HTTP builders used by source managers.
- Method to change YouTube mix loader thread pool size.
- Fixed YouTube ciphers being broken due to slight change to YouTube player script.
- All dependencies updated to latest versions (solves some issues with mismatching versions of Jackson).
- Support for twitch streams with domain
go.twitch.tv
. - Support for
m.soundcloud.com
domain for Soundcloud URLs.
- Fixed Twitch stream segment URL resolution occasionally producing incorrect URLs.
- Fixed YouTube links not working when they contain extra parameters.
- Local tracks can now be encoded.
- Fixed Bandcamp source being broken due to URL format change.
- Support for
mixer.com
(newbeam.pro
domain name).
- Fixed YouTube search being broken due to page style change.
- Improved efficiency of
.mkv
/.webm
processing by making it practically garbage-free.
- Fixed NPE thrown when an MPEG stream ends gracefully.
- Fixed dual channel mono MP3 files not working.
- Properly fixed the YouTube cipher detection (previous one missed some operations).
- Partially fixed YouTube cipher detection where reserved keywords are function names.
- Ability to store one user data object in audio track instances.
- Dumping YouTube scripts where cipher detection does not work.
- Fixed YouTube tracks with only mixed audio-video MP4.
- Twitch stream title is now stream status rather than channel name.
- Fixed MP3 not working with local files.
- Fixed only MP3 working with local files.
- Fixed deadlock when starting tracks from exception event
- Fixed seeking while track is initialising possibly interrupting load.
- Fixed stopped track threads sometimes not exiting.
- Added track URL field to track info object.
- Fixed SoundCloud client ID not updated if expiration was discovered on a request for search or playlist.
- Fixed SoundCloud not working due to client ID change.
- SoundCloud client ID now fetched from their page now, not hardcoded.
- Support for mono MP3 format.
- PlayerLibrary which exposes the library version.
- Fixed using nodes not working after node list is cleared once.
- Fixed read timeout exception thrown when playing some YouTube live streams.
- Fixed excessive amount of requests made for YouTube live streams.
- Added a way to configure HTTP request settings for source managers.
- Changing volume with PCM output rebuilds frame buffer into silence.
- Added NicoNico source manager.
- Fixed exploding on seekable YouTube live streams.
- Fixed using an unnecessary high track start message version when communicating with node.
- Fixed a potential issue with YouTube ciphers not being detected correctly (403 error) and added more cipher logging.
- Fixed some reconnect cases for HTTP connections not actually working.
- Fixed inaccurate seek on resampled streams.
- Retry connection also on premature HTTP response end exception.
- Abandoned tracks are taken over by other nodes more quickly.
- When remote nodes go offline, their tracks are slowly taken over by other nodes.
- Fixed Beam.pro tracks not playable in nodes.
- Fixed seeking on tracks which had not been started yet.
- Fixed a possible crash when a Vorbis track was shut down before being successfully initialised.
- Retry stream connection on NoHttpResponseException, which may be caused by connection reuse.
- Retry stream connection on SSL errors, which may be caused by severed connection.
- Retry stream connection once on 500 series errors, due to possibly flaky server side issues.
- Fixed loadFailed being called for exceptions in other callbacks.
- Improved logging to know causes of all failed requests and changes some inappropriate logging levels.
- Fixed a regression with YouTube dashmpd-only tracks not working.
- Support for alternative YouTube JSON format (adaptive_fmts -> url_encoded_fmt_stream_map).
- Fixed interrupts from previous tracks may be carried over to executors of new tracks.
- Beam.pro source manager.
- Fixed reused clients restricting the number of concurrent connections to a very low value.
- Fixed track stop or seek throwing an exception in some conditions due to InterruptedException getting wrapped.
- Track info loader queue full exception is passed to loadFailed instead of being thrown directly.
- Fixed using wrong version of lavaplayer-common dependency (again).
- Fixed track loading queue throwing "queue full" exception when the queue is not empty.
- Fixed using wrong version of lavaplayer-common dependency.
- Added the option to increase the number of threads used to load tracks.
- Reusing HTTP client objects as much as possible.
- Limited the size of the track info loader queue.
- Fixed YouTube live streams opening a new connection for each request.
- Fixed no read timeout applied to requests to nodes.
- Fixed track getting locked when seek gets stuck.
- Fixed attempting to read the entire response on closing a stream mid-way.
- Increased timeout for terminating the tracks of a node if its processing is stuck.
- Fixed Vorbis MKV tracks not working if the channel count was not specified in MKV audio section.
- Partial support for YouTube live streams (only MP4).
- Method to poll frames from AudioPlayer in a blocking way.
- Support for different audio output formats.
- Utility class for getting an AudioInputStream from AudioPlayer.
- Fixed another smaller leak with Vorbis.
- Fixed a native memory leak with Vorbis tracks.
- ARM binaries are now loaded from natives/linux-arm and natives/linux-aarch64 directories instead of x86 ones.
- WAV file support (16-bit PCM).
- Loading unlisted SoundCloud tracks.
- Searching on SoundCloud with scsearch: prefix.
- Option to specify maximum number of YouTube playlist pages to load (was hardcoded to 6).
- Fixed SoundCloud playlist tracks in wrong order.
- Fixed paid movies appearing in YouTube search results.
- Fixed YouTube playlists with UU prefix not working.
- Support for OS X (native library).
- Fixed YouTube tracks broken when player.js URL was given without hostname.
- Fixed constant delay on processing node messages.
- Fixed making a new HTTP connection for each node request.
- Reduced playing track count effect on node balancing.
- Node balancing takes CPU and latency more seriously.
- Node messaging changed, requires node update to 1.1.38.
- MKV file handling refactored to be more lightweight.
- Fixed track marker and position reset when starting the track.
- Fixed loading HTTP urls with local redirects.
- YouTube search results no longer include ads.
- Fixed a regression with loading native libraries on Windows.
- Fixed an issue when JDA-NAS and LavaPlayer were used together with different classloaders.
- Made node balancing weight data available.
- Request time to nodes also used for balancing between nodes.
- Fixed an issue with MP3 files sometimes being detected as ADTS streams.
- Made various statistics about remote nodes available.
- Made requests to nodes tolerate higher latency without stuttering.
- Changing remote node list does not stop tracks on unaffected nodes.
- Dependency restructuring for compatibility with JDA-NAS.
- Support for legacy MP3 ID3v2.2 tags.
- Fixed nonexistent YouTube tracks being tried as raw HTTP urls.
- Title and artist information for MP4/M4A files.
- Can check if playlist is a search result.
- Fixed SoundCloud not working because because of SoundCloud client ID expiring.
- Option to disable YouTube searches.
- Support YouTube searches by using "ytsearch: query" as identifier.
- Made it simple to register all bundled sources through the methods of AudioSourceManagers.
- Allow redirects from raw HTTP urls to other source providers.
- Fixed an exception on the end of some MP4 tracks.
- Added mayEndTrack field to end reasons.
- Special end reason for failed track initialization.
- Fixed an issue with resolving correct YouTube stream URL due to a bug in cipher detection.
- Lowered default resampling quality.
- Fixed some tracks mistakenly detected as MP3 streams.
- Allow icy:// urls, which are used in some radio stream playlists.
- Fixed exception on OGG streams when they end.
- SoundCloud fix + provider more resilient to site updates.
- Track markers.
- Loop feature. It can be done with markers.
- SoundCloud liked tracks page loadable as a playlist.
- Common exception in case a playlist is private.
- Fixed YouTube track not loaded if it is part of a private playlist.
- Twitch stream support.
- Vimeo support.
- Support for the more common non-fragmented format of MP4/M4A.
- IDv2.3 tag support.
- Fixed exception on long ID3 tags on streams.
- Plain text files with an URL loaded as radio stream playlist.
- Fixed SoundCloud not working due to site update.
- Support for PLS playlists for radio streams.
- Support for ICY protocol to fix some SHOUTcast streams.
- Support for ADTS+AAC radio streams.
- Bundled some LetsEncrypt SSL root certificate missing on some JDK installations.
- Support for adding custom SSL certificates.
- Fixed SoundCloud URLs not working with a slash in the end.
- BandCamp support.
- M3U support for radio streams.
- MPEG2+layerIII MP3 format support.
- Fixed an exception on OGG stream playback.
- OGG stream support.
- Fixed exception on loading age-restricted YouTube videos.
- Fixed an exception on decoding some FLAC files.
- Fixed huge CPU load on tracks from local files.
- FLAC support.
- MP3 stream support.
- Fixed NPE on missing Content-Length in HTTP responses.
- HTTP source for loading any URL as a track.
- Loading artist and title from MP3 tags.
- Custom executor support.
- Fixed track end not triggering on exception.
- Accurate seeking and duration for VBR MP3 files.
- Track serialization.
- Fixed only one thread used for loading track info.
- Shutting down player managers and source managers.
- Cleaning up abandoned players.
- File type detection based on content.
- Track end reasons.
- Fixed TrackStartEvent event not called.
- Audio output hook for experimental native UDP packet scheduling.
- Fixed huge CPU load from GC monitor.
- Fixed track duration reported in microsecons.
- GC pause monitor for logging the number of GC pauses in different duration ranges.
- Made null a valid argument for playTrack with identical behavior to stopTrack.
- SoundCloud playlist support.
- Fixed YouTube tracks which use dash XML and are protected with cipher.
- Offloading audio processing to remote nodes with load balancing.
- Refactoring of track execution.
- Method for loading items in order.
- Opus encoding quality setting.
- Fixed SoundCloud tracks with underscores not working.
- Resampling quality setting.
- Track length info provided in milliseconds instead of seconds.
- Fixed getPosition always returning 0 when setPosition was called before start.
- Tracks can be cloned (for replay).
- SoundCloud support (single tracks)
- Support for special playlist types on YouTube (liked videos, favorites, mixes).
- MP3 support.
- YouTube track is loaded as a playlist if playlist is referenced in the URL.
- Fixed broken special characters in track info when system default charset is not UTF8.
- Severity levels for FriendlyException.
- Report YouTube errors with the proper error message and COMMON severity.
- Fixed smooth transition not working from volume 0.
- Volume support with smooth transition.
- Support for nonstandard opus streams, such as mono.
- Fixed onTrackException not being called.
- Initial release.