Plugin providing element for converting frame rate of raw video stream.
It is part of Membrane Multimedia Framework.
The package can be installed by adding membrane_framerate_converter_plugin
to your list of dependencies in mix.exs
:
def deps do
[
{:membrane_framerate_converter_plugin, "~> 0.8.2"}
]
end
Element converts video to target constant frame rate, by dropping and duplicating frames as necessary (input video may have constant or variable frame rate).
Example converting h264 video from 10 to 2 fps.
defmodule Pipeline do
use Membrane.Pipeline
alias Membrane.H264.FFmpeg.{Decoder, Encoder}
alias Membrane.H264.Parser
alias Membrane.File.{Sink, Source}
@impl true
def handle_init(_ctx, filename) do
structure =
child(file: %Source{chunk_size: 40_960, location: filename})
|> child(parser: %Parser{generate_best_effort_timestamps: %{framerate: {10, 1}}})
|> child(decoder: Decoder)
|> child(converter: %Membrane.FramerateConverter{framerate: {2, 1}})
|> child(encoder: Encoder)
|> child(sink: %Sink{location: "output.h264"})
{[spec: structure], %{}}
end
end
Copyright 2020, Software Mansion
Licensed under the Apache License, Version 2.0