polysemy-video-0.1.1.0

LicenseMIT
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Polysemy.Video

Description

Experimental Video processing DSL for Polysemy.

Synopsis

Documentation

data Time Source #

Timestamp data type.

Constructors

Time 

Fields

Instances
Eq Time Source # 
Instance details

Defined in Polysemy.Video

Methods

(==) :: Time -> Time -> Bool #

(/=) :: Time -> Time -> Bool #

Ord Time Source # 
Instance details

Defined in Polysemy.Video

Methods

compare :: Time -> Time -> Ordering #

(<) :: Time -> Time -> Bool #

(<=) :: Time -> Time -> Bool #

(>) :: Time -> Time -> Bool #

(>=) :: Time -> Time -> Bool #

max :: Time -> Time -> Time #

min :: Time -> Time -> Time #

Show Time Source # 
Instance details

Defined in Polysemy.Video

Methods

showsPrec :: Int -> Time -> ShowS #

show :: Time -> String #

showList :: [Time] -> ShowS #

data Range Source #

Interval of two timestamps.

Constructors

Range 

Fields

Instances
Eq Range Source # 
Instance details

Defined in Polysemy.Video

Methods

(==) :: Range -> Range -> Bool #

(/=) :: Range -> Range -> Bool #

Ord Range Source # 
Instance details

Defined in Polysemy.Video

Methods

compare :: Range -> Range -> Ordering #

(<) :: Range -> Range -> Bool #

(<=) :: Range -> Range -> Bool #

(>) :: Range -> Range -> Bool #

(>=) :: Range -> Range -> Bool #

max :: Range -> Range -> Range #

min :: Range -> Range -> Range #

Show Range Source # 
Instance details

Defined in Polysemy.Video

Methods

showsPrec :: Int -> Range -> ShowS #

show :: Range -> String #

showList :: [Range] -> ShowS #

data ClipProcess m a where Source #

 

Constructors

ExtractAudio :: Path b File -> [(Range, Path b' File)] -> ClipProcess m () 
ExtractClips :: Path b File -> [(Range, Path b' File)] -> ClipProcess m () 
ExtractFrames :: Path b File -> [(Time, Path b' File)] -> ClipProcess m () 

extractFrames :: forall r b b'. MemberWithError ClipProcess r => Path b File -> [(Time, Path b' File)] -> Sem r () Source #

extractClips :: forall r b b'. MemberWithError ClipProcess r => Path b File -> [(Range, Path b' File)] -> Sem r () Source #

extractAudio :: forall r b b'. MemberWithError ClipProcess r => Path b File -> [(Range, Path b' File)] -> Sem r () Source #

timeFF :: Time -> Text Source #

Format a Timestamp to ffmpeg's format 00:00:00.000.

seekFF :: Time -> [Text] Source #

"-ss x" where x is a timestamp.

rangeFF :: Range -> Path b File -> [Text] Source #

"-ss x -to y output".

frameFF :: Time -> Path b File -> [Text] Source #

"-ss x -vframes 1 output"

runffmpeg :: MonadIO m => [Text] -> m () Source #

"ffmpeg -y" followed by some arguments.

mktreeFP :: MonadIO m => Path b Dir -> m () Source #

"mkdir -p" with a `Path b Dir`.

interpretFFMpegCli :: Member (Embed IO) effs => Sem (ClipProcess ': effs) a -> Sem effs a Source #

Interpret ClipProcess by running it against ffmpeg on the command line.

interpretFFMpegNoop :: Member (Embed IO) effs => Sem (ClipProcess ': effs) a -> Sem effs a Source #

Interpret ClipProcess by printing out the command it would have run to the terminal.