ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 录制 ## 查看有哪些设备 首先通过下面的命令查看一下 mac 上都有哪些设备。 ~~~ ffmpeg -f avfoundation -list_devices true -i "" ~~~ mac下avfoundation支持的设备 ~~~ [AVFoundation input device @ 0x7febb6f274c0] AVFoundation video devices: [AVFoundation input device @ 0x7febb6f274c0] [0] FaceTime HD Camera [AVFoundation input device @ 0x7febb6f274c0] [1] Capture screen 0 [AVFoundation input device @ 0x7febb6f274c0] [2] Capture screen 1 [AVFoundation input device @ 0x7febb6f274c0] AVFoundation audio devices: [AVFoundation input device @ 0x7febb6f274c0] [0] Built-in Microphone ~~~ 上面的0就是摄像头,1就是屏幕 下面的0是内置麦克风 ## 录屏 yuc播放的时候需要指定宽高 ~~~ ffmpeg -f avfoundation -i 1 -r 30 out.yuv ~~~ * `-f` 指定使用 avfoundation 采集数据。 * `-i` 指定从哪儿采集数据,它是一个文件索引号。在我的MAC上,1代表桌面(可以通过上面的命令查询设备索引号)(1其实是个索引,屏幕是1,摄像头是0)。 * `-r` 指定帧率。按ffmpeg官方文档说`-r`与`-framerate`作用相同,但实际测试时发现不同。`-framerate` 用于限制输入,而`-r`用于限制输出。 注意,桌面的输入对帧率没有要求,所以不用限制桌面的帧率。其实限制了也没用。 **播放** 录制的时候会提示 ~~~ Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 3360x2100, q=2-31, 3386880 kb/s, 30 fps, 30 tbn, 30 tbc ~~~ ~~~ -s 3360x2100 -pix_fmt uyvy422 ~~~ ~~~ ffplay -s xxxxx(你录制时候的宽高) -pix_fmt (也是你录制时候的格式) ./out.yuv ~~~ ## 录屏+声音 ~~~ ffmpeg -f avfoundation -i 1:0 -r 29.97 -c:v libx264 -crf 0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k out.flv ~~~ ~~~ ffmpeg -y -f avfoundation -i 1:0 -framerate 60 -c:v libx264 -r 60 -pix_fmt yuv420p -preset 0 -crf 19 -c:a aac -b:a 192k "$HOME/Screen Record $(date "+%Y-%m-%d %H-%M-%S").mp4" ~~~ * -i 1:0 冒号前面的 "1" 代表的屏幕索引号。冒号后面的"0"代表的声音索相号。 * -c:v 与参数 -vcodec 一样,表示视频编码器。c 是 codec 的缩写,v 是video的缩写。 * -crf 是 x264 的参数。 0 表式无损压缩。 * -c:a 与参数 -acodec 一样,表示音频编码器。 * -profile 是 fdk_aac 的参数。 aac_he_v2 表式使用 AAC_HE v2 压缩数据。 * -b:a 指定音频码率。 b 是 bitrate的缩写, a是 audio的缩与 ## 录视频 ~~~ ffmpeg -framerate 30 -f avfoundation -i 0 out.mp4 ~~~ * `-framerate` 限制视频的采集帧率。这个必须要根据提示要求进行设置,如果不设置就会报错。 * `-f` 指定使用 avfoundation 采集数据。 * `-i` 指定视频设备的索引号 ## 视频+音频 ~~~ ffmpeg -framerate 30 -f avfoundation -i 0:0 out.mp4 ~~~ ## 录音 ~~~ ffmpeg -f avfoundation -i :0 out.wav ~~~ 0是代表设备的索引,可以去上面查看 录制好了播放 ~~~ ffplay ./out.wav ~~~ ## 录制音频裸数据 ~~~ ffmpeg -f avfoundation -i :0 -ar 44100 -f s16le out.pcm ~~~