Запись экрана ffmpeg с наложением камеры на OSX
Я хотел бы использовать ffmpeg для записи моего рабочего стола, а также мою камеру в качестве наложения поверх рабочего стола.
Так что в основном у меня будет два входных источника, которые нужно записать
$ ffmpeg -f avfoundation -list_devices true -i ''
[AVFoundation input device @ 0x7fded1c223e0] AVFoundation video devices:
[AVFoundation input device @ 0x7fded1c223e0] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fded1c223e0] [1] Capture screen 0
[AVFoundation input device @ 0x7fded1c223e0] AVFoundation audio devices:
[AVFoundation input device @ 0x7fded1c223e0] [0] Built-in Microphone
Исходя из вышесказанного, мне нужно [0] FaceTime HD Camera в качестве наложения и [1] Capture screen 0 в качестве основного видео.
Это вообще возможно?
ОБНОВЛЕНИЕ (2015-10-06):
Я нашел следующую команду от ffscreencast:
ffmpeg \
-f avfoundation -i "1" \
-f avfoundation -r 30 -video_size 640x480 -i "0" \
-c:v libx264 -crf 0 -preset ultrafast \
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' "out.mkv"
К сожалению, выход имеет довольно медленную частоту кадров (i7 Macbook Pro 2014)
Output #0, matroska, to 'out.mkv':
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), yuv420p, 3840x2400, q=-1--1, 1000k fps, 1k tbn, 1000k tbc (default)
Metadata:
encoder : Lavc56.60.100 libx264
Stream mapping:
Stream #0:0 (rawvideo) -> overlay:main
Stream #1:0 (rawvideo) -> overlay:overlay
overlay -> Stream #0:0 (libx264)
frame= 756 fps=9.1 q=-1.0 Lsize= 193660kB time=00:01:21.86 bitrate=19378.5kbits/s
Press [q] to stop, [?] for help
Кто-нибудь знает, как получить более высокую частоту кадров? Моя камера способна записывать только со скоростью 30 кадров в секунду, но на выходе получается только около 9 кадров. Почему разница?
1 ответ
Для меня это работает, ffmpeg версии 2.8:
ffmpeg -thread_queue_size 50 \
-f avfoundation -framerate 30 -i "1" \
-thread_queue_size 50 -f avfoundation -framerate 30 -video_size 640x480 -i "0" \
-c:v libx264 -crf 18 -preset ultrafast \
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -r 30 ~/Desktop/out.mkv
ПРИМЕЧАНИЕ: я прочитал в документации, что опция '-r' предназначена для вывода, поэтому она у вас не в том месте в вашей команде. Значение '-crf', которое вы указываете, кажется преувеличенным, если в документации сказано, что значение 18 - это видео без потерь качества. Вам также, вероятно, понадобится поиграть со значением '-thread_queue_size' для вашей конкретной системы.