Membrane Camera Capture Plugin
This plugin can be used to capture video stream from an input device.
It is part of Membrane Multimedia Framework.
Installation
Add the following line to your deps in mix.exs. Run mix deps.get.
{:membrane_camera_capture_plugin, "~> 0.6.0"}This package depends on the ffmpeg libraries. The precompiled builds will be pulled and linked automatically. However, should there be any problems, consider installing it manually.
Manual instalation of dependencies
Ubuntu
sudo apt-get install ffmpegArch/Manjaro
pacman -S ffmpegMacOS
brew install ffmpegSample Usage
Dependencies:
def deps do
[
{:membrane_camera_capture_plugin, "~> 0.5.0"}
{:membrane_h264_ffmpeg_plugin, "~> 0.21"},
{:membrane_file_plugin, "~> 0.10"},
{:membrane_ffmpeg_swscale_plugin, "~> 0.10"}
]
enddefmodule Example do
use Membrane.Pipeline
@impl true
def handle_init(_ctx, _options) do
structure =
child(:source, Membrane.CameraCapture)
|> child(:converter, %Membrane.FFmpeg.SWScale.PixelFormatConverter{format: :I420})
|> child(:encoder, Membrane.H264.FFmpeg.Encoder)
|> child(:sink, %Membrane.File.Sink{location: "output.h264"})
{[spec: structure], %{}}
end
endTesting
Running this manual test, you should be able to record a 5-sec long video stream from your webcam and then play it using ffplay (you need to have ffmpeg installed).
To run manual tests, you need to install dependencies:
$ mix deps.getAnd run manual (you observe the result and decide whether it works) tests:
$ mix test --include manualIf run successfully, you should be able to see video recorded by your camera.
You might be asked to grant access to your camera, as some operating systems require that
In case of the absence of a physical camera, it is necessary to use a virtual camera (e.g. OBS, see how to set up the virtual camera in OBS)
Copyright and License
Copyright 2022, Software Mansion
Licensed under the Apache License, Version 2.0