com.phronemophobic.clj-media

audio-format

(audio-format {:keys [channel-layout sample-format sample-rate], :as format})

Convenience function for returning an audio format.

file

(file f)

Returns media with the contents of the file f.

f should be a value that can be coerced to a file via clojure.java.io/file.

filter-audio

(filter-audio media)

Returns media with only audio streams from media.

filter-media-types

(filter-media-types media-types media)

Returns media with only types in media-types.

filter-video

(filter-video media)

Returns media with only video streams from media.

frames

(frames media)(frames media stream)(frames media stream opts)

Returns a reducible of frames of media.

Stream can either be:

  • an index
  • :audio, which selects the first audio stream.
  • :video, which selects the first video stream.

opts is an optional map with the following keys: :format A media format description as returned by audio-format or video-format. The frames will be transcoded to the provided format if not already in that format.

list-codecs

(list-codecs)

Returns a collection of available codecs.

make-frame

(make-frame {:keys [bytes format time-base key-frame? pts], :as m})

Returns an opaque, raw frame for creating media with make-media.

The following keys are required: :format: map describing the format returned by audio-format or video-format. :bytes: a byte array with the raw data adhering to :format. :time-base: a ratio of that pts will be specified in. :time-base typically matches the frame rate for video or sample rate for audio.

          `time-base` can specified using 3 different methods:
           - as a ratio: (eg. 1/60)
           - as a 2 element vector of [numerator, denominator]: (eg. [1 60])
           - as an integer. It will be treated as 1/time-base: (eg. 60).

:pts: the presentation timestamp in :time-base units. (time in seconds) = pts * time-base.

The following keys are optional: :key-frame?: specifies whether the current frame should be a key frame.

make-media

(make-media format frames)

Returns media using raw data found in frames. frames must be a sequence of frames created with make-frame.

pixel-formats

All possibel pixel formats.

play-audio

(play-audio media)

Plays the first audio stream in media.

probe

(probe f)

Reads the file f and returns metadata about the media's format.

f Any value that can be coerced to a file via clojure.java.io/as-file.

remove-audio

(remove-audio media)

Returns media without audio streams from media.

remove-media-types

(remove-media-types media-types media)

Returns media without any types in media-types.

remove-video

(remove-video media)

Returns media without video streams from media.

sample-formats

All possible sample formats.

union

(union & medias)

Returns media that combines all the streams from medias.

video-format

(video-format {:keys [pixel-format], :as format})

Convenience function for returning an audio format.

write!

(write! media dest)(write! media dest opts)

Write media to the path given by dest.

opts can have the following options:

:audio-format A map with the following keys: :sample-rate: See :sample-rates found in list-codecs. :sample-format: See :sample-formats found in list-codecs. :channel-layout: See :name of :channel-layouts found in list-codecs. "stereo" and "mono" are typical values. :codec {:id codec-id}

:video-format A map with the following keys. :pixel-format: See :pixel-formats found in list-codecs. :gop-size: optional the number of pictures in a group of pictures, or 0 for intra_only. :codec: A codec in the form, {:id codec-id}. See list-codecs.