Task
I want to be able to record three screens at one time, and record the microphone. Then combine the three recordings and the microphone recording into one output file.
Detection of inputs
The listing of both video and audio inputs can be found by using ffmpeg -f avfoundation -list_devices true -i ""
. This is can be found here.
One Screen Recording
I can record one of my three screens at a time by using ffmpeg -f avfoundation -i "3" -pix_fmt yuv420p -r 25 output.mov
, where the "3"
can be replaced with "1"
or "2"
to individually record one screen for 5 seconds. This is found at recording one screen for a duration of time.
Post Process videos into one screen recording
The most recent version of ffmpeg
provides for combining multiple .mov
files into one "stack". Stacking screen recordings discusses how to post process videos into one output file.
Record audio
The audio of the built in microphone or usb microphone can be recorded using ffmpeg -f avfoundation -i ":1" audiocapture.mp3
. A description of this command can be found at recording audio with ffmpeg.
What I want
The following recorded until I hit q
, with a good quality audio.
---------------------------------
| | |
| 1920 X 1080 | 1920 X 1080 |
| | |
---------------------------------
-----------------
| |
| 2560 X 1600 |
| |
-----------------
Current Progress
This command:
ffmpeg -f avfoundation -i "3" -pix_fmt yuv420p -r 25 -f avfoundation -i "2" -pix_fmt yuv420p -r 25 -f avfoundation -i "1" -pix_fmt yuv420p -r 25 -filter_complex "[0:v][1:v][2:v]xstack=inputs=3:layout=0_0|w0_0|0_h0[v]" -map "[v]" output.mov
results in
I am getting the message Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
, and do not know how to handle this. I also am not recording audio here.