Safe Haskell | None |
---|
Interface to initialize FFmpeg, decode video files, encode video files, and convert decoded image frames to JuicyPixels images.
- initFFmpeg :: IO ()
- frameReader :: (MonadIO m, Error e, MonadError e m) => FilePath -> m (IO (Maybe AVFrame), IO ())
- frameReaderT :: (Functor m, MonadIO m, Error e, MonadError e m) => FilePath -> m (MaybeT IO AVFrame, IO ())
- frameReaderTime :: (MonadIO m, Error e, MonadError e m) => FilePath -> m (IO (Maybe (AVFrame, Double)), IO ())
- frameReaderTimeT :: (Functor m, MonadIO m, Error e, MonadError e m) => FilePath -> m (MaybeT IO (AVFrame, Double), IO ())
- data EncodingParams = EncodingParams {}
- defaultParams :: CInt -> CInt -> EncodingParams
- frameWriter :: EncodingParams -> FilePath -> IO (Maybe (Vector CUChar) -> IO ())
- toJuicy :: AVFrame -> IO (Maybe DynamicImage)
- toJuicyT :: AVFrame -> MaybeT IO DynamicImage
- saveJuicy :: FilePath -> AVFrame -> IO ()
- module Codec.FFmpeg.Types
- module Codec.FFmpeg.Enums
Initialization
initFFmpeg :: IO ()Source
Initialize FFmpeg by registering all known codecs. This must be called before using other FFmpeg functions.
Decoding
frameReader :: (MonadIO m, Error e, MonadError e m) => FilePath -> m (IO (Maybe AVFrame), IO ())Source
Read RGB frames from a video stream.
frameReaderT :: (Functor m, MonadIO m, Error e, MonadError e m) => FilePath -> m (MaybeT IO AVFrame, IO ())Source
Read RGB frames with the result in the MaybeT
transformer.
frameReaderT = fmap (first MaybeT) . frameReader
frameReaderTime :: (MonadIO m, Error e, MonadError e m) => FilePath -> m (IO (Maybe (AVFrame, Double)), IO ())Source
Read time stamped RGB frames from a video stream. Time is given in seconds from the start of the stream.
frameReaderTimeT :: (Functor m, MonadIO m, Error e, MonadError e m) => FilePath -> m (MaybeT IO (AVFrame, Double), IO ())Source
Read time stamped RGB frames with the result in the MaybeT
transformer.
frameReaderT = fmap (first MaybeT) . frameReader
Encoding
data EncodingParams Source
Minimal parameters describing the desired video output.
defaultParams :: CInt -> CInt -> EncodingParamsSource
Use default parameters for a video of the given width and height. The output format is determined by the output file name.
frameWriter :: EncodingParams -> FilePath -> IO (Maybe (Vector CUChar) -> IO ())Source
Open a target file for writing a video stream. The function
returned may be used to write RGB images of the resolution given by
the provided EncodingParams
. The function will convert the
supplied RGB frame to YUV (specifically, yuv420p
) before encoding
the image to the video stream. If this function is applied to
Nothing
, then the output stream is closed. Note that Nothing
must be provided to properly terminate video encoding.
JuicyPixels interop
toJuicy :: AVFrame -> IO (Maybe DynamicImage)Source
Convert an AVFrame
to a DynamicImage
.
toJuicyT :: AVFrame -> MaybeT IO DynamicImageSource
Convert an AVFrame
to a DynamicImage
with the result in the
MaybeT
transformer.
toJuicyT = MaybeT . toJuicy
saveJuicy :: FilePath -> AVFrame -> IO ()Source
Save an AVFrame
to a PNG file on disk assuming the frame could
be converted to a DynamicImage
using toJuicy
.
Types and Enums
module Codec.FFmpeg.Types
module Codec.FFmpeg.Enums