当前QT版本:5.12
编译器:MinGW 32位
QT的xxx.pro工程文件:
代码语言:javascript复制QT = core gui
QT = multimediawidgets
QT = xml
QT = multimedia
QT = network
QT = widgets
QT = serialport
greaterThan(QT_MAJOR_VERSION, 4): QT = widgets
CONFIG = c 11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES = QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES = QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES =
Color_conversion.cpp
audio_video_encode_0.cpp
ffmpeg_code.cpp
main.cpp
widget.cpp
HEADERS =
Color_conversion.h
audio_video_encode_0.h
config.h
ffmpeg_code.h
widget.h
FORMS =
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS = target
RC_ICONS=log.ico
win32
{
message('运行win32版本')
INCLUDEPATH =$$PWD/ffmpeg-win32-shared-dll/include
LIBS =$$PWD/ffmpeg-win32-shared-dll/bin/av*
LIBS =$$PWD/ffmpeg-win32-shared-dll/bin/sw*
LIBS =$$PWD/ffmpeg-win32-shared-dll/bin/pos*
}
RESOURCES =
image.qrc
调用FFMEGE库编译时出现错误如下:
代码语言:javascript复制In file included from ..ffmpeg_save_videoffmpeg_code.h:33:0,
from ..ffmpeg_save_videoffmpeg_code.cpp:1:
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:30:2: error: #error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
^~~~~
In file included from ..ffmpeg_save_videoffmpeg_code.h:33:0,
from ..ffmpeg_save_videoaudio_video_encode_0.h:4,
from ..ffmpeg_save_videoaudio_video_encode_0.cpp:2:
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:30:2: error: #error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
^~~~~
In file included from ..ffmpeg_save_videoffmpeg_code.h:33:0,
from ..ffmpeg_save_videoaudio_video_encode_0.h:4,
from ..ffmpeg_save_videowidget.h:30,
from ..ffmpeg_save_videomain.cpp:1:
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:30:2: error: #error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
^~~~~
In file included from ..ffmpeg_save_videoffmpeg_code.h:33:0,
from ..ffmpeg_save_videoaudio_video_encode_0.h:4,
from ..ffmpeg_save_videowidget.h:30,
from ..ffmpeg_save_videowidget.cpp:1:
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:30:2: error: #error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
^~~~~
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h: In function 'char* av_ts_make_string(char*, int64_t)':
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:46:76: warning: conversion lacks type at end of format [-Wformat=]
else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%l", ts);
^
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:46:76: warning: too many arguments for format [-Wformat-extra-args]
mingw32-make[1]: *** [Makefile.Release:980: release/Color_conversion.o] Error 1
mingw32-make[1]: *** Waiting for unfinished jobs....
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h: In function 'char* av_ts_make_string(char*, int64_t)':
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:46:76: warning: conversion lacks type at end of format [-Wformat=]
else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%l", ts);
^
..ffmpeg_save_videoffmpeg-win32-shared-dllinclude/libavutil/timestamp.h:46:76: warning: too many arguments for format [-Wformat-extra-args]
..ffmpeg_save_videoffmpeg_code.cpp: In function 'void ffmpeg_open_audio(AVFormatContext*, AVCodec*, OutputStream*, AVDictionary*)':
..ffmpeg_save_videoffmpeg_code.cpp:92:41: warning: unused parameter 'oc' [-Wunused-parameter]
void ffmpeg_open_audio(AVFormatContext *oc,
^~
..ffmpeg_save_videoffmpeg_code.cpp: In function 'int ffmpeg_write_audio_frame(AVFormatContext*, OutputStream*, AVFrame* (*)(OutputStream*))':
..ffmpeg_save_videoffmpeg_code.cpp:153:24: warning: missing initializer for member 'AVPacket::pts' [-Wmissing-field-initializers]
AVPacket pkt = { 0 }; // data and size must be 0;
解决方法:
代码语言:javascript复制/新增
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
#if defined __cplusplus
#define __STDC_CONSTANT_MACROS //common.h中的错误
#define __STDC_FORMAT_MACROS //timestamp.h中的错误
#endif