use of com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo in project lavaplayer by sedmelluq.
the class MpegContainerProbe method probe.
@Override
public MediaContainerDetectionResult probe(AudioReference reference, SeekableInputStream inputStream) throws IOException {
if (!checkNextBytes(inputStream, ISO_TAG)) {
return null;
}
log.debug("Track {} is an MP4 file.", reference.identifier);
MpegFileLoader file = new MpegFileLoader(inputStream);
file.parseHeaders();
MpegTrackInfo audioTrack = getSupportedAudioTrack(file);
if (audioTrack == null) {
return new MediaContainerDetectionResult(this, "No supported audio format in the MP4 file.");
}
MpegTrackConsumer trackConsumer = new MpegNoopTrackConsumer(audioTrack);
MpegFileTrackProvider fileReader = file.loadReader(trackConsumer);
if (fileReader == null) {
return new MediaContainerDetectionResult(this, "MP4 file uses an unsupported format.");
}
return new MediaContainerDetectionResult(this, new AudioTrackInfo(DataFormatTools.defaultOnNull(file.getTextMetadata("Title"), UNKNOWN_TITLE), DataFormatTools.defaultOnNull(file.getTextMetadata("Artist"), UNKNOWN_ARTIST), fileReader.getDuration(), reference.identifier, false, reference.identifier));
}
use of com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo in project lavaplayer by sedmelluq.
the class AdtsContainerProbe method probe.
@Override
public MediaContainerDetectionResult probe(AudioReference reference, SeekableInputStream inputStream) throws IOException {
AdtsStreamReader reader = new AdtsStreamReader(inputStream);
if (reader.findPacketHeader(MediaContainerDetection.STREAM_SCAN_DISTANCE) == null) {
return null;
}
log.debug("Track {} is an ADTS stream.", reference.identifier);
return new MediaContainerDetectionResult(this, new AudioTrackInfo(reference.title != null ? reference.title : MediaContainerDetection.UNKNOWN_TITLE, MediaContainerDetection.UNKNOWN_ARTIST, Long.MAX_VALUE, reference.identifier, true, reference.identifier));
}
use of com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo in project lavaplayer by sedmelluq.
the class FlacContainerProbe method probe.
@Override
public MediaContainerDetectionResult probe(AudioReference reference, SeekableInputStream inputStream) throws IOException {
if (!checkNextBytes(inputStream, FlacFileLoader.FLAC_CC)) {
return null;
}
log.debug("Track {} is a FLAC file.", reference.identifier);
FlacTrackInfo trackInfo = new FlacFileLoader(inputStream).parseHeaders();
return new MediaContainerDetectionResult(this, new AudioTrackInfo(defaultOnNull(trackInfo.tags.get(TITLE_TAG), UNKNOWN_TITLE), defaultOnNull(trackInfo.tags.get(ARTIST_TAG), UNKNOWN_ARTIST), trackInfo.duration, reference.identifier, false, reference.identifier));
}
use of com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo in project lavaplayer by sedmelluq.
the class Mp3ContainerProbe method probe.
@Override
public MediaContainerDetectionResult probe(AudioReference reference, SeekableInputStream inputStream) throws IOException {
if (!checkNextBytes(inputStream, ID3_TAG)) {
byte[] frameHeader = new byte[4];
Mp3FrameReader frameReader = new Mp3FrameReader(inputStream, frameHeader);
if (!frameReader.scanForFrame(STREAM_SCAN_DISTANCE, false)) {
return null;
}
inputStream.seek(0);
}
log.debug("Track {} is an MP3 file.", reference.identifier);
Mp3TrackProvider file = new Mp3TrackProvider(null, inputStream);
try {
file.parseHeaders();
return new MediaContainerDetectionResult(this, new AudioTrackInfo(defaultOnNull(file.getIdv3Tag(TITLE_TAG), reference.title != null ? reference.title : UNKNOWN_TITLE), defaultOnNull(file.getIdv3Tag(ARTIST_TAG), UNKNOWN_ARTIST), file.getDuration(), reference.identifier, !file.isSeekable(), reference.identifier));
} finally {
file.close();
}
}
use of com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo in project lavaplayer by sedmelluq.
the class BeamAudioSourceManager method loadItem.
@Override
public AudioItem loadItem(DefaultAudioPlayerManager manager, AudioReference reference) {
String streamName = getChannelNameFromUrl(reference.identifier);
if (streamName == null) {
return null;
}
JsonBrowser channelInfo = fetchStreamChannelInfo(streamName);
if (channelInfo == null) {
return AudioReference.NO_TRACK;
} else {
String displayName = channelInfo.get("name").text();
String id = channelInfo.get("id").text();
if (displayName == null || id == null) {
throw new IllegalStateException("Expected id and name fields from Beam channel info.");
}
return new BeamAudioTrack(new AudioTrackInfo(displayName, streamName, Long.MAX_VALUE, id + "|" + streamName + "|" + reference.identifier, true, "https://beam.pro/" + streamName), this);
}
}
Aggregations