Mac下使用FFmpeg进行画中画录屏
FFmpeg是一款免费开源的视频处理软件,可以对视频进行格式转换,截图,修改分辨率,提取音频等,也可以是进行视频录制。使用FFmpeg可以实现录屏的同时,使用摄像头拍摄视频,并进行画中画展示。FFmpeg提供命令行,提供免费的画中画录屏功能实现。
MacOS画中画录制命令:
$ ffmpeg -thread_queue_size 50 -f avfoundation -framerate 30 -i "2" \
-thread_queue_size 50 -f avfoundation -framerate 30 -video_size 640x480 -i "0" \
-filter_complex 'overlay=main_w-overlay_w-20:main_h-overlay_h-20' \
-r 30 video.mp4
-thread_queue_size 50 -f avfoundation -framerate 30 -i "2"
输入30fps的屏幕视频流, 默认全屏幕。屏幕设备编号为"2"
, 参考设备编号获取命令。-thread_queue_size 50 -f avfoundation -framerate 30 -video_size 640x480 -i "0"
输入30fps的摄像头视频流,视频大小为640x480。摄像头编号为"0"
, 参考设备编号获取命令。-filter_complex 'overlay=main_w-overlay_w-20:main_h-overlay_h-20'
合并屏幕视频流和摄像头视频流,右下角展示。-r 30 video.mp4
以30fps的码率保存视频到video.mp4
文件中。-thread_queue_size 50
参数可以减少视频卡顿
详细步骤:
1. FFmpeg安装
首先,确保你的系统已经安装了 Homebrew,然后运行brew命令安装FFmpeg。 其他系统可以参照官网安装文档:
$ brew install ffmpeg
2. 查看Mac中的视频/音频设备。avfoundation
为MacOS下面的参数,其他操作系统参考官方文档。
$ ffmpeg -f avfoundation -list_devices true -i ""
[AVFoundation indev @ 0x130604b60] AVFoundation video devices:
[AVFoundation indev @ 0x130604b60] [0] FaceTime高清摄像头
[AVFoundation indev @ 0x130604b60] [1] "******"的相机
[AVFoundation indev @ 0x130604b60] [2] Capture screen 0
[AVFoundation indev @ 0x130604b60] AVFoundation audio devices:
[AVFoundation indev @ 0x130604b60] [0] MacBook Pro麦克风
[AVFoundation indev @ 0x130604b60] [1] "*****"的麦克风
3. MacOS使用FFmpeg屏幕录制。-i "2:0"
视频使用Capture screen 0
,音频使用MacBook Pro麦克风
。
$ ffmpeg -f avfoundation -r 30 -i "2:0" output.mp4
...
Press [q] to stop, [?] for help
...
frame= 108 fps= 27 q=-1.0 Lsize= 927kB time=00:00:03.58 bitrate=2119.8kbits/s speed=0.91x
...
4. MacOS使用FFmpeg摄像头录制。-i "0:0"
视频使用FaceTime高清摄像头
,音频使用MacBook Pro麦克风
。
$ ffmpeg -f avfoundation -r 30 -i "0:0" output.mp4
...
Press [q] to stop, [?] for help
...
frame= 71 fps= 23 q=-1.0 Lsize= 1061kB time=00:00:02.52 bitrate=3436.4kbits/s speed=0.818x
...
5. MacOS使用FFmpeg合并屏幕视频流和摄像头视频流,进行画中画展示摄像头视频流
$ ffmpeg -thread_queue_size 50 -f avfoundation -framerate 30 -i "2" \
-thread_queue_size 50 -f avfoundation -framerate 30 -video_size 640x480 -i "0" \
-filter_complex 'overlay=main_w-overlay_w-20:main_h-overlay_h-20' \
-r 30 video.mp4