/** * See {@link #registerRemoteSources(AudioPlayerManager, MediaContainerRegistry)}, but with default containers. */ public static void registerRemoteSources(AudioPlayerManager playerManager) { registerRemoteSources(playerManager, MediaContainerRegistry.DEFAULT_REGISTRY); }
/** * Registers the local file source manager to the specified player manager. * * @param playerManager Player manager to register the source manager to */ public static void registerLocalSource(AudioPlayerManager playerManager) { registerLocalSource(playerManager, MediaContainerRegistry.DEFAULT_REGISTRY); }
public void init() { AudioSourceManagers.registerRemoteSources(this); AudioSourceManagers.registerLocalSource(this); source(YoutubeAudioSourceManager.class).setPlaylistPageCount(10); }
private Main() { this.musicManagers = new HashMap<>(); this.playerManager = new DefaultAudioPlayerManager(); AudioSourceManagers.registerRemoteSources(playerManager); AudioSourceManagers.registerLocalSource(playerManager); }
private AudioTrack decodeTrackDetails(AudioTrackInfo trackInfo, DataInput input) throws IOException { String sourceName = input.readUTF(); for (AudioSourceManager sourceManager : sourceManagers) { if (sourceName.equals(sourceManager.getSourceName())) { return sourceManager.decodeTrack(trackInfo, input); } } return null; }
private void encodeTrackDetails(AudioTrack track, DataOutput output) throws IOException { AudioSourceManager sourceManager = track.getSourceManager(); output.writeUTF(sourceManager.getSourceName()); sourceManager.encodeTrack(track, output); }
@SuppressWarnings("unchecked") @Override public void on(Context context) { if (!sourceManagersMessage.isPresent()) { try { Field field = DefaultAudioPlayerManager.class.getDeclaredField("sourceManagers"); field.setAccessible(true); sourceManagersMessage = Optional.of(((List<AudioSourceManager>) field.get(playerManager)) .stream() .map(manager -> manager.getSourceName().toLowerCase()) .collect(Collectors.joining(", "))); } catch (NoSuchFieldException | IllegalAccessException e) { LOGGER.error("error getting available music providers", e); return; } } context.reply("Available music providers: %s", sourceManagersMessage.get()); } }
private AudioItem checkSourcesForItemOnce(AudioReference reference, AudioLoadResultHandler resultHandler, boolean[] reported) { for (AudioSourceManager sourceManager : sourceManagers) { if (reference.containerDescriptor != null && !(sourceManager instanceof ProbingAudioSourceManager)) { continue; } AudioItem item = sourceManager.loadItem(this, reference); if (item != null) { if (item instanceof AudioTrack) { log.debug("Loaded a track with identifier {} using {}.", reference.identifier, sourceManager.getClass().getSimpleName()); reported[0] = true; resultHandler.trackLoaded((AudioTrack) item); } else if (item instanceof AudioPlaylist) { log.debug("Loaded a playlist with identifier {} using {}.", reference.identifier, sourceManager.getClass().getSimpleName()); reported[0] = true; resultHandler.playlistLoaded((AudioPlaylist) item); } return item; } } return null; }
private AudioTrackExecutor createExecutorForTrack(InternalAudioTrack track, AudioConfiguration configuration, AudioPlayerOptions playerOptions) { AudioSourceManager sourceManager = track.getSourceManager(); if (remoteNodeManager.isEnabled() && sourceManager != null && sourceManager.isTrackEncodable(track)) { return new RemoteAudioTrackExecutor(track, configuration, remoteNodeManager, playerOptions.volumeLevel); } else { AudioTrackExecutor customExecutor = track.createLocalExecutor(this); if (customExecutor != null) { return customExecutor; } else { int bufferDuration = Optional.ofNullable(playerOptions.frameBufferDuration.get()).orElse(frameBufferDuration); return new LocalAudioTrackExecutor(track, configuration, playerOptions, useSeekGhosting, bufferDuration); } } }
@Override public void shutdown() { remoteNodeManager.shutdown(true); garbageCollectionMonitor.disable(); lifecycleManager.shutdown(); for (AudioSourceManager sourceManager : sourceManagers) { sourceManager.shutdown(); } ExecutorTools.shutdownExecutor(trackPlaybackExecutorService, "track playback"); ExecutorTools.shutdownExecutor(trackInfoExecutorService, "track info"); ExecutorTools.shutdownExecutor(scheduledExecutorService, "scheduled operations"); }
protected AudioItem handleLoadResult(MediaContainerDetectionResult result) { if (result != null) { if (result.isReference()) { return result.getReference(); } else if (!result.isContainerDetected()) { throw new FriendlyException("Unknown file format.", COMMON, null); } else if (!result.isSupportedFile()) { throw new FriendlyException(result.getUnsupportedReason(), COMMON, null); } else { return createTrack(result.getTrackInfo(), result.getContainerDescriptor()); } } return null; }
private Main() { this.musicManagers = new HashMap<>(); this.playerManager = new DefaultAudioPlayerManager(); AudioSourceManagers.registerRemoteSources(playerManager); AudioSourceManagers.registerLocalSource(playerManager); }
public static void init() { AudioSourceManagers.registerRemoteSources(playerManager); playerManager.getConfiguration().setResamplingQuality(AudioConfiguration.ResamplingQuality.HIGH); playerManager.getConfiguration().setOpusEncodingQuality(AudioConfiguration.OPUS_QUALITY_MAX); }
@Override public void trackLoaded(AudioTrack track) { if (track.getSourceManager().getSourceName().equals("youtube")) { OMusic rec = CMusic.findByYoutubeId(track.getInfo().identifier); if (rec.id == 0 || rec.duration == 0) { rec.artist = track.getInfo().author; rec.duration = (int) (track.getInfo().length / 1000L); rec.youtubeTitle = track.getInfo().title; CMusic.update(rec); } } scheduler.queue(new QueuedAudioTrack(trackToAdd.requestedBy, track)); startPlaying(); }
public AudioPlayerManager getPlayerManager() { if (playerManager == null) { playerManager = registerSourceManagers(new DefaultAudioPlayerManager()); playerManager.getConfiguration().setResamplingQuality( AudioConfiguration.ResamplingQuality.valueOf( avaire.getConfig().getString("audio-quality.resampling", "medium").toUpperCase() ) ); playerManager.getConfiguration().setOpusEncodingQuality( avaire.getConfig().getInt("audio-quality.encoding", AudioConfiguration.OPUS_QUALITY_MAX) ); if (LavalinkManager.LavalinkManagerHolder.lavalink.isEnabled()) { playerManager.enableGcMonitoring(); } playerManager.setFrameBufferDuration(1000); playerManager.setItemLoaderThreadPoolSize(500); AudioSourceManagers.registerRemoteSources(playerManager); AudioSourceManagers.registerLocalSource(playerManager); } return playerManager; }