1. 程式人生 > >採用gst-launch命令進行linux螢幕錄製

採用gst-launch命令進行linux螢幕錄製

系統: fedora18
核心: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選項:

1.0版本和0.1版本區別,詳細看:

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.

硬體編碼幀率在framerate=5/1情況下,四核cpu,佔用率為30%左右,而軟體編碼100%左右。而硬體編碼在framerate=15/1時cpu佔用率為80%,主要是因為videoconvert這一步佔去了較多資源。