构建FFMPEG新工程
CMakeList.txt大概
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
PROJECT(ffmpegApp LANGUAGES C CXX)
#set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS")
SET(FFMPEG_LIB_DIRS
D:/projects/ffmpeg/ffmpeg-shared)
SET(AVCODEC_LIBRARY ${FFMPEG_LIB_DIRS}/lib/avcodec.lib)
SET(AVFORMAT_LIBRARY ${FFMPEG_LIB_DIRS}/lib/avformat.lib)
SET(AVUTIL_LIBRARY ${FFMPEG_LIB_DIRS}/lib/avutil.lib)
SET(AVDEVICE_LIBRARY ${FFMPEG_LIB_DIRS}/lib/avdevice.lib)
#group source files, header files, resource files and ui files
SET(FFMPEGAPP_SRCS
main.cpp
)
SET(FFMPEGAPP_HDRS
)
SET(UI_FILES
)
SET(QRC_SOURCE_FILES
)
#add the resource files into qt project
QT5_ADD_RESOURCES(QRC_FILES ${QRC_SOURCE_FILES})
#integrate all the files to generate the executable program
ADD_EXECUTABLE( ${CMAKE_PROJECT_NAME}
${FFMPEGAPP_SRCS}
${FFMPEGAPP_HDRS}
)
include_directories(${CMAKE_PROJECT_NAME}
${FFMPEG_LIB_DIRS}/include
${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(${CMAKE_PROJECT_NAME}
${AVCODEC_LIBRARY}
${AVFORMAT_LIBRARY}
${AVUTIL_LIBRARY}
${AVDEVICE_LIBRARY}
)
message(STATUS "${AVDEVICE_LIBRARY}")
**
这里需要注意,如果构建工程,PROJECT(ffmpegApp LANGUAGES C CXX), 这里只选C那么你构建的是main.c 那么在代码中可以直接 #include <libavcodec\avcodec.h>,如果你构建的是CPP程序,即用CXX,那么就是main.cpp里面使用就需要使用extern "C",否则会出现 error LNK2019: 无法解析的外部符号
**
extern "C"
{
#include <libavcodec\avcodec.h>
#include <libavformat\avformat.h>
#include <libswscale\swscale.h>
#include <libavutil\pixfmt.h>
#include <libavutil\imgutils.h>
};
关于QCameraImageCapture::imageAvailable 无效的问题
今天终于来填坑了,原来做一个项目利用摄像头获取图像数据,当时也打算用QCamera使用,但是后来放弃了,当时也是遇到无法回调图像数据。Qt里面有一个信号
imageAvailablehttps://doc.qt.io/qt-5/qcameraimagecapture.html#imageAvailable
在代码中添加下面的函数,想通过这个获取每一帧的数据进行处理
connect(m_imageCapture.data(), &QCameraImageCapture::imageAvailable, this, &Camera::frameProcessing);
然而一直获取不到。搜了一下发现很多人遇到这个问题,在window下这个信号是不支持的
image.png
image.png
image.png
网友评论