在OSX上使用FFmpeg屏幕录制带有摄像头叠加的功能。

9
我想使用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相机作为叠加层,并将[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帧。为什么会有这样的差异?


FFmpeg确实具有覆盖过滤器,所以我猜它是支持的。 - rogerdpack
是的,我刚找到了它,但似乎仍然很慢。 - lockdoc
你好,lockdoc,你使用的是哪个OS X版本?我正在使用10.10.5版本,但命令“ffmpeg -f avfoundation -list_devices true -i''”只显示一个输入设备(相机)。 - TuanAnh207
嗨,我正在使用命令:'ffmpeg -f avfoundation -framerate 30 -i "1" -f avfoundation -framerate 30 -video_size 640x480 -i "0" -r 30 /Users/admin/Documents/Swati/test/test.flv':错误>>>输出文件#0不包含来自我的Mac应用程序的任何流。 - Swati
FFmpeg 版本:3.2.1 - Swati
1个回答

11

对我来说,这个可以正常工作,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”值。


谢谢,这很有帮助。 - baltasvejas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接