Class ImageSequenceWriter

java.lang.Object
org.monte.media.imgseq.ImageSequenceWriter
All Implemented Interfaces:
AutoCloseable, MovieWriter, Multiplexer

public class ImageSequenceWriter extends Object implements MovieWriter
ImageSequenceWriter.
Author:
Werner Randelshofer
  • Constructor Details

    • ImageSequenceWriter

      public ImageSequenceWriter()
  • Method Details

    • addTrack

      public int addTrack(Format format) throws IOException
      Description copied from interface: MovieWriter
      Adds a track to the writer for a suggested input format.

      The format should at least specify the desired FormatKeys.MediaType. The actual input format is a refined version of the suggested format. For example, if a MovieWriter only supports fixed frame rate video, then the MovieWriter will extend the format with that information.

      If the suggested input format is not compatible, then an IOException is thrown. For example, if a MovieWriter only supports fixed frame rate video, but a format with variable frame rate was requested.

      Specified by:
      addTrack in interface MovieWriter
      Parameters:
      format - The desired input format of the track. The actual input format may be a refined version of the specified format.
      Returns:
      The track number.
      Throws:
      IOException
    • getFileFormat

      public Format getFileFormat() throws IOException
      Description copied from interface: MovieWriter
      Returns the file format.
      Specified by:
      getFileFormat in interface MovieWriter
      Throws:
      IOException
    • getTrackCount

      public int getTrackCount()
      Description copied from interface: MovieWriter
      Returns the number of tracks.
      Specified by:
      getTrackCount in interface MovieWriter
    • getFormat

      public Format getFormat(int track)
      Description copied from interface: MovieWriter
      Returns the media format of the specified track. This is a refined version of the format that was requested when the track was added. See MovieWriter.addTrack(org.monte.media.av.Format).
      Specified by:
      getFormat in interface MovieWriter
      Parameters:
      track - Track number.
      Returns:
      The media format of the track.
    • addVideoTrack

      public int addVideoTrack(File dir, String filenameFormatter, int width, int height)
      Adds a video track.
      Parameters:
      dir - The output directory.
      filenameFormatter - a format string for a filename with a number, for example "frame_%d0000$.png";
      width - the image width
      height - the image height
      Returns:
      Returns the track index.
      Throws:
      IllegalArgumentException - if the width or the height is smaller than 1.
    • write

      public void write(int track, BufferedImage image, long duration) throws IOException
      Throws:
      IOException
    • write

      public void write(int track, Buffer buf) throws IOException
      Description copied from interface: MovieWriter
      Writes a sample into the specified track. Does nothing if the discard-flag in the buffer is set to true.
      Specified by:
      write in interface MovieWriter
      Specified by:
      write in interface Multiplexer
      Parameters:
      track - The track number.
      buf - The buffer containing the sample data.
      Throws:
      IOException - if the write fails
    • writeSample

      public void writeSample(int track, byte[] data, int off, int len, long duration, boolean isSync) throws IOException
      Throws:
      IOException
    • writeSamples

      public void writeSamples(int track, int sampleCount, byte[] data, int off, int len, long sampleDuration, boolean isSync) throws IOException
      Throws:
      IOException
    • close

      public void close() throws IOException
      Description copied from interface: MovieWriter
      Closes the writer.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface MovieWriter
      Specified by:
      close in interface Multiplexer
      Throws:
      IOException - if close fails
    • isVFRSupported

      public boolean isVFRSupported()
    • isDataLimitReached

      public boolean isDataLimitReached()
      Description copied from interface: MovieWriter
      Returns true if the limit for media data has been reached. If this limit is reached, no more samples should be added to the movie.

      This limit is imposed by data structures of the movie file which will overflow if more samples are added to the movie.

      FIXME - Maybe replace by getCapacity():long.

      Specified by:
      isDataLimitReached in interface MovieWriter
    • getDuration

      public Rational getDuration(int track)
      Returns the sampleDuration of the track in seconds.
      Specified by:
      getDuration in interface MovieWriter
    • isEmpty

      public boolean isEmpty(int track)
      Description copied from interface: MovieWriter
      Returns true if the specified track has no samples.
      Specified by:
      isEmpty in interface MovieWriter