Class Capture

  • All Implemented Interfaces:
    EventQuequeListener, java.lang.Runnable, java.util.EventListener

    public class Capture
    extends java.lang.Object
    implements java.lang.Runnable, EventQuequeListener
    Audio capture engine.
    Author:
    klausj
    • Field Detail

      • DEF_AUDIO_FILE_TYPE

        public static javax.sound.sampled.AudioFileFormat.Type DEF_AUDIO_FILE_TYPE
      • DEF_AUDIO_FORMAT

        public static javax.sound.sampled.AudioFormat DEF_AUDIO_FORMAT
      • DEF_AUDIO_FILE_FORMAT

        public static javax.sound.sampled.AudioFileFormat DEF_AUDIO_FILE_FORMAT
    • Constructor Detail

      • Capture

        public Capture()
        Create capture engine.
      • Capture

        public Capture​(javax.sound.sampled.Mixer device)
        Create capture engine which will capture audio data from given device.
        Parameters:
        device - audio device to use
      • Capture

        public Capture​(javax.sound.sampled.Mixer device,
                       java.io.File recFile,
                       javax.sound.sampled.AudioFileFormat aff)
        Create capture engine.
        Parameters:
        device - audio device to use
        recFile - recordingfile
        aff - audio file format
    • Method Detail

      • isUseTempFile

        public boolean isUseTempFile()
      • setUseTempFile

        public void setUseTempFile​(boolean useTempFile)
      • setAudioFileFormat

        public void setAudioFileFormat​(javax.sound.sampled.AudioFileFormat aff)
        Set audio file format.
        Parameters:
        aff - audio file format
      • getAudioFileFormat

        public javax.sound.sampled.AudioFileFormat getAudioFileFormat()
        Get audio file format.
        Returns:
        audio file format
      • setAudioFormat

        public void setAudioFormat​(javax.sound.sampled.AudioFormat af)
        Set audio format.
        Parameters:
        af - audio format.
      • getAudioFormat

        public javax.sound.sampled.AudioFormat getAudioFormat()
        Get audio format.
        Returns:
        audio format
      • getMinLineBufferSize

        public java.lang.Integer getMinLineBufferSize()
        Get minimum line bugffer size.
        Returns:
        minimum line buffer size or null if not available
      • getMaxLineBufferSize

        public java.lang.Integer getMaxLineBufferSize()
        Get maximum line bugffer size.
        Returns:
        maximum line buffer size or null if not available
      • start

        public void start()
        Start capturing or recording.
      • getMaxFrameLength

        public long getMaxFrameLength()
        Get maximum recording length in frames.
        Returns:
        length in frames
      • pause

        public void pause()
        Pause capturing/recording. If already paused the engine will be restarted.
      • getFramePosition

        public long getFramePosition()
        Get already captured frames.
        Returns:
        frames captured/recorded
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable
      • addCaptureListener

        public void addCaptureListener​(CaptureListener cl)
        Add capture listener.
        Parameters:
        cl - capture listener
      • removeCaptureListener

        public void removeCaptureListener​(CaptureListener cl)
        Remove capture listener.
        Parameters:
        cl - capture listener
      • setMeasureLevel

        public void setMeasureLevel​(boolean b)
        Enable audio level measuring. Default is true.
        Parameters:
        b - true to enable measuring
      • getLevelInfos

        public LevelInfo[] getLevelInfos()
        Get current audio levels. Returns the maximum level of the current audio buffer.
        Returns:
        current audio levels.
      • isRecording

        public boolean isRecording()
        Returns true if recording.
        Returns:
        true if recording
      • isCapturing

        public boolean isCapturing()
        Return true if capturing.
        Returns:
        true if capturing
      • setRecordingFile

        public void setRecordingFile​(java.io.File file)
        Set recording file.
        Parameters:
        file - recording file
      • getRecordingFile

        public java.io.File getRecordingFile()
        Get recording file
        Returns:
        recording file
      • setMixer

        public void setMixer​(javax.sound.sampled.Mixer newCaptureMixer)
        Set the recording device to capture from. The given device will be used if the capture engine is opened the next time.
        Parameters:
        newCaptureMixer - recording device
      • isCaptureOnly

        public boolean isCaptureOnly()
        Returns true if the engine is only capturing, not recording to file.
        Returns:
        true if capturing
      • setCaptureOnly

        public void setCaptureOnly​(boolean captureOnly)
        Set capture only mode. In capture mode no recording file will be written. Capture mode may be used to measure input level without recording.
      • getPreferredBufferSize

        public java.lang.Integer getPreferredBufferSize()
        Get preferred buffer size in bytes.
        Returns:
        preferred buffer size or null if default
      • setPreferredBufferSize

        public void setPreferredBufferSize​(int preferredBufferSize)
        Set the buffer size of this capture engine in bytes.
        Parameters:
        preferredBufferSize -
      • getBufferSize

        public int getBufferSize()
        The actually set buffer size.
        Returns:
        buffer size
      • getPeakLevelHold

        public float[] getPeakLevelHold()
        Get the maximum peak levels of each channel since the line is open.
        Returns:
        array of max peak levels hold
      • resetPeakHold

        public void resetPeakHold()
        Reset the hold peak level maximum.
      • getPreferredLineBufferSize

        public java.lang.Integer getPreferredLineBufferSize()
        Get the preferred audio line buffer size setting.
        Returns:
        preferred audio line buffer size
      • setPreferredLineBufferSize

        public void setPreferredLineBufferSize​(java.lang.Integer preferredLineBufferSize)
        Set the buffer size of the audio line. It is recommended to set this to one second ( @see setPreferredLineBufferSizeMillis(Float) setPreferredLineBufferSizeMillis(Float)), which is the maximum line buffer size under Windows XP to avoid buffer overruns (especially during garbage collector runs). The default setting is to open the line with default JavaSound settings (500ms for Windows).
        Parameters:
        preferredLineBufferSize -
      • getLineBufferSize

        public java.lang.Integer getLineBufferSize()
        Get the last used line buffer size. Returns the last used line buffer size.
        Returns:
        audio line buffer size or null if capture was not started yet
      • getLineBufferSizeSeconds

        public java.lang.Float getLineBufferSizeSeconds()
        Get the last used line buffer size in seconds. Returns the last used line buffer size.
        Returns:
        audio line buffer size or null if capture line was not opened yet
      • isOpen

        public boolean isOpen()
        Return open status.
        Returns:
        false if capture engine is closed
      • getPreferredLineBufferSizeMillis

        public java.lang.Float getPreferredLineBufferSizeMillis()
        Get preferred line buffer size in milliseconds.
        Returns:
        preferred line buffer size in milliseconds or null if not set.
      • setPreferredLineBufferSizeMillis

        public void setPreferredLineBufferSizeMillis​(java.lang.Float preferredLineBufferSizeMillis)
        Set the buffer size of the audio line. It is recommended to set this to one second, which is the maximum line buffer size under Windows XP to avoid buffer overruns (especially during garbage collector runs). The default setting is to open the line with default JavSound settings (500ms for Windows).
        Parameters:
        preferredLineBufferSizeMillis - preferred line buffer size in milliseconds or null for default
      • isUseAWTEventThread

        public boolean isUseAWTEventThread()
        True if generated events will be queued to AWT event queue.
        Returns:
        true if AWT event queue is used
      • setUseAWTEventThread

        public void setUseAWTEventThread​(boolean useAWTEventThread)
        Determines if events should be queued to the AWTEventThread. For GUI applications it is recommended to set this to true, to avoid AWT/Swing deadlocks (Swing is not thread safe).
        Parameters:
        useAWTEventThread -
      • setMaxFrameLength

        public void setMaxFrameLength​(long maxFrameLength)
        Set the maximum length of recording in frames. The capture engine will stop if the amount of frames are recorded.
        Parameters:
        maxFrameLength - maximum recording length in frames
      • main

        public static void main​(java.lang.String[] args)
      • isForceOpening

        public boolean isForceOpening()
      • setForceOpening

        public void setForceOpening​(boolean forceOpening)
      • setPrimaryRecordTarget

        public void setPrimaryRecordTarget​(PrimaryRecordTarget primaryRecordTarget)