[求助] OH 4.0 设备录屏软件功能异常
戏精doge 2024-06-27 18:16:11
在自己移植的3588设备上,使用社区的录屏应用,点击录屏后。录屏文件无法打开,且录屏文件的大小为0.
请问下这个问题要怎么继续跟踪下。
目前openharmony有没有命令行工具进行录屏操作?
您需要先 登录 才能评论/回答
全部评论(7)
04-30 11:03:02.384 782 1734 W C02b2b/videocapturesrc: {gst_video_capture_src_fill():404} [gst::VideoSource:CADB30] error: Data width or height error on input stream.
04-30 11:03:02.384 782 1734 W C02b2b/videocapturesrc: {gst_video_capture_src_fill():404} [gst::VideoSource:CADB30] error: Data width or height error on input stream. Input data width=312, height=630. Set width=1152, height=720.
设置给recorder的宽高和虚拟屏幕surface产生的buffer宽高不一致,可能虚拟屏幕没适配好或者不支持1152*720的分辨率。
赞
2024-06-27 19:30:31
引用:“理论应用 createVirtualScreen 设置的width和height就是虚拟屏幕产生数据的分辨率,最终录屏数据的分辨率(修改大点看下,avrecorder 宽高要同步修改);但是看描述你那里好像只能设置312*630,应该是芯片没有适配好或不支持”
这个数值大小是社区这个应用代码中做的调整,对于宽的分辨率大于1000后,会对屏数据进行处理。这块我也没太理解为什么要这样处理。
if (Number(dftDisplay.width) > 1000) {
dftDisplay.width = (dftDisplay.width + PhoneConstants.PHONE_WIDTH) / 2
dftDisplay.height = (dftDisplay.height - PhoneConstants.PHONE_HEIGHT) / 2
}
我再试下直接提高分辨率的情况那。非常感谢!!!
赞
引用:“是这样的 横屏录屏时,也是会出现上面那个相关的警告:Input data width=312, height=630. Set width=630, height=312. 我手动在应用中,将VideoRecorderProfile里的videoFrameWidth和videoFrameHeight数值交换后,录屏有内容,有大小。但是录制出的视频是黑屏的。 另外现在这个demo的录屏的分辨率会有压”
理论应用 createVirtualScreen 设置的width和height就是虚拟屏幕产生数据的分辨率,最终录屏数据的分辨率(修改大点看下,avrecorder 宽高要同步修改);但是看描述你那里好像只能设置312*630,应该是芯片没有适配好或不支持
赞
引用:“可能还是虚拟屏幕产生数据的宽高和设置给avrecorder的不同,比如设置avrecorder的是1080*1920,但虚拟屏幕产生横屏数据1920x1080,具体得看log。如果虚拟屏幕那边不能旋转数据,可以设置给avrecorder rotation 旋转角度写到封装里”
是这样的 横屏录屏时,也是会出现上面那个相关的警告:Input data width=312, height=630. Set width=630, height=312.
我手动在应用中,将VideoRecorderProfile里的videoFrameWidth和videoFrameHeight数值交换后,录屏有内容,有大小。但是录制出的视频是黑屏的。
另外现在这个demo的录屏的分辨率会有压缩,您知道怎么调高下录屏的分辨率么?
赞
引用:“感谢。问题内容找到了。是我修改了dftDisplay.width的大小导致的。麻烦再问您下,录屏应用在屏幕方向为横屏时,也是无法录屏内容,这块可以参考什么文档做下修改么?”
可能还是虚拟屏幕产生数据的宽高和设置给avrecorder的不同,比如设置avrecorder的是1080*1920,但虚拟屏幕产生横屏数据1920x1080,具体得看log。如果虚拟屏幕那边不能旋转数据,可以设置给avrecorder rotation 旋转角度写到封装里
赞
引用:“可以在应用的ScreenRecorder.ets createVirtualScreen的width和height 以及 getVideoConfig的videoFrameWidth 和 videoFrameHeight 测试合适的值 (比如宽要小于高)或者写死 312*630”
感谢。问题内容找到了。是我修改了dftDisplay.width的大小导致的。麻烦再问您下,录屏应用在屏幕方向为横屏时,也是无法录屏内容,这块可以参考什么文档做下修改么?
赞
可以在应用的ScreenRecorder.ets createVirtualScreen的width和height 以及 getVideoConfig的videoFrameWidth 和 videoFrameHeight 测试合适的值
(比如宽要小于高)或者写死 312*630
赞