Playing H264 video from a file
File.cd(__DIR__)
Logger.configure(level: :warning)
Mix.install([
{:membrane_core, "~> 1.0"},
{:membrane_kino_plugin, path: ".."},
{:membrane_file_plugin, "~> 0.17.0"},
{:membrane_h26x_plugin, "~> 0.10.2"}
])
Pipeline definition
import Membrane.ChildrenSpec
alias Membrane.{
File,
RawVideo,
Kino
}
alias Membrane.H264.Parser, as: H264Parser
alias Membrane.RCPipeline
video_filepath = "./res/input_baseline.h264"
kino = Membrane.Kino.Player.new(video: true)
structure =
child(:file_input, %File.Source{location: video_filepath})
|> child(:parser, %H264Parser{generate_best_effort_timestamps: %{framerate: {60, 1}}})
|> via_in(:video)
|> child(:video_player, %Kino.Player.Sink{kino: kino})
:ok
Playing pipeline
pipeline = RCPipeline.start!()
RCPipeline.exec_actions(pipeline, spec: structure)
kino