Skip to content

fun-o-form/java-stream-player-fork

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

186 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fork

This is a fork of goxr3plus/java-stream-player. No code chagnes were made. It is identical except for the following:

  1. Upstream pushes artifacts to jitpack.io, which has proven very unreliable. This fork builds without any reliance on jitpack.io.
  2. Upstream forked net.jthink.jaudiotagger 2.2.7 to make it easier to build with maven. I eliminated the usage of that fork as net.jthink.jaudiotagger 3.0.0 already successfully builds with maven and uploads to maven central.
  3. Eliminated unit tests as the paths to the test mp3 files wasn't working on Github workflows. Not worth troubleshooting.
  4. Eliminated javadoc step because the default config now fails on undocumented variables of which this project has many.

Builds of this repo do not push to a central maven repository. It is expected that users who need this fork as a dependency will instead build it from source during their app's build.

Upstream usage:

<repositories>
    <repository>
       <id>jitpack.io</id>
       <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
   <groupId>com.github.goxr3plus</groupId>
   <artifactId>java-stream-player</artifactId>
   <version>10.0.0</version>
</dependency>

Now becomes this with the fork:

<dependency>
   <groupId>fun-o-form</groupId>
   <artifactId>java-stream-player-fork</artifactId>
   <version>10.0.0</version>
</dependency>

ko-fi


Java Stream Player ( Library )

🎶

Java Audio Controller Library with (skip,skipTo,start,stop,pause,play,restart) This is the next version of JavaZoom BasicPlayer


Latest Version HitCount Patreon donate button PayPal donate button

What audio formats it supports?

  • Fully Supported ✔️
    • WAV
    • MP3
  • Partially not full tested 🚧
    • OGG VORBIS
    • FLAC
    • MONKEY's AUDIO
    • SPEEX
  • Not Supported Yet ❌
    • AAC
    • THEORA
    • ... all the others

Step 1. Add the JitPack repository to your build file

https://jitpack.io/private#goxr3plus/java-stream-player

<repositories>
	<repository>
	   <id>jitpack.io</id>
	   <url>https://jitpack.io</url>
        </repository>
</repositories>

Step 2. Add the dependency

<dependency>
   <groupId>com.github.goxr3plus</groupId>
   <artifactId>java-stream-player</artifactId>
   <version>9.0.4</version>
</dependency>

Example usage :

import java.io.File;
import java.util.Map;

import com.goxr3plus.streamplayer.enums.Status;
import com.goxr3plus.streamplayer.stream.StreamPlayer;
import com.goxr3plus.streamplayer.stream.StreamPlayerListener;
import com.goxr3plus.streamplayer.stream.StreamPlayerEvent;
import com.goxr3plus.streamplayer.stream.StreamPlayerException;

/**
 * @author GOXR3PLUS
 *
 */
public class Main extends StreamPlayer implements StreamPlayerListener {

    private final String audioAbsolutePath = "Logic - Ballin [Bass Boosted].mp3";

    /**
     * Constructor
     */
    public Main() {

        try {

            // Register to the Listeners
            addStreamPlayerListener(this);

            // Open a File
            // open(new File("...")) //..Here must be the file absolute path
            // open(INPUTSTREAM)
            // open(AUDIOURL)

            // Example
            open(new File(audioAbsolutePath));

            // Seek by bytes
            // seekBytes(500000L);

            // Seek +x seconds starting from the current position
            seekSeconds(15);
            seekSeconds(15);

            /* Seek starting from the begginning of the audio */
            // seekTo(200);

            // Play it
            play();
            // pause();

        } catch (final Exception ex) {
            ex.printStackTrace();
        }

    }

    @Override
    public void opened(final Object dataSource, final Map<String, Object> properties) {

    }

    @Override
    public void progress(final int nEncodedBytes, final long microsecondPosition, final byte[] pcmData,
            final Map<String, Object> properties) {

        // System.out.println("Encoded Bytes : " + nEncodedBytes);

        // Current time position in seconds:) by GOXR3PLUS STUDIO
        // This is not the more precise way ...
        // in XR3Player i am using different techniques .
        // https://github.com/goxr3plus/XR3Player
        // Just for demostration purposes :)
        // I will add more advanced techniques with milliseconds , microseconds , hours
        // and minutes soon

        // .MP3 OR .WAV
        final String extension = "mp3"; // THE SAMPLE Audio i am using is .MP3 SO ... :)

        long totalBytes = getTotalBytes();
        if ("mp3".equals(extension) || "wav".equals(extension)) {

            // Calculate the progress until now
            double progress = (nEncodedBytes > 0 && totalBytes > 0) ? (nEncodedBytes * 1.0f / totalBytes * 1.0f)
                    : -1.0f;
            // System.out.println(progress*100+"%");

            System.out.println("Seconds  : " + (int) (microsecondPosition / 1000000) + " s " + "Progress: [ "
                    + progress * 100 + " ] %");

            // .WHATEVER MUSIC FILE*
        } else {
            // System.out.println("Current time is : " + (int) (microsecondPosition /
            // 1000000) + " seconds");
        }

    }

    @Override
    public void statusUpdated(final StreamPlayerEvent streamPlayerEvent) {

        // Player status
        final Status status = streamPlayerEvent.getPlayerStatus();
        // System.out.println(streamPlayerEvent.getPlayerStatus());

        // Examples

        if (status == Status.OPENED) {

        } else if (status == Status.OPENING) {

        } else if (status == Status.RESUMED) {

        } else if (status == Status.PLAYING) {

        } else if (status == Status.STOPPED) {

        } else if (status == Status.SEEKING) {

        } else if (status == Status.SEEKED) {

        }

        // etc... SEE XR3PLAYER https://github.com/goxr3plus/XR3Player for advanced
        // examples
    }

    public static void main(final String[] args) {
        new Main();
    }

}

Java Audio Tutorials and API's by GOXR3PLUS STUDIO


Looking for a ffmpeg wrapper in Java ?

Check this -> jave2 , currently updating it :)


Originally being developed for XR3Player Application

Are you curious on how to make spectrum analysers in Java? Well the below tutorials plus the above code are the solution :)

I hope you enjoy these tutorials and actually you can watch the youtube videos about them below:

Java Spectrum Analyser Tutorial

About

🌌Java Advanced Audio Controller Library (WAV, AU, AIFF, MP3, OGG VORBIS, FLAC, MONKEY's AUDIO and SPEEX audio formats )

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%