ffmpeg 获取屏幕和摄像头及音频

Linux 系统
使用 x11grab 设备采集视频图像:

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 output.mp4
这条命令将会从桌面图像的左上角偏移坐标位置为 (x=100, y=200)处获取宽高为1024x768的图像, .

如果需要加入音频,则采集 ALSA (参考 Capture/ALSA 获得更多信息):

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 output.mkv
或者采集 pulse 输入设备:

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f pulse -ac 2 -i default output.mkv
苹果 OS X 系统
使用 avfoundation 设备采集音视频:

ffmpeg -f avfoundation -list_devices true -i “”
这条命令执行后将列出所有 avfoundation 的音频、视频采集设备列表。 可以通过指定想要采集的设备名采集音频、视频:

ffmpeg -f avfoundation -i “:” out.mov
这条命令执行后将会从 编号处获得视频图像,从 编号处获得音频数据写入至输出文件 out.mov 中.

Windows 系统
使用 DirectShow ​device设备采集音视频数据:

ffmpeg -f dshow -i video=“screen-capture-recorder” output.flv
执行这条命令后将会 从DirectShow 设备中获得桌面图像并输出为output。flv文件. 可以参考 ​list of alternative devices.

如果需要采集视频外还需要采集音频则使用如下命令:

ffmpeg -f dshow -i video=“UScreenCapture”:audio=“Microphone” output.flv
如果你想获得正在从扬声器播放的音频,需要配置 “Stereo Mix” 设备

或者

ffmpeg -f dshow -i video=“UScreenCapture” -f dshow -i audio=“Microphone” output.flv
可以通过如下命令行列出所有dshow设备:

ffmpeg -list_devices true -f dshow -i dummy
同样可以使用 gdigrab 输入设备从Widnows系统桌面获得屏幕图像.

注意事项
如果你的配置比较低, 使用下面的命令可能会提高你的音视频编码效率,但是质量会稍微有些降低. 在这种情况下,首先你需要获取并将获取的图像保存为未压缩的视频/音频,并且当你完成抓取过程然后开始将它转换为任何你所需要的编码:

Linux:

ffmpeg -framerate 25 -video_size 1024x768 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i pulse -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv
ffmpeg -i output.mkv -acodec … -vcodec … final.mkv
Windows:

ffmpeg -f dshow -i video=“screen-capture-recorder”:audio=“Microphone” -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv
ffmpeg -i output.flv -acodec … -vcodec … final.mkv
无损录制
如果你想很好的将桌面图像录制下来,x264编码器可以做到,使用无损编码方式即可,例如:

ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast capture.mkv
-qp 0 这个参数是设置 x264 的压缩参数为无损压缩, -preset ultrafast 预设值参数将会尽快的进行 x264 编码压缩.

这么做在当前主流的硬件设备上做不丢帧的编码是可以做到足够快的,并且还不会占用全部的CPU。

可以通过一次录制,一次编码的方式进行无损编码压缩,录制的时候以最快速度将视频图像录制下来,然后对录制下来的图像进行慢速压缩,这样可以保证图像质量,并且可以保证视频不丢帧

ffmpeg -i capture.mkv -c:v libx264 -qp 0 -preset veryslow capture_smaller.mkv
参考 Encode/H.264 获得更多信息和例子.

https://trac.ffmpeg.org/wiki/Capture/Capture/Desktop%E4%B8%AD%E6%96%87%E7%89%88%E6%9C%AC

其他文章:
FFmpeg获取DirectShow设备数据(摄像头,录屏)

https://developer.aliyun.com/article/243451

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值