qt构建ffmpeg工程

构建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 ,如果你构建的是CPP程序,即用CXX,那么就是main.cpp里面使用就需要使用extern "C",否则会出现 error LNK2019: 无法解析的外部符号
**

extern "C"
{
    #include 
    #include 
    #include 
    #include 
    #include 
};

关于QCameraImageCapture::imageAvailable 无效的问题

今天终于来填坑了,原来做一个项目利用摄像头获取图像数据,当时也打算用QCamera使用,但是后来放弃了,当时也是遇到无法回调图像数据。Qt里面有一个信号

imageAvailable

https://doc.qt.io/qt-5/qcameraimagecapture.html#imageAvailable
在代码中添加下面的函数,想通过这个获取每一帧的数据进行处理

connect(m_imageCapture.data(), &QCameraImageCapture::imageAvailable, this, &Camera::frameProcessing);

然而一直获取不到。搜了一下发现很多人遇到这个问题,在window下这个信号是不支持的


image.png

image.png

image.png

你可能感兴趣的:(qt构建ffmpeg工程)