我有以下命令行代码:
gst-launch-1.0 ximagesrc startx=0 use-damage=0 ! video/x-raw,framerate=30/1 ! videoscale method=0 ! video/x-raw,width=1280,height=1080 ! ximagesink
是否可以在python中使用gstreamer从桌面录制其视频输出并将其保存到文件中。该命令打开一个窗口并正确显示桌面活动,但我想将此输出转换为python中的视频文件。
提前感谢您的协助。
答案 0 :(得分:0)
根据您在系统上可用的gstreamer的编解码器和其他元素,您可能会遇到问题,但这对我有用:
gst-launch-1.0 ximagesrc startx=0 use-damage=0 ! video/x-raw,framerate=30/1 ! videoscale method=0 ! video/x-raw,width=1280,height=1080 ! videoconvert ! x264enc ! avimux ! filesink location=output2.avi
因此,视频转换是必需的,因为x264enc与ximagesink具有不同的输入类型。 x264enc是编解码器本身,avimux将压缩视频放在avi容器中,filesink用于写出文件。
对于Python API,一个简单的MCVE是:
#!/usr/bin/python
import os
import gi
import sys
import time
gi.require_version('Gtk', '3.0')
gi.require_version('Gst', '1.0')
from gi.repository import Gst, GObject, Gtk
Gtk.init(sys.argv)
# initialize GStreamer
Gst.init(sys.argv)
pipeline = Gst.parse_launch ("ximagesrc startx=0 use-damage=0 ! video/x-raw,framerate=30/1 ! videoscale method=0 ! video/x-raw,width=1280,height=1080 ! videoconvert ! x264enc ! avimux ! filesink location=output4.avi")
pipeline.set_state(Gst.State.PLAYING)
time.sleep(15)
pipeline.set_state(Gst.State.NULL)