在QT中使用FFmpeg庫的部分報錯問題

win32: LIBS += -L$$PWD/../ffmpeg-win32-dev/lib/ -lavutil
win32: LIBS += -L$$PWD/../ffmpeg-win32-dev/lib/ -lavformat
win32: LIBS += -L$$PWD/../ffmpeg-win32-dev/lib/ -lswresample
win32: LIBS += -L$$PWD/../ffmpeg-win32-dev/lib/ -lswscale
INCLUDEPATH += $$PWD/../ffmpeg-win32-dev/include
DEPENDPATH += $$PWD/../ffmpeg-win32-dev/include
#include <libavutil/channel_layout.h> //用戶音頻聲道佈局操做

#include <libavutil/opt.h> //設置操做選項操做
#include <libavutil/mathematics.h> //用於數學相關操做
#include <libavutil/timestamp.h> //用於時間戳操做
#include <libavformat/avformat.h> //用於封裝與解封裝操做
#include <libswscale/swscale.h> //用於縮放、轉換顏色格式操做
#include <libswresample/swresample.h> //用於進行音頻採樣率操做

使用遇到錯誤:D:\ffmpeg\dev\include\libavutil\common.h:210: error: ‘UINT64_C’ was not declared in this scope 佈局

if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF);this

解決方法:spa

1 在common.h文件中加入
2 #ifndef INT64_C
3 #define INT64_C(c) (c ## LL)
4 #define UINT64_C(c) (c ## ULL)
5 #endif

使用遇到錯誤D:\ffmpeg\dev\include\libavutil\common.h:32: error: #error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
解決辦法: .net

1 記住要加到error missing -D__STDC_CONSTANT_MACROS 的前面否則仍是找不到
2 #if defined __cplusplus
3 #define __STDC_CONSTANT_MACROS
4 #endif

注:以上相似#error missing -D__STDC_CONSTANT_MACROS 的錯誤均可以這樣處理。code

建議都在common.h文件裏聲明,以下orm

 1 /////新增////////////
 2 #ifndef INT64_C
 3 #define INT64_C(c) (c ## LL)
 4 #define UINT64_C(c) (c ## ULL)
 5 #endif
 6 
 7 #if defined __cplusplus
 8 #define __STDC_CONSTANT_MACROS  //common.h中的錯誤
 9 #define __STDC_FORMAT_MACROS    //timestamp.h中的錯誤
10 #endif
11 
12 /////////////////////

參考:https://blog.csdn.net/qq_36088602/article/details/77885023blog

 

undefined reference to `av_register_all' 問題解決

解決方法:數學

#include <libavcodec/avcodec.h>it

#include <libavformat/avformat.h>form

引入頭文件由於實在cpp的環境下引入的,須要

extern "C"

{

#include <libavcodec/avcodec.h>

#include <libavformat/avformat.h>

}

切記 exterm後面必定要跟{}。

這樣寫

extern "C"

#include <libavcodec/avcodec.h>

#include <libavformat/avformat.h>

是沒有用的 這種是錯誤的。必定要帶{},不然仍是回報一樣的錯誤。參考:https://blog.csdn.net/qq_18144521/article/details/79608355

相關文章
相關標籤/搜索