Pārlūkot izejas kodu

Z991239-1621 #comment other screenshot实体调试成功

胡琛80272472 4 gadi atpakaļ
vecāks
revīzija
d265b4462b

+ 12 - 2
Module/mod_screenshot/CMakeLists.txt

@@ -29,6 +29,16 @@ BASIC_SETUP CMAKE_TARGETS
 BUILD missing)
 endif(MSVC)
 
+if(WIN32)
+conan_cmake_run(REQUIRES ffmpeg/4.1@LR04.02_ThirdParty/testing
+BASIC_SETUP CMAKE_TARGETS
+BUILD missing)
+else(WIN32)
+conan_cmake_run(REQUIRES ffmpeg/4.1.6@LR04.02_ThirdParty/shared
+BASIC_SETUP CMAKE_TARGETS
+BUILD missing)
+endif(WIN32)
+
 if(WIN32)
 target_include_directories(${MODULE_NAME} PRIVATE
 	${RVC_FRAMEWORK_INCLUDES_DIR}
@@ -63,9 +73,9 @@ target_include_directories(${MODULE_NAME} PRIVATE
 #	${CONAN_INCLUDE_DIRS_LIBX11})
 
 # 添加需要依赖的其他共享库(包括系统库)
-target_link_directories(${MODULE_NAME} PRIVATE ${CONAN_LIB_DIRS_OPENJPEG} ${CONAN_BIN_DIRS_OPENCV} ${CONAN_LIB_DIRS_ZLIB} ${CONAN_LIB_DIRS_OPENCV})
+target_link_directories(${MODULE_NAME} PRIVATE ${CONAN_LIB_DIRS_OPENJPEG} 	${CONAN_LIB_DIRS_FFMPEG} ${CONAN_LIB_DIRS_ZLIB} ${CONAN_BIN_DIRS_OPENCV} ${CONAN_LIB_DIRS_OPENCV})
 # 添加实体需要依赖的其他共享库(包括系统库)
-target_link_libraries(${MODULE_NAME} ${MODULE_BASE_LIBS} libbizchan libscreencodec ${CONAN_PKG_LIBS_OPENJPEG} ${CONAN_LIBS_OPENCV} ${CONAN_PKG_LIBS_ZLIB} X11)
+target_link_libraries(${MODULE_NAME} ${MODULE_BASE_LIBS} ${CONAN_PKG_LIBS_FFMPEG} libvideoframework libbizchan libscreencodec ${CONAN_PKG_LIBS_OPENJPEG} ${CONAN_LIBS_OPENCV} ${CONAN_PKG_LIBS_ZLIB} X11)
 
 endif(WIN32)
 

+ 14 - 1
Module/mod_screenshot/mod_screenshot.cpp

@@ -3,6 +3,8 @@
 
 #include "screencapture.h"
 #include <screencodec.h>
+#include "../..//Other/libvideoframework/videoutil.h"
+#include "../../Other/rvcmediacommon/rvc_media_common.h"
 
 #include "mod_assistantchannel/AssistantChannel_client_g.h"
 using namespace AssistantChannel;
@@ -203,7 +205,6 @@ public:
 				m_pChannelClient = NULL;
 			}
 		}
-
 		return Error;
 	}
 
@@ -286,6 +287,7 @@ public:
 			LOG_TRACE("capture screen failed! %d", err);
 			return;
 		}
+		Dbg("capture screen, cx: %d, cy: %d, size: %d", cx, cy, size);
 		void *buf = malloc(size);
 		err = screencapture_capture(&rc, buf, &size);
 		if (err != 0) {
@@ -343,6 +345,17 @@ public:
 					m_pChannelClient->Send(Info);
 		}	
 
+#if 0
+		int linesize = size / cy;
+		video_frame tmp_frame;
+		video_frame_alloc(linesize/3, cy, VIDEO_FORMAT_RGB24, &tmp_frame);
+		video_frame_fill_black(&tmp_frame);
+		memcpy(tmp_frame.data[0], buf, size);
+		video_frame_save_bmpfile("screenshot_abc.bmp", &tmp_frame);
+		video_frame_free(&tmp_frame);
+		//video_frame_save_bmpfile("d:\\ab.bmp", &rtp_frame);
+		Dbg("capture screen, linesize: %d.", linesize);
+#endif
 		free(buf);
 		LOG_TRACE("encode size = %d Bytes, time = %d", Info.data.m_iLength, SP::Module::Comm::RVCGetTickCount());
 	}