美文网首页
qt构建ffmpeg工程

qt构建ffmpeg工程

作者: stnevermore | 来源:发表于2022-07-08 05:47 被阅读0次

    构建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里面有一个信号

    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工程

          本文链接:https://www.haomeiwen.com/subject/sjpmbrtx.html