- All Implemented Interfaces:
public final class OggFileAudioBufferSink extends ForwardingAudioSinkA sink for audio buffers that writes output audio as .ogg files with a given path prefix. When new audio data is handled after flushing the audio packetizer, a counter is incremented and its value is appended to the output file name.
Note: if writing to external storage it's necessary to grant the
Nested Class Summary
Fields Modifier and Type Field Description
SAMPLE_RATEOpus streams are always 48000 Hz.
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
flush()Flushes the sink, after which it is ready to receive buffers from a new playback position.
handleBuffer(ByteBuffer buffer, long presentationTimeUs, int encodedAccessUnitCount)Attempts to process data from a
ByteBuffer, starting from its current position and ending at its limit (exclusive).
reset()Resets the sink, releasing any resources that it currently holds.
Methods inherited from class com.google.android.exoplayer2.audio.ForwardingAudioSink
configure, disableTunneling, enableTunnelingV21, experimentalFlushWithoutAudioTrackRelease, getAudioAttributes, getCurrentPositionUs, getFormatSupport, getPlaybackParameters, getSkipSilenceEnabled, handleDiscontinuity, hasPendingData, isEnded, pause, play, playToEndOfStream, setAudioAttributes, setAudioSessionId, setAuxEffectInfo, setListener, setOutputStreamOffsetUs, setPlaybackParameters, setPlayerId, setPreferredDevice, setSkipSilenceEnabled, setVolume, supportsFormat
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public static final int SAMPLE_RATEOpus streams are always 48000 Hz.
- See Also:
- Constant Field Values
public void flush()Flushes the sink, after which it is ready to receive buffers from a new playback position.
The audio session may remain active until
public void reset()Resets the sink, releasing any resources that it currently holds.
public boolean handleBuffer(ByteBuffer buffer, long presentationTimeUs, int encodedAccessUnitCount) throws AudioSink.InitializationException, AudioSink.WriteExceptionAttempts to process data from a
ByteBuffer, starting from its current position and ending at its limit (exclusive). The position of the
ByteBufferis advanced by the number of bytes that were handled.
AudioSink.Listener.onPositionDiscontinuity()will be called if
presentationTimeUsis discontinuous with the last buffer handled since the last reset.
Returns whether the data was handled in full. If the data was not handled in full then the same
ByteBuffermust be provided to subsequent calls until it has been fully consumed, except in the case of an intervening call to
AudioSink.configure(Format, int, int)that causes the sink to be flushed).
- Specified by:
buffer- The buffer containing audio data.
presentationTimeUs- The presentation timestamp of the buffer in microseconds.
encodedAccessUnitCount- The number of encoded access units in the buffer, or 1 if the buffer contains PCM audio. This allows batching multiple encoded access units in one buffer.
- Whether the buffer was handled fully.
AudioSink.InitializationException- If an error occurs initializing the sink.
AudioSink.WriteException- If an error occurs writing the audio data.