package org.jcodec.containers.imgseq; import static java.lang.String.format; import static org.jcodec.common.tools.MainUtils.tildeExpand; import java.io.IOException; import org.jcodec.common.AudioCodecMeta; import org.jcodec.common.Codec; import org.jcodec.common.Muxer; import org.jcodec.common.MuxerTrack; import org.jcodec.common.VideoCodecMeta; import org.jcodec.common.io.NIOUtils; import org.jcodec.common.logging.Logger; import org.jcodec.common.model.Packet; /** * A muxer and muxer track that simply saves each buffer as a file. * @author Stanislav Vitvitskiy */ public class ImageSequenceMuxer implements Muxer, MuxerTrack { private String fileNamePattern; private int frameNo; public ImageSequenceMuxer(String fileNamePattern) { this.fileNamePattern = fileNamePattern; } @Override public void addFrame(Packet packet) throws IOException { NIOUtils.writeTo(packet.getData(), tildeExpand(format(fileNamePattern, frameNo++))); } @Override public MuxerTrack addVideoTrack(Codec codec, VideoCodecMeta meta) { return this; } @Override public MuxerTrack addAudioTrack(Codec codec, AudioCodecMeta meta) { Logger.warn("Audio is not supported for image sequence muxer."); return null; } @Override public void finish() throws IOException { // NOP } }