2015-09-30 7 views
7

Я хотел бы использовать ffmpeg для записи моего рабочего стола, а также моей камеры в качестве наложения поверх рабочего стола.Запись экрана ffmpeg с наложением камеры на OSX

Поэтому в основном я буду иметь два входных источников, которые должны быть записаны

$ 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 камеры, как наложение и [1] экрана Захват 0 в качестве основного видео ,

Возможно ли это?

UPDATE (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 кадров. Почему разница?

+0

У ffmpeg есть фильтр наложения, поэтому я предполагаю, что это так. – rogerdpack

+0

Да, я только что нашел его, но все еще медленно. – lockdoc

+0

Hi lockdoc, который использует OS X версия u. Я использую 10.10.5, а команда «ffmpeg -f avfoundation -list_devices true -i» выводит только 1 устройство ввода (Камера). – TuanAnh207

ответ

9

Для меня это работает, 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» для вашей конкретной системы.

+0

Спасибо, это было полезно. – baltasvejas

+0

Это сработало отлично. Спасибо Фелипе. – muammar