当前位置: 首页> 财经> 访谈 > 软件开发培训思摩特_中山网约车资格证报名地点_品牌策略有哪些_武汉seo网站优化技巧

软件开发培训思摩特_中山网约车资格证报名地点_品牌策略有哪些_武汉seo网站优化技巧

时间:2025/8/29 10:54:43来源:https://blog.csdn.net/weixin_51444308/article/details/145897278 浏览次数:0次
软件开发培训思摩特_中山网约车资格证报名地点_品牌策略有哪些_武汉seo网站优化技巧

问题

使用ffmpeg录屏后,录屏的内容是黑屏,查看后发现,自己用的是gnome桌面,但是是wayland,并不是传统的X11,这就导致了不兼容问题

echo $XDG_CURRENT_DESKTOP

可以通过上面这个命令查看桌面环境
可以返回GNOME

echo $XDG_SESSION_TYPE

可以通过上面这个命令查看类型
看看是X11还是wayland

解决方式一

直接切换到X11
编辑文件: /etc/gdm3/custom.conf

sudo vim /etc/gdm3/custom.conf

#WaylandEnable=false

注释去掉:

WaylandEnable=false

保存,退出,重启:

sudo systemctl restart gdm3

执行完成后即可。

验证

echo $XDG_SESSION_TYPE

这种方式切换后,可以使用ffmpeg进行录屏,比较通用,但是我的改过来之后,有bug,移动鼠标的时候会严重掉帧卡顿,找不到原因,所以只能接着用Wayland

解决方式二

硬着头皮用wayland
经过多种录屏软件验证,发现晚上说的一些obs,等等软件并不能在自己的系统上用,可能是系统原因,所以,经过一天时间的(血泪史)研究发现,可以使用系统自带的录屏工具

按下printscreen按键,可以选择录屏,发现这种方式是成功的

但是我是希望通过命令行去调用执行的

所以

得用脚本调用控制开始录屏和结束录屏

so

通过监听进程,找到了他调用的软件
附代码

from flask import Flask, jsonify
import dbus
import threadingapp = Flask(__name__)# 连接到 D-Bus 会话总线
session_bus = dbus.SessionBus()# 记录录制状态
is_recording = False# 开始录制的功能
def start_screencast():global is_recordingtry:session_bus.call_blocking('org.gnome.Shell.Screencast','/org/gnome/Shell/Screencast','org.gnome.Shell.Screencast','Screencast',signature='sa{sv}',args=["Screencast_%d_%t.webm", {'draw-cursor': True, 'framerate': 35}],)is_recording = Trueprint("Screen recording started.")except dbus.DBusException as e:print(f"Failed to start recording: {e}")# 停止录制的功能
def stop_screencast():global is_recordingtry:session_bus.call_blocking('org.gnome.Shell.Screencast','/org/gnome/Shell/Screencast','org.gnome.Shell.Screencast','StopScreencast',signature='',args=[],)is_recording = Falseprint("Screen recording stopped.")except dbus.DBusException as e:print(f"Failed to stop recording: {e}")# Flask 路由处理:启动录制
@app.route('/start', methods=['GET'])
def start_recording():global is_recordingif not is_recording:# 在独立线程中启动录制,防止阻塞 Flask 主线程threading.Thread(target=start_screencast).start()return jsonify({"message": "Recording started!"}), 200else:return jsonify({"message": "Recording is already running."}), 400# Flask 路由处理:停止录制
@app.route('/stop', methods=['GET'])
def stop_recording():global is_recordingif is_recording:stop_screencast()return jsonify({"message": "Recording stopped!"}), 200else:return jsonify({"message": "No recording in progress."}), 400if __name__ == "__main__":app.run(debug=True, host='0.0.0.0', port=5000)

太抽象了
太抽象了
卡了一天

|
|
|
伤心
|
|
|
在这里插入图片描述

关键字:软件开发培训思摩特_中山网约车资格证报名地点_品牌策略有哪些_武汉seo网站优化技巧

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: