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

Windows

方法一: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

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进行屏幕录像和录音 

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章