FFmpeg —— 屏幕录像和录音并推流(命令行的方式)

29 篇文章 17 订阅
8 篇文章 3 订阅

Windows

 Windows采集设备的主要方式是dshow、vfwcap、gdigrab.

其中dshow可以用来抓取摄像头、采集卡、麦克风等,vfwcap主要用来采集摄像头类设备,gdigrab则是抓取Windows窗口程序。

ffmpeg -hide_banner -devices

 

方法一:dshow 

首先需要安装一个软件,screen capture recorder
编译好的下载地址是:
http://sourceforge.net/projects/screencapturer/files/ 安装后才能使用
源码地址是:
https://github.com/rdp/screen-capture-recorder-to-video-windows-free

查看可用的设备:

ffmpeg -list_devices true -f dshow -i dummy

 

[dshow @ 000001d73b78b400] DirectShow video devices
[dshow @ 000001d73b78b400]  "screen-capture-recorder"
[dshow @ 000001d73b78b400] DirectShow audio devices
[dshow @ 000001d73b78b400]  "virtual-audio-capturer"

ffmpeg已经可以捕获到DirectShow视频设备,和音频设备了.
"screen-capture-recorder" 这个就是桌面捕获设备,如果电脑上连有摄像头,也会列出来.
"virtual-audio-capturer" 这个是音频捕获设备 

捕获视频:

读取屏幕数据并编码为H.264,最后保存成desktop.mkv

ffmpeg -f dshow -i video="screen-capture-recorder" -vcodec libx264 -preset ultrafast desktop.mkv

捕获声音:

ffmpeg -f dshow -i audio="virtual-audio-capturer" -acodec aac desktop.aac

同时捕获桌面和声音并录制成flv格式:

ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -pix_fmt yuv420p -acodec aac desktop.flv

如果想提高x264编码速度可使用 -preset:v ultrafast -tune:v zerolatency 两个参数。

1)如果不设置ultrafast,捕获的视频比较模糊。

2)如果不设置-pix_fmt yuv420p,捕获的是黑白图像

3)如果不设置-pix_fmt yuv420p,封装格式改为mp4的话,捕获的也是彩色图像。

捕获桌面音视频并推流

ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset:v ultrafast -pix_fmt yuv420p -acodec aac -f flv rtmp://172.17.178.120/myapp/test

推流服务器的搭建可以参考这边文章:centos7+nginx+rtmp+ffmpeg搭建流媒体服务器

方法二:gdigrab

gdigrab是基于GDI的抓屏设备,可以用于抓取屏幕的特定区域。在这里记录一下gdigrab的用法。
gdigrab通过设定不同的输入URL,支持两种方式的屏幕抓取:
(1)“desktop”:抓取整张桌面。或者抓取桌面中的一个特定的区域。
(2)“title={窗口名称}”:抓取屏幕中特定的一个窗口。
下面举几个例子。
最简单的抓屏:

ffmpeg -f gdigrab -i desktop out.mpg

 从屏幕的(10,20)点处开始,抓取640x480的屏幕,设定帧率为5

ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg

方法三:vfwcap

 使用vfwcap枚举支持采集的设备

ffmpeg -f vfwcap -i list

(2)使用vfwcap生成mp4文件

ffmpeg -f vfwcap -i 0 -r 25 -vcodec libx264 out.mp4

linux

使用x11grab

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 v-out.mp4

上面的参数,指的是从屏幕的左上角(x=100, y=200)的位置,录制分辨率为1024×768的视频。

可以使用ALSA同时录制声音

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 av-out.mkv

也可以使用Pulse声音输入设备

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f pulse -ac 2 -i default av-out.mkv


问题总结

捕获图像不清晰。

解决办法:

添加参数:-preset ultrafast

参考

 FFmpeg获取DirectShow设备数据(摄像头,录屏)

利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能 

FFMPEG在Windows下的屏幕录像录音 

使用FFmpeg进行屏幕录像和录音 

FFmpeg采集设备

http://trac.ffmpeg.org/wiki/Capture/Desktop

http://ffmpeg.org/ffmpeg.html#Video-and-Audio-grabbing 

敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。  我将带领大家一起来学习:采集麦克风、PCM重采样、AAC或MP3音频编码存储、并直播。具体内容包括:1.FFmpeg采集麦克风并存储为PCM。2.PCM重采样原理及实战。3.采集麦克风并实时转码AAC或MP3并保存文件。4.采集麦克风并实时转码AAC并可以直播。 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。 目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值