- Fixed GetyarnAudioSourceManager URL regex in #144
- Fixed playback of vimeo (please note seeking doesn't seem to work) in #149
- Fixed reading of Matroska files with embedded SimpleTags #133
- Fixed reading of Matroska SimpleTags that contain UTF8 characters #133
- Added loadItemSync method to AudioPlayerManager without result handler #134
- Added support for searching Bandcamp tracks
- Added support for WAV files with 32 bit samples
- Added support for reading ISRC from MP3, OGG and Matroska files
- Added support for extracting ISRC from Bandcamp tracks
- Added method for registering multiple source managers in one call
- Fixed AAC decoder initialisation
- Fixed header validation of FLAC files
- Fixed an issue with playing inner m3u8 playlists directly
- Fixed a rare thread leak caused by a race condition when stopping track executors
- Fixed Twitch source sometimes failing to initialise causing errors when registering source managers #99
- Fixed metadata extraction for some OGG files #101
- Fixed OGG opus duration extraction #103
- Fixed clamping of lower values during volume changing #105
- Improve handling of some MP3 files with multiple IDv3 blocks #108
- Added basic metadata extraction for Matroska files #108
- Bump
sourceCompatibility
specifically to Java 11 (Java 11 was already needed anyway) #81 - Add new
AudioSourceManagers.registerRemoteSources
method which allows excluding specific source managers from being registered (useful for excluding the old YouTube source manager)
Warning
The YoutubeSourceManager
is now deprecated and won't receive further updates. Please use https://github.com/lavalink-devs/youtube-source#v2 instead.
- Fixed invalid search request (code 400) #70
- Fixed YoutubeMpegStreamAudioTrack default to
0
ifstate.absoluteSequence
isnull
#73 - Update youtube music client version #74
- Added support for multiple track markers #56
- Fixed NicoNico #50
- Fixed playback of some Vimeo tracks by adding HLS support #63
- Added support for
/live/
YouTube URLs #53 - Added proper handling of relative URLs in m3u8 playlists #48
- Fixed handling of Twitch URLs with uppercase paths #57
- Made frame buffers pass their format to other frames #55
- Fixed JitPack compilation #60
- Fix NPE on missing author in playlist tracks in #45
- Add ISRC to soundcloud in #35
- Use Twitch stream preview thumbnail instead of channel icon in #47
- Updated
IDENTITY_REGEX
in #44
- Fix a bug with MPEG parsing that would lead to range exceptions in #31
- Specify all request timeouts in #33
- Support MPEG 2.5 by @markozajc in #30
- Removed
stream-merger
module - Removed
node
module & classes inmain
module - Removed
test-samples
module
- Updated
commons-io:commons-io
to2.13.0
- Updated
org.apache.httpcomponents:httpclient
to4.5.14
- Updated
com.fasterxml.jackson.core:jackson-core
to2.15.2
- Updated
com.fasterxml.jackson.core:jackson-databind
to2.15.2
- Updated
org.slf4j:slf4j-api
to2.0.7
- Updated
ch.qos.logback:logback-classice
to1.4.8
- Updated
org.codehaus.groovy:groovy
to4.0.13
- Updated
org.spockframework:spock-core
to2.4-M1-groovy-4.0
- Updated
org.json
to20230618
- Updated
org.jsoup:jsoup
to1.16.1
- Added
AudioPlayerManager#loadItemSync
to allow loading tracks synchronously - Added
natives
&natives-publish
modules for lavaplayer native libraries - Added support soundcloud short urls for in #4
Caution
This is the last Lavaplayer v1 release, see: #150
- Fixed GetyarnAudioSourceManager URL regex in #144
- Fixed playback of vimeo (please note seeking doesn't seem to work) in #149
- Updated org.json in #114
- Fixed Twitch source sometimes failing to initialise causing errors when registering source managers in #100
- Fixed metadata extraction for some OGG files in #102
- Fixed OGG opus duration extraction in #104
- Fixed clamping of lower values during volume changing in #106
- Improve handling of some MP3 files with multiple IDv3 blocks in #109
- Added basic metadata extraction for Matroska files in #108
Warning
The YoutubeSourceManager
is now deprecated and won't receive further updates. Please use https://github.com/lavalink-devs/youtube-source#common instead.
- Fix
Target host is not specified
with HLS relative urls in m3u8 playlists in #49 - Fix invalid search request (code 400) in #71
- Added support for youtube
/live/
URLs in #54 - Update youtube music client version in #75
- Fix NPE on missing author in playlist tracks in #46
- Removed
stream-merger
module - Removed
node
module & classes inmain
module - Removed
test-samples
module
- Added
natives
&natives-publish
modules for lavaplayer native libraries
- Fixed loading YouTube tracks with age verification.
- Fixed SoundCloud Client ID detection which broke loading SoundCloud tracks.
- Fixed playing YouTube tracks which require a separate verification request (PR #615 by Walkyst).
- Fixed quotes in YouTube Music search breaking the request (PR #618 by Walkyst).
- Fixed playing age restricted YouTube tracks (PR #627 by Walkyst).
- Fixed SoundCloud URLs not working if they end with a slash (PR #626 by NavyCake).
- Added a method to load tracks from the player manager by AudioReference (PR #620 by duncte123).
- Fixed using natives dependency which may have had outdated files in the new repository.
- Fix loading YouTube playlists not working due to non-error alerts.
- Fix playing YouTube tracks by using a hardcoded consent cookie.
- Fix for YouTube playlists with pagination not loading (PR #592 by Walkyst)
- Fixed a specific MP3 frame type (version 2, layer 1, 144kbps) being decoded incorrectly.
- Fixed YouTube music search failing if some results did not include duration.
- Fixed a bug with MP4 AAC decoding introduced in 1.3.68.
- Fixed YouTube age restricted videos which broke due to embed page content change.
- Added support for AAC profiles other than AAC-LC in MP4 files.
- Added support for
music.youtube.com
URLs (PR 562 by Walkyst).
- Internal changes to allow custom
AudioPlayerManager
implementations (PR 572 by ToxicMushroom).
- All YouTube requests are now retried once if they get a connection reset during connection establishment.
- Attached LP, OS and JDK version information to all FriendlyExceptions as a suppressed exception.
- Fixed SoundCloud not working due to a change in the site (PR 570 by reptar25).
- Added option to override logging handler for errors with large payloads.
- Removed Mixer implementation, source manager class kept for now to not cause a breaking change.
- YouTube playlist loader logs response content if content type is not JSON.
- Status code 429 from YouTube now causes an exception which explains YouTube block.
- GC logging no longer warns about pauses shorter than 200ms.
- Fixed age restricted YouTube videos (PR 559 by Walkyst).
- Fixed YouTube search results using current locale language (PR 557 by madeyoga).
- Fixed removing/adding player listeners failing when done from within listener callback.
- Fixed YouTube playlist pagination being broken (PR 552 by Xavinlol).
- Fixed AAC streams possibly detected as MP3 even if their mime type is set to audio/aac.
- Added support for SoundCloud tracks which only have MP3 HLS format available.
- Fixed some YouTube live streams caused by MP4 audio data being skipped in MP4 with no sidx.
- Fixed no exception thrown when native lib loading fails.
- Fixed seeking on MKV files with cues in the end of the file.
- Fixed YouTube VOD duration set to unknown.
- Fixed Bandcamp track and album loading which broke due to url changes (PR 527 by Walkyst).
- Fixed Twitch stream loading failure which broke due to access token changes (PR 410 by kimcore).
- Fixed Twitch stream including ads which also broke stream start sometimes.
- Fixed a redundant request made for YouTube age-restricted tracks.
- Fixed various issues with YouTube track loading and searches.
- Fixed YouTube playlist track titles being null (PR 534 by gmfonseca).
- Fixed YT search sometimes not finding anything because of YT providing different format (PR 492 by Frederikam).
- Fixed Twitch streaming breaking due to API change (PR 480 by Devoxin).
- Fixed YT private videos providing invalid result instead of failing (PR 479 by Devoxin).
- Fixed some YouTube tracks not working because of cipher detection issues (PR 475 by Devoxin).
- Fixed loading YouTube live streams within playlists (PR 294 by Devoxin).
- Fixed YouTube mix loading, mixes loaded with just one request now (PR 293 by Devoxin).
- Fixed some YouTube live streams not being loaded and randomly stopping (PR 291 by Devoxin).
- Fixed failing to load SoundCloud playlists with more than 50 tracks (PR 290 by Devoxin).
- Fixed SoundCloud connection leaks which eventually caused pool limit to be reached and new connections getting stuck.
- Added
AbstractHttpContextFilter
to easily create additional HTTP context filters with delegates.
- Added support for GetYarn.io as a source (PR 277 by duncte123).
- Fixed audio event adapter method with stuck stacktrace included not getting called.
- Added
SimpleHttpClientConnectionManager
to sources which can be used to disable pooling for HTTP of some source.
- Added method to set Apache HTTP connection manager factory to customize connection handling.
- Track stuck events now provide stacktrace of the struck thread.
- Fixed unable to fetch YouTube player script for ciphered URLs.
- Unexpected response code from YouTube player script request now logs more details.
- Added method to provide a set of IPs to be used for making an HTTP connection without choosing a specific one.
- HTTP connection failure exceptions now contain all details about the connection that was being established.
- Fixed NPE for unavailable SoundCloud tracks (PR 276 by duncte123).
- Fixed YouTube missing fallback to embed page for "objectionable content" videos (PR 270 by Xavinlol).
- Fixed NPE instead of common exception for missing YouTube video (PR 264 by duncte123).
- Fixed blocked tracks included in SoundCloud liked tracks result (PR 261 by nikammerlaan).
- Added builder for SoundCloud source manager.
- Added a more concise way to create an extended media container registry.
- Fixed SoundCloud tracks longer than 30 minutes breaking during playback due to URLs expiring.
- Fixed redundant retry attempts for SoundCloud liked tracks and search result pages.
- SoundCloud source manager is now modular and more easily extendable.
- Fixed non-opus tracks no longer working due to old stream API not being available anymore.
- Fixed SoundCloud opus seeking not working when applied before track starts.
- Fixed SoundCloud opus seeking not working.
- Fixed response code 203 treated as an error everywhere.
- Fixed SoundCloud track loading failing if no opus track is available.
- Support for SoundCloud opus streams by default, old MP3 streams only used if opus is not available.
- Manipulation of HTTP requests and triggering retries with HTTP context filter instead of a simple request modifier.
- HTTP request modifier interface which allows modifying outgoing requests.
- Use YouTube pbj=1 requests for tracks and playlists.
- Fixed new track formats breaking YouTube track loading (PR 210 by Ferderikam)
- Fixed playing direct SoundCloud tracks which broke due to site change (PR 208 by Devoxin).
- Fixed some cases where YouTube tracks broke because of duplicate parameters (PR 180 by Joakim).
- Fixed new format YouTube pages where no cipher was used (PR 205 by Devoxin).
- Fixed playback for YouTube when format list is only provided through player_response.
- Fixed broken YouTube track loading due to changes the site (PR 199 by Frederikam).
- YouTube track info JSON now gets logged if it does not contain any expected fields.
- Fixed closing MKV Opus track throwing an exception if playback initialization had thrown an exception earlier.
- Fixed exception from track close reported instead of playback exception on MKV close.
- Fixed passing an invalid parameter to YouTube embed page URL.
- Fixed age-restricted videos not being playable (PR 172 by Devoxin).
- Fixed probe hint matching logic for aac/ts causing HTTP source to not resolve tracks when mime type was present.
- Fixed no automatic reconnect on connection reset for some JDK versions.
- Fixed MKV frame size parsing which caused some MKV/WEBM files to fail in the middle of playback.
- Fixed an old x86 Linux native being bundled with main LP artifact, causing previous libc conflict to still manifest.
- Fixed natives crashing due to libc conflict.
- Fixed exception when calling provide on an ending track.
- Support for playing MPEG-TS files directly, including metadata support.
- Metadata for OGG vorbis files.
- AAC and MP3 decoders updated to newer versions.
- Linux native libraries have better compatibility with alternate libc implementations (musl on Alpine for example)
- More flexibility for specifying which native libraries and from where to load.
- Fixed file format detected incorrectly due to check order when file extension is known.
- Fixed exception when processing the last frame of some FLAC files.
- Fixed YouTube video signature using wrong parameter name in some cases.
- Fixed ImmutableAudioFrame#getData doing the wrong thing.
- Fixed MP3 track length detected incorrectly if they contain certain type of metadata.
- Fixed a race condition which could sometimes drop the last frame of a track.
- Generic HLS stream support.
- Ability to add custom file format support (as custom MediaContainerRegistry).
- Fixed YouTube streams not reconnecting due to SSL exception wrapper changes in JDK10+.
- Fixed playing age-restricted videos using the embed page (PR 136 by duncte123).
- Added support for YouTube watch_videos urls (PR 123 by matsprehn).
- Added support for YouTube music.youtube.com domain links (PR 134 by GigaFyde).
- Fixed Mixer streams.
- Fixed Twitch streams by using the Helix API (PR 132 by tdeeb).
- Fixed OGG metadata memory usage exploit (PR 131 by napstr).
- 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.