采用gst-launch命令进行linux屏幕录制
2017-03-16 15:36
2256 查看
系统: fedora18
内核:3.8.0
平台:intel
一、直接通过工具录制:
采用第三方软件recordmydesktop,生成ogv视频文件,用ffmpeg转码为h264格式,再通过gst-launch-1.0或者mplayer播放,步骤如下:
二、通过gstreamer的gst-launch命令
1.gstreamer 0.10 版本执行命令
gst-launch-0.10 ximagesrc use-damage=0 !
video/x-raw-rgb,framerate=15/1 ! ffmpegcolorspace ! x264enc !
matroskamux ! filesink location=”test.mkv”
2.gstreamer 1.0 版本执行命令
gst-launch-1.0 ximagesrc remote=1 use-damage=0 !
video/x-raw,framerate=15/1 ! videoconvert ! x264enc ! matroskamux ! filesink location=/root/capscreen/test.mkv
https://bugzilla.redhat.com/show_bug.cgi?id=1136317
https://bugzilla.gnome.org/show_bug.cgi?id=721220
1.0版本和0.1版本区别,详细看:
https://cgit.freedesktop.org/gstreamer/gstreamer/plain/docs/random/porting-to-1.0.txt
3.以上是采用x264enc软编码的方式将屏幕视频源ximagesrc经过插件video/x-raw格式化后,送到h264软件编码插件,然后通过mux整流插件进入文件处理filesink插件,下面是硬件编码的方式,采用gst-vaapi包,https://github.com/01org/gstreamer-vaapi中的h264硬件编码器:
gst-launch-1.0 -e ximagesrc remote=1 ! videoconvert !
video/x-raw,format=YUY2,framerate=2/1,width=1024,height=768 ! tee name=enc ! queue ! vaapipostproc enc. ! queue ! vaapiencode_h264 ! qtmux ! filesink location=/root/capscreen/test2.mp4 enc.
vaapi介绍:https://en.wikipedia.org/wiki/Video_Acceleration_API
硬件编码帧率在framerate=5/1情况下,四核cpu,占用率为30%左右,而软件编码100%左右。而硬件编码在framerate=15/1时cpu占用率为80%,主要是因为videoconvert这一步占去了较多资源。
内核:3.8.0
平台:intel
一、直接通过工具录制:
采用第三方软件recordmydesktop,生成ogv视频文件,用ffmpeg转码为h264格式,再通过gst-launch-1.0或者mplayer播放,步骤如下:
1. recordmydesktop -o test.ogv --overwrite 2. ffmpeg -i test.ogv -f h264 test.mp4 3. gst-launch-1.0 playbin video-sink=vaapisink uri=file:///root/test.mp4 或 mplayer test.mp4
二、通过gstreamer的gst-launch命令
1.gstreamer 0.10 版本执行命令
gst-launch-0.10 ximagesrc use-damage=0 !
video/x-raw-rgb,framerate=15/1 ! ffmpegcolorspace ! x264enc !
matroskamux ! filesink location=”test.mkv”
2.gstreamer 1.0 版本执行命令
gst-launch-1.0 ximagesrc remote=1 use-damage=0 !
video/x-raw,framerate=15/1 ! videoconvert ! x264enc ! matroskamux ! filesink location=/root/capscreen/test.mkv
***: 如果录到的视频是黑框或者录制提示内存分配失败,需要加上remote=1参数,这是因为fedora存在的一个bug,fedora默认安装gst时没有打上shm选项:
https://bugzilla.redhat.com/show_bug.cgi?id=1136317
https://bugzilla.gnome.org/show_bug.cgi?id=721220
1.0版本和0.1版本区别,详细看:
https://cgit.freedesktop.org/gstreamer/gstreamer/plain/docs/random/porting-to-1.0.txt
3.以上是采用x264enc软编码的方式将屏幕视频源ximagesrc经过插件video/x-raw格式化后,送到h264软件编码插件,然后通过mux整流插件进入文件处理filesink插件,下面是硬件编码的方式,采用gst-vaapi包,https://github.com/01org/gstreamer-vaapi中的h264硬件编码器:
gst-launch-1.0 -e ximagesrc remote=1 ! videoconvert !
video/x-raw,format=YUY2,framerate=2/1,width=1024,height=768 ! tee name=enc ! queue ! vaapipostproc enc. ! queue ! vaapiencode_h264 ! qtmux ! filesink location=/root/capscreen/test2.mp4 enc.
vaapi介绍:https://en.wikipedia.org/wiki/Video_Acceleration_API
硬件编码帧率在framerate=5/1情况下,四核cpu,占用率为30%左右,而软件编码100%左右。而硬件编码在framerate=15/1时cpu占用率为80%,主要是因为videoconvert这一步占去了较多资源。
相关文章推荐
- linux 使用asciinema 进行命令行屏幕录制共享
- linux下监听的配置 采用netca命令调用图形界面进行配置
- Linux使用tar命令进行磁带备份
- Linux中通过script命令那个记录屏幕的输出
- 在Linux下使用nc命令进行文件传输
- 在Linux下使用nc命令进行文件传输收藏
- 采用scp命令在Linux系统之间copy文件
- 在linux下的屏幕录制软件
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 采用批处理命令对文件进行解压及采用SQLCMD进行数据库挂载
- linux屏幕命令
- 采用scp命令在Linux系统之间copy文件
- 采用scp命令在Linux系统之间copy文件
- Linux 使用ftp命令进行远程文件传输
- SUSE iptable 和如何采用LINUX进行简单路由
- 在 PlayStation 3 上进行 Linux 开发,第 3 部分: 采用小工具来瘦身 X11
- Linux常见命令:屏幕文本编辑器Vi
- 用linux下常用命令wget进行整站下载(递归下载至本地)
- Linux中使用iconv命令对文件进行编码转换