Sfoglia il codice sorgente

ffmpeg4.1编码h264和h265

ffmpeg4.1编码h264和h265
huihui 5 anni fa
parent
commit
d44a70ebac
24 ha cambiato i file con 2311 aggiunte e 0 eliminazioni
  1. 13 0
      source/VideoEncode/README.md
  2. 77 0
      source/VideoEncode/VideoEncode.pro
  3. 226 0
      source/VideoEncode/src/AppConfig.cpp
  4. 52 0
      source/VideoEncode/src/AppConfig.h
  5. 98 0
      source/VideoEncode/src/Mutex/Cond.cpp
  6. 55 0
      source/VideoEncode/src/Mutex/Cond.h
  7. 44 0
      source/VideoEncode/src/Mutex/Mutex.cpp
  8. 35 0
      source/VideoEncode/src/Mutex/Mutex.h
  9. 368 0
      source/VideoEncode/src/Video/GetVideoThread.cpp
  10. 76 0
      source/VideoEncode/src/Video/GetVideoThread.h
  11. 258 0
      source/VideoEncode/src/Video/VideoEncoder.cpp
  12. 81 0
      source/VideoEncode/src/Video/VideoEncoder.h
  13. 34 0
      source/VideoEncode/src/main.cpp
  14. 22 0
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/.qmake.stash
  15. 476 0
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/Makefile
  16. 198 0
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/Makefile.Debug
  17. 198 0
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/Makefile.Release
  18. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/AppConfig.obj
  19. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/Cond.obj
  20. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/GetVideoThread.obj
  21. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/Mutex.obj
  22. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/VideoEncode.vc.pdb
  23. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/VideoEncoder.obj
  24. BIN
      source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/main.obj

+ 13 - 0
source/VideoEncode/README.md

@@ -0,0 +1,13 @@
+# ffmpeg4.1采集屏幕编码264和265
+
+这是Qt的工程,建议使用Qt Creator 打开
+
+Qt5.6.2(vs2013/mingw) + ffmpeg4.1  
+1.程序可以在linux下直接编译使用。  
+2.已经编译好的库为centos7.4(64位)(gcc 版本 4.8.5)下编译的,如需32位的库请自行编译。 
+
+# 注:由于采集的图片帧率是不固定的,因此保存后的264或265文件直接播放,速度会不对,属于正常现象。  
+
+学习音视频技术欢迎访问 http://blog.yundiantech.com  
+音视频技术交流讨论欢迎加 QQ群 121376426  
+

+ 77 - 0
source/VideoEncode/VideoEncode.pro

@@ -0,0 +1,77 @@
+TARGET = VideoEncode
+TEMPLATE = app
+CONFIG += console c++11
+CONFIG -= app_bundle
+CONFIG -= qt
+
+UI_DIR  = obj/Gui
+MOC_DIR = obj/Moc
+OBJECTS_DIR = obj/Obj
+
+
+#将输出文件直接放到源码目录下的bin目录下,将dll都放在了次目录中,用以解决运行后找不到dll的问
+#DESTDIR=$$PWD/bin/
+contains(QT_ARCH, i386) {
+    message("32-bit")
+    DESTDIR = $${PWD}/bin32
+} else {
+    message("64-bit")
+    DESTDIR = $${PWD}/bin64
+}
+
+SOURCES += \
+        src/AppConfig.cpp \
+        src/Mutex/Cond.cpp \
+        src/Mutex/Mutex.cpp \
+        src/Video/GetVideoThread.cpp \
+        src/Video/VideoEncoder.cpp \
+        src/main.cpp
+
+HEADERS += \
+    src/AppConfig.h \
+    src/Mutex/Cond.h \
+    src/Mutex/Mutex.h \
+    src/Video/GetVideoThread.h \
+    src/Video/VideoEncoder.h
+
+win32{
+
+    contains(QT_ARCH, i386) {
+        message("32-bit")
+        INCLUDEPATH += $$PWD/lib/win32/ffmpeg/include \
+                       $$PWD/src
+
+        LIBS += -L$$PWD/lib/win32/ffmpeg/lib -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale
+
+    } else {
+        message("64-bit")
+        INCLUDEPATH += $$PWD/lib/win64/ffmpeg/include \
+                       $$PWD/src
+
+        LIBS += -L$$PWD/lib/win64/ffmpeg/lib -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale
+
+    }
+
+}
+
+unix{
+    contains(QT_ARCH, i386) {
+        message("32-bit, 请自行编译32位库!")
+    } else {
+        message("64-bit")
+        INCLUDEPATH += $$PWD/lib/linux/ffmpeg/include \
+                       $$PWD/src
+
+        LIBS += -L$$PWD/lib/linux/ffmpeg/lib  -lavformat  -lavcodec -lavdevice -lavfilter -lavutil -lswresample -lswscale -lpostproc
+
+        LIBS += -lpthread -ldl
+    }
+
+#QMAKE_POST_LINK 表示编译后执行内容
+#QMAKE_PRE_LINK 表示编译前执行内容
+
+#解压库文件
+#QMAKE_PRE_LINK += "cd $$PWD/lib/linux && tar xvzf ffmpeg.tar.gz "
+system("cd $$PWD/lib/linux && tar xvzf ffmpeg.tar.gz")
+
+}

+ 226 - 0
source/VideoEncode/src/AppConfig.cpp

@@ -0,0 +1,226 @@
+#include "AppConfig.h"
+
+#if defined(WIN32)
+#include <Windows.h>
+#include <direct.h>
+#include <io.h> //C (Windows)    access
+#else
+#include <sys/time.h>
+#include <stdio.h>
+#include <unistd.h>
+
+void Sleep(long mSeconds)
+{
+    usleep(mSeconds * 1000);
+}
+#endif
+
+#include <time.h>
+
+int AppConfig::VERSION = 1;
+char AppConfig::VERSION_NAME[32] = "1.0.0";
+
+AppConfig::AppConfig()
+{
+
+}
+
+void AppConfig::mkdir(char *dirName)
+{
+#if defined(WIN32)
+    ///如果目录不存在 则创建它
+    if (access(dirName, 0)!=0)
+    {
+        _mkdir(dirName);
+    }
+#else
+    ///如果目录不存在 则创建它
+    if (access(dirName, R_OK)!=0)
+    {
+        char cmd[128];
+        sprintf(cmd,"mkdir %s", dirName);
+        system(cmd);
+    }
+#endif
+}
+
+void AppConfig::mkpath(char *path)
+{
+#if defined(WIN32)
+        ///windows创建文件夹命令 路径得是反斜杠 因此这里需要替换一下
+        char dirPath[128] = {0};
+        strcpy(dirPath, path);
+
+        AppConfig::replaceChar(dirPath, '/', '\\');
+
+        ///如果目录不存在 则创建它
+        if (access(dirPath, 0)!=0)
+        {
+    //        _mkdir(dirPath);
+            char cmd[128];
+            sprintf(cmd,"mkdir %s", dirPath);
+            system(cmd);
+        }
+
+#else
+    ///如果目录不存在 则创建它
+    if (access(path,R_OK)!=0)
+    {
+        char cmd[128];
+        sprintf(cmd,"mkdir %s -p",path);
+        system(cmd);
+    }
+#endif
+}
+
+void AppConfig::removeDir(char *dirName)
+{
+    if (strlen(dirName) <= 0) return;
+
+    if (access(dirName, 0) != 0 ) //文件夹不存在
+    {
+        return;
+    }
+
+#if defined(WIN32)
+
+    ///删除本地文件
+    char cmd[128];
+    sprintf(cmd,"rd /s /q \"%s\"", dirName);
+    system(cmd);
+
+#else
+
+    char cmd[128];
+    sprintf(cmd,"rm -rf \"%s\"",dirName);
+    system(cmd);
+
+#endif
+}
+
+void AppConfig::removeFile(const char *filePath)
+{
+    if (filePath == NULL || strlen(filePath) <= 0) return;
+
+#if defined(WIN32)
+
+        ///删除本地文件
+        remove(filePath);
+
+#else
+        ///删除本地文件
+        char cmd[128] = {0};
+        sprintf(cmd,"rm -rf \"%s\"",filePath);
+        system(cmd);
+#endif
+}
+
+void AppConfig::copyFile(const char *srcFile, const char *destFile)
+{
+
+#if defined(WIN32)
+        CopyFileA(srcFile, destFile, FALSE);
+#else
+
+        ///将文件拷贝到远端服务器
+        char copyfilecmd[512];
+        sprintf(copyfilecmd,"cp \"%s\" \"%s\"", srcFile, destFile);
+        system(copyfilecmd);
+
+#endif
+}
+
+void AppConfig::replaceChar(char *string, char oldChar, char newChar)
+{
+    int len = strlen(string);
+    int i;
+    for (i = 0; i < len; i++){
+        if (string[i] == oldChar){
+            string[i] = newChar;
+        }
+    }
+}
+
+
+std::string AppConfig::removeFirstAndLastSpace(std::string &s)
+{
+    if (s.empty())
+    {
+        return s;
+    }
+    s.erase(0,s.find_first_not_of(" "));
+    s.erase(s.find_last_not_of(" ") + 1);
+    return s;
+}
+
+std::string AppConfig::getIpFromRtspUrl(std::string rtspUrl)
+{
+    std::string strIP;
+    std::string strUrl = rtspUrl;
+    if(strUrl.find("@") == std::string::npos)
+    {
+        long nPos1 = strUrl.find("//");
+        long nPos2 = strUrl.rfind(":");
+        if(nPos1 != std::string::npos && nPos2 != std::string::npos)
+        {
+            long nOffset = nPos2 - nPos1 - strlen("//");
+            strIP = strUrl.substr(nPos1 + strlen("//"), nOffset);
+        }
+    }
+    else
+    {
+        long nPos1 = strUrl.find("@");
+        long nPos2 = strUrl.rfind(":");
+        if(nPos1 != std::string::npos && nPos2 != std::string::npos)
+        {
+            long nOffset = nPos2 - nPos1 - strlen("@");
+            strIP = strUrl.substr(nPos1 + strlen("@"), nOffset);
+
+            int index = strIP.find("/");
+            strIP = strIP.substr(0, index);
+        }
+    }
+    return strIP;
+}
+
+void AppConfig::mSleep(int mSecond)
+{
+#if defined(WIN32)
+    Sleep(mSecond);
+#else
+    usleep(mSecond * 1000);
+#endif
+}
+
+int64_t AppConfig::getTimeStamp_MilliSecond()
+{
+
+    int mSecond = 0; //当前毫秒数
+
+#if defined(WIN32)
+
+    SYSTEMTIME sys;
+    GetLocalTime( &sys );
+
+    mSecond = sys.wMilliseconds;
+
+#else
+
+    struct timeval    tv;
+    struct timezone tz;
+
+    struct tm         *p;
+
+    gettimeofday(&tv, &tz);
+    p = localtime(&tv.tv_sec);
+
+    mSecond = tv.tv_usec / 1000;
+
+
+#endif
+
+    int64_t timeStamp = (int64_t)time(NULL) * 1000 + mSecond;
+
+    return timeStamp;
+
+}

+ 52 - 0
source/VideoEncode/src/AppConfig.h

@@ -0,0 +1,52 @@
+#ifndef APPCONFIG_H
+#define APPCONFIG_H
+
+#include <stdio.h>
+#include <string.h>
+#include <string>
+
+#if defined(WIN32)
+
+#define PRINT_INT64_FORMAT "%I64d"
+
+#else
+#include <sys/time.h>
+#include <stdio.h>
+#include <unistd.h>
+
+void Sleep(long mSeconds);
+
+#define PRINT_INT64_FORMAT "%lld"
+
+#endif
+
+typedef unsigned char uchar;
+
+class AppConfig
+{
+public:
+    AppConfig();
+
+    static int VERSION;
+    static char VERSION_NAME[32];
+
+    static void mkdir(char *dirName); //创建文件夹
+    static void mkpath(char *path);   //创建多级文件夹
+
+    static void removeDir(char *dirName);
+    static void removeFile(const char *filePath);
+
+    static void copyFile(const char *srcFile, const char *destFile);
+
+    static void replaceChar(char *string, char oldChar, char newChar); //字符串替换字符
+    static std::string removeFirstAndLastSpace(std::string &s); //移除开始和结束的空格
+
+    static std::string getIpFromRtspUrl(std::string rtspUrl); //从rtsp地址中获取ip地址
+
+    static void mSleep(int mSecond);
+
+    static int64_t getTimeStamp_MilliSecond(); //获取时间戳(毫秒)
+
+};
+
+#endif // APPCONFIG_H

+ 98 - 0
source/VideoEncode/src/Mutex/Cond.cpp

@@ -0,0 +1,98 @@
+#include "Cond.h"
+
+Cond::Cond()
+{
+#if defined(WIN32) && !defined(MINGW)
+    InitializeCriticalSection(&m_mutex);
+    InitializeConditionVariable(&m_cond);
+#else
+    pthread_mutex_init(&m_mutex, NULL);
+    pthread_cond_init(&m_cond, NULL);
+#endif
+
+}
+
+Cond::~Cond()
+{
+#if defined(WIN32) && !defined(MINGW)
+    DeleteCriticalSection(&m_mutex);
+#else
+    pthread_mutex_destroy(&m_mutex);
+    pthread_cond_destroy(&m_cond);
+#endif
+
+}
+
+//加锁
+int Cond::Lock()
+{
+#if defined(WIN32) && !defined(MINGW)
+    EnterCriticalSection(&m_mutex);
+    return 0;
+#else
+    return pthread_mutex_lock(&m_mutex);
+#endif
+
+}
+
+//解锁
+int Cond::Unlock()
+{
+#if defined(WIN32) && !defined(MINGW)
+    LeaveCriticalSection(&m_mutex);
+    return 0;
+#else
+    return pthread_mutex_unlock(&m_mutex);
+#endif
+}
+
+int Cond::Wait()
+{
+#if defined(WIN32) && !defined(MINGW)
+    DWORD ret = SleepConditionVariableCS((PCONDITION_VARIABLE)&m_cond, &m_mutex, INFINITE);
+#else
+    int ret = pthread_cond_wait(&m_cond, &m_mutex);
+#endif
+
+    return ret;
+
+}
+
+//固定时间等待
+int Cond::TimedWait(int second)
+{
+#if defined(WIN32) && !defined(MINGW)
+    SleepConditionVariableCS((PCONDITION_VARIABLE)&m_cond, &m_mutex, second*1000);
+    return 0;
+#else
+    struct timespec abstime;
+    //获取从当前时间,并加上等待时间, 设置进程的超时睡眠时间
+    clock_gettime(CLOCK_REALTIME, &abstime);
+    abstime.tv_sec += second;
+    return pthread_cond_timedwait(&m_cond, &m_mutex, &abstime);
+#endif
+
+}
+
+int Cond::Signal()
+{
+#if defined(WIN32) && !defined(MINGW)
+    int ret = 0;
+    WakeConditionVariable((PCONDITION_VARIABLE)&m_cond);
+#else
+    int ret = pthread_cond_signal(&m_cond);
+#endif
+    return ret;
+}
+
+//唤醒所有睡眠线程
+int Cond::Broadcast()
+{
+#if defined(WIN32) && !defined(MINGW)
+    WakeAllConditionVariable((PCONDITION_VARIABLE)&m_cond);
+    return 0;
+#else
+    return pthread_cond_broadcast(&m_cond);
+#endif
+
+}

+ 55 - 0
source/VideoEncode/src/Mutex/Cond.h

@@ -0,0 +1,55 @@
+#ifndef COND_H
+#define COND_H
+
+/// 注意Mingw的话使用的是linux下的api pthread
+/// 没有_MSC_VER这个宏 我们就认为他用的是mingw编译器
+
+#ifndef _MSC_VER
+#define MINGW
+#endif
+
+#if defined(WIN32) && !defined(MINGW)
+    #include <WinSock2.h>
+    #include <Windows.h>
+#else
+    #include <pthread.h>
+    #include <time.h>
+#endif
+
+class Cond
+{
+public:
+    Cond();
+    ~Cond();
+
+    //上锁
+    int Lock();
+
+    //解锁
+    int Unlock();
+
+    //
+    int Wait();
+
+    //固定时间等待
+    int TimedWait(int second);
+
+    //
+    int Signal();
+
+    //唤醒所有睡眠线程
+    int Broadcast();
+
+private:
+
+#if defined(WIN32) && !defined(MINGW)
+    CRITICAL_SECTION m_mutex;
+    RTL_CONDITION_VARIABLE m_cond;
+#else
+    pthread_mutex_t m_mutex;
+    pthread_cond_t m_cond;
+#endif
+
+};
+
+#endif // MUTEX_H

+ 44 - 0
source/VideoEncode/src/Mutex/Mutex.cpp

@@ -0,0 +1,44 @@
+#include "Mutex.h"
+
+Mutex::Mutex()
+{
+#if defined(WIN32)
+    m_mutex = ::CreateMutex(NULL, FALSE, NULL);
+#else
+    pthread_mutex_init(&mutex, NULL);
+#endif
+
+}
+
+Mutex::~Mutex()
+{
+#if defined(WIN32)
+    ::CloseHandle(m_mutex);
+#else
+     pthread_mutex_destroy(&mutex);
+#endif
+
+}
+
+int Mutex::Lock() const
+{
+#if defined(WIN32)
+    DWORD ret = WaitForSingleObject(m_mutex, INFINITE);
+#else
+    int ret = pthread_mutex_lock((pthread_mutex_t*)&mutex);
+#endif
+
+    return ret;
+
+}
+
+int Mutex::Unlock() const
+{
+#if defined(WIN32)
+    bool ret = ::ReleaseMutex(m_mutex);
+#else
+    int ret = pthread_mutex_unlock((pthread_mutex_t*)&mutex);
+#endif
+    return ret;
+}
+

+ 35 - 0
source/VideoEncode/src/Mutex/Mutex.h

@@ -0,0 +1,35 @@
+#ifndef MUTEX_H
+#define MUTEX_H
+
+
+#if defined(WIN32)
+    #include <WinSock2.h>
+    #include <Windows.h>
+//#elif defined(Q_OS_LINUX)
+#else
+    #include <pthread.h>
+#endif
+
+class Mutex
+{
+public:
+    Mutex();
+    ~Mutex();
+
+    //确保拥有互斥对象的线程对被保护资源的独自访问
+    int Lock() const;
+
+    //释放当前线程拥有的互斥对象,以使其它线程可以拥有互斥对象,对被保护资源进行访问
+    int Unlock() const;
+
+private:
+
+#if defined(WIN32)
+     HANDLE m_mutex;
+#else
+    pthread_mutex_t mutex;
+#endif
+
+};
+
+#endif // MUTEX_H

+ 368 - 0
source/VideoEncode/src/Video/GetVideoThread.cpp

@@ -0,0 +1,368 @@
+/**
+ * 叶海辉
+ * QQ群121376426
+ * http://blog.yundiantech.com/
+ */
+
+#include "AppConfig.h"
+#include "GetVideoThread.h"
+
+
+//'1' Use Dshow
+//'0' Use VFW
+#define USE_DSHOW 0
+
+//Show Dshow Device
+void show_dshow_device()
+{
+    AVFormatContext *pFormatCtx = avformat_alloc_context();
+    AVDictionary* options = nullptr;
+    av_dict_set(&options,"list_devices","true",0);
+    AVInputFormat *iformat = av_find_input_format("dshow");
+    printf("========Device Info=============\n");
+    avformat_open_input(&pFormatCtx,"video=dummy",iformat,&options);
+    printf("================================\n");
+}
+
+//Show Dshow Device Option
+void show_dshow_device_option()
+{
+    AVFormatContext *pFormatCtx = avformat_alloc_context();
+    AVDictionary* options = nullptr;
+    av_dict_set(&options,"list_options","true",0);
+    AVInputFormat *iformat = av_find_input_format("dshow");
+    printf("========Device Option Info======\n");
+    avformat_open_input(&pFormatCtx,"video=Integrated Camera",iformat,&options);
+    printf("================================\n");
+}
+
+//Show VFW Device
+void show_vfw_device()
+{
+    AVFormatContext *pFormatCtx = avformat_alloc_context();
+    AVInputFormat *iformat = av_find_input_format("vfwcap");
+    printf("========VFW Device Info======\n");
+    avformat_open_input(&pFormatCtx,"list",iformat,nullptr);
+    printf("=============================\n");
+}
+
+//Show AVFoundation Device
+void show_avfoundation_device()
+{
+    AVFormatContext *pFormatCtx = avformat_alloc_context();
+
+    AVDictionary* options = nullptr;
+    av_dict_set(&options,"list_devices","true",0);
+    AVInputFormat *iformat = av_find_input_format("avfoundation");
+    printf("==AVFoundation Device Info===\n");
+    avformat_open_input(&pFormatCtx, "",iformat, &options);
+    printf("=============================\n");
+}
+
+GetVideoThread::GetVideoThread()
+{
+    m_isRun = false;
+
+    pFormatCtx = NULL;
+    out_buffer = NULL;
+    pFrame = NULL;
+    pFrameYUV = NULL;
+    pCodecCtx = NULL;
+
+    m_pause = false;
+
+    mVideoEncoder = new VideoEncoder();
+
+}
+
+GetVideoThread::~GetVideoThread()
+{
+
+}
+
+void GetVideoThread::setQuantity(int value)
+{
+    mVideoEncoder->setQuantity(value);
+}
+
+ErroCode GetVideoThread::init()
+{
+
+    AVCodec			*pCodec = nullptr;
+
+    pFormatCtx = avformat_alloc_context();
+
+#if defined(WIN32)
+
+    //Show Dshow Device
+    show_dshow_device();
+    //Show Device Options
+    show_dshow_device_option();
+    //Show VFW Options
+    show_vfw_device();
+
+
+    AVInputFormat *ifmt = av_find_input_format("dshow"); //使用dshow
+
+    if(avformat_open_input(&pFormatCtx, "video=screen-capture-recorder", ifmt, nullptr)!=0)
+    {
+        fprintf(stderr, "Couldn't open input stream video.(无法打开输入流)\n");
+        return VideoOpenFailed;
+    }
+#elif defined __linux
+//Linux
+//    AVInputFormat *ifmt=av_find_input_format("video4linux2");
+//    if(avformat_open_input(&pFormatCtx, "/dev/video0", ifmt, NULL)!=0)
+//    {
+//        fprintf(stderr, "Couldn't open input stream.\n");
+//        return -1;
+//    }
+
+    AVDictionary* options = NULL;
+//    av_dict_set(&options,"list_devices","true", 0);
+    /* set frame per second */
+//    av_dict_set( &options,"framerate","30", 0);
+    av_dict_set( &options,"show_region","1", 0);
+//    av_dict_set( &options,"video_size","1240x480", 0);
+//    av_dict_set( &options, "preset", "medium", 0 );
+
+    /*
+    X11 video input device.
+    To enable this input device during configuration you need libxcb installed on your system. It will be automatically detected during configuration.
+    This device allows one to capture a region of an X11 display.
+    refer : https://www.ffmpeg.org/ffmpeg-devices.html#x11grab
+    */
+    AVInputFormat *ifmt = av_find_input_format("x11grab");
+    if(avformat_open_input(&pFormatCtx, ":0.0+10,250", ifmt, &options) != 0)
+//    if(avformat_open_input(&pFormatCtx, ":0.0", ifmt, &options) != 0)
+    {
+        fprintf(stderr, "\nerror in opening input device\n");
+        return VideoOpenFailed;
+    }
+#else
+    show_avfoundation_device();
+    //Mac
+    AVInputFormat *ifmt=av_find_input_format("avfoundation");
+    //Avfoundation
+    //[video]:[audio]
+    if(avformat_open_input(&pFormatCtx,"0",ifmt,NULL)!=0)
+    {
+        fprintf(stderr, "Couldn't open input stream.\n");
+        return VideoOpenFailed;
+    }
+#endif
+
+    videoindex=-1;
+    pCodecCtx = NULL;
+
+    for(i=0; i<pFormatCtx->nb_streams; i++)
+        if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
+        {
+            videoindex=i;
+            break;
+        }
+
+    if(videoindex==-1)
+    {
+        printf("Didn't find a video stream.(没有找到视频流)\n");
+        return VideoOpenFailed;
+    }
+
+    pCodecCtx = pFormatCtx->streams[videoindex]->codec;
+    pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
+
+    if(pCodec == NULL)
+    {
+        printf("video Codec not found.\n");
+        return VideoDecoderOpenFailed;
+    }
+
+    if(avcodec_open2(pCodecCtx, pCodec,NULL)<0)
+    {
+        printf("Could not open video codec.\n");
+        return VideoDecoderOpenFailed;
+    }
+
+    pFrame = av_frame_alloc();
+    pFrameYUV = av_frame_alloc();
+    out_buffer=(uint8_t *)av_malloc(avpicture_get_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height));
+    avpicture_fill((AVPicture *)pFrameYUV, out_buffer, AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
+
+
+    //***************
+//    int Screen_W = GetSystemMetrics(SM_CXSCREEN); //获取屏幕宽高
+//    int Screen_H = GetSystemMetrics(SM_CYSCREEN);
+    mVideoEncoder->setWidth(pCodecCtx->width, pCodecCtx->height);  //设置编码器的宽高
+
+    return SUCCEED;
+}
+
+void GetVideoThread::deInit()
+{
+    if (out_buffer)
+    {
+        av_free(out_buffer);
+        out_buffer = NULL;
+    }
+
+    if (pFrame)
+    {
+        av_free(pFrame);
+        pFrame = NULL;
+    }
+
+    if (pFrameYUV)
+    {
+        av_free(pFrameYUV);
+        pFrameYUV = NULL;
+    }
+
+    if (pCodecCtx)
+        avcodec_close(pCodecCtx);
+
+    avformat_close_input(&pFormatCtx);
+    avformat_free_context(pFormatCtx);
+
+}
+
+void GetVideoThread::startRecord()
+{
+    m_isRun = true;
+
+    //启动新的线程
+    std::thread([&](GetVideoThread *pointer)
+    {
+        pointer->run();
+
+    }, this).detach();
+
+    mVideoEncoder->startEncode();
+}
+
+void GetVideoThread::pauseRecord()
+{
+    m_pause = true;
+}
+
+void GetVideoThread::restoreRecord()
+{
+    m_getFirst = false;
+    m_pause = false;
+}
+
+void GetVideoThread::stopRecord()
+{
+    m_isRun = false;
+}
+
+//FILE *fp = fopen("out.yuv","wb");
+
+void GetVideoThread::run()
+{
+    struct SwsContext *img_convert_ctx = NULL;
+
+    int y_size = 0;
+    int yuvSize = 0;
+
+    if (pCodecCtx)
+    {
+        y_size = pCodecCtx->width * pCodecCtx->height;
+        yuvSize = avpicture_get_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
+        ///理论上 这里的 size = y_size * 3 / 2
+
+        int numBytes = yuvSize;
+        out_buffer = (uint8_t *) av_malloc(numBytes * sizeof(uint8_t));
+        avpicture_fill((AVPicture *) pFrameYUV, out_buffer, AV_PIX_FMT_YUV420P,pCodecCtx->width, pCodecCtx->height);
+
+        img_convert_ctx = sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt,
+                                         pCodecCtx->width, pCodecCtx->height, AV_PIX_FMT_YUV420P,
+                                         SWS_BICUBIC, NULL, NULL, NULL);
+    }
+
+    AVPacket *packet=(AVPacket *)av_malloc(sizeof(AVPacket));
+
+    int64_t firstTime = AppConfig::getTimeStamp_MilliSecond();
+    m_getFirst = false;
+    int64_t timeIndex = 0;
+
+    bool m_saveVideoFileThread = true;
+
+    while(m_isRun )
+    {
+        if (av_read_frame(pFormatCtx, packet)<0)
+        {
+            fprintf(stderr, "read failed! \n");
+            AppConfig::mSleep(10);
+            continue;
+        }
+
+        if (m_pause)
+        {
+            av_packet_unref(packet);
+            AppConfig::mSleep(10);
+            continue;
+        }
+
+        if(packet->stream_index==videoindex)
+        {
+            int64_t time = 0;
+            if (m_saveVideoFileThread)
+            {
+                if (m_getFirst)
+                {
+                    int64_t secondTime = AppConfig::getTimeStamp_MilliSecond();
+                    time = secondTime - firstTime + timeIndex;
+                }
+                else
+                {
+                    firstTime = AppConfig::getTimeStamp_MilliSecond();
+                    timeIndex = 0;
+                    m_getFirst = true;
+                }
+            }
+
+            if (avcodec_send_packet(pCodecCtx, packet) != 0)
+            {
+               fprintf(stderr, "input AVPacket to decoder failed!\n");
+               av_packet_unref(packet);
+               continue;
+            }
+
+            while (0 == avcodec_receive_frame(pCodecCtx, pFrame))
+            {
+                /// 转换成YUV420
+                /// 由于解码后的数据不一定是yuv420p,比如硬件解码后会是yuv420sp,因此这里统一转成yuv420p
+                sws_scale(img_convert_ctx, (const uint8_t* const*)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameYUV->data, pFrameYUV->linesize);
+
+                if (m_saveVideoFileThread)
+                {
+                    uint8_t * picture_buf = (uint8_t *)av_malloc(yuvSize);
+                    memcpy(picture_buf, out_buffer, yuvSize);
+//                        fwrite(picture_buf,1,y_size*3/2,fp);
+//                        av_free(picture_buf);
+                    mVideoEncoder->inputYuvBuffer(picture_buf, yuvSize, time); //将yuv数据添加到h.264编码的线程
+                }
+            }
+        }
+        else
+        {
+            fprintf(stderr, "other %d \n", packet->stream_index);
+        }
+        av_packet_unref(packet);
+
+    }
+
+    sws_freeContext(img_convert_ctx);
+
+    fprintf(stderr, "record stopping... \n");
+
+    m_pause = false;
+
+    deInit();
+
+    mVideoEncoder->stopEncode();
+
+    fprintf(stderr, "record finished! \n");
+
+}
+

+ 76 - 0
source/VideoEncode/src/Video/GetVideoThread.h

@@ -0,0 +1,76 @@
+/**
+ * 叶海辉
+ * QQ群121376426
+ * http://blog.yundiantech.com/
+ */
+
+#ifndef GetVideoThread_H
+#define GetVideoThread_H
+
+extern "C"
+{
+#include "libavcodec/avcodec.h"
+#include "libavformat/avformat.h"
+#include "libswscale/swscale.h"
+#include "libavdevice/avdevice.h"
+}
+
+#include "VideoEncoder.h"
+
+enum ErroCode
+{
+    AudioOpenFailed = 0,
+    VideoOpenFailed,
+    AudioDecoderOpenFailed,
+    VideoDecoderOpenFailed,
+    SUCCEED
+};
+
+/**
+ * @brief The GetVideoThread class  此类主要负责采集屏幕
+ */
+
+class GetVideoThread
+{
+
+public:
+    explicit GetVideoThread();
+    ~GetVideoThread();
+
+    /**
+     * @brief init 初始化打开录屏设备
+     * @param videoDevName
+     * @return
+     */
+    ErroCode init();
+    void deInit();
+
+    void setQuantity(int value);
+
+    void startRecord();
+    void pauseRecord();
+    void restoreRecord();
+    void stopRecord();
+
+protected:
+    void run();
+
+private:
+
+    AVFormatContext	*pFormatCtx;
+    int				i, videoindex;
+    AVCodecContext	*pCodecCtx;
+
+    AVFrame	*pFrame,*pFrameYUV;
+    uint8_t *out_buffer;
+
+    bool m_isRun;
+    bool m_pause;
+
+    bool m_getFirst; //是否获取到了时间基准
+
+    VideoEncoder *mVideoEncoder;
+
+};
+
+#endif // GetVideoThread_H

+ 258 - 0
source/VideoEncode/src/Video/VideoEncoder.cpp

@@ -0,0 +1,258 @@
+/**
+ * 叶海辉
+ * QQ群121376426
+ * http://blog.yundiantech.com/
+ */
+
+#include "AppConfig.h"
+#include "VideoEncoder.h"
+
+#define ENCODE_H264
+
+VideoEncoder::VideoEncoder()
+{
+    mBitRate = 600000;
+    mIsStop = true;
+
+    pCodecCtx = NULL;
+    pCodec = NULL;
+
+    picture_buf = NULL;
+    picture = NULL;
+
+    mCond = new Cond();
+}
+
+VideoEncoder::~VideoEncoder()
+{
+
+}
+
+void VideoEncoder::setQuantity(int value)
+{
+    mBitRate = 450000 + (value - 5) * 50000;
+}
+
+void VideoEncoder::setWidth(int w, int h)
+{
+    mWidth = w;
+    mHeight = h;
+}
+
+void VideoEncoder::inputYuvBuffer(uint8_t *buffer, int size, int64_t time)
+{
+    FrameDataNode node;
+    node.size = size;
+    node.buffer = buffer;
+    node.time = time;
+
+    mCond->Lock();
+    mYuvBufferList.push_back(node);
+    mCond->Unlock();
+    mCond->Signal();
+}
+
+void VideoEncoder::startEncode()
+{
+    mIsStop = false;
+
+    //启动新的线程
+    std::thread([&](VideoEncoder *pointer)
+    {
+        pointer->run();
+
+    }, this).detach();
+}
+
+void VideoEncoder::stopEncode()
+{
+    mIsStop = true;
+}
+
+void VideoEncoder::run()
+{
+    openEncoder();
+
+    int y_size = pCodecCtx->width * pCodecCtx->height;
+
+    AVPacket pkt;
+    av_new_packet(&pkt, y_size*3);
+
+#ifdef ENCODE_H265
+    FILE *h264Fp = fopen("out.h265","wb");
+#else
+    FILE *h264Fp = fopen("out.h264","wb");
+#endif
+
+    while(1)
+    {
+        mCond->Lock();
+
+        while(mYuvBufferList.empty())
+        {
+            mCond->Wait();
+        }
+
+        FrameDataNode node = mYuvBufferList.front(); //取出一帧yuv数据
+        mYuvBufferList.pop_front();
+
+        mCond->Unlock();
+
+        if (node.buffer != NULL)
+        {
+//            picture->data[0] = node.buffer;     // 亮度Y
+//            picture->data[1] = node.buffer + y_size;  // U
+//            picture->data[2] = node.buffer + y_size*5/4; // V
+
+            memcpy(picture_buf, node.buffer, node.size);
+
+            if (avcodec_send_frame(pCodecCtx, picture) != 0)
+            {
+               fprintf(stderr, "Error sending a frame for encoding!\n");
+               continue;
+            }
+
+            while (0 == avcodec_receive_packet(pCodecCtx, &pkt))
+            {
+                bool isKeyFrame = pkt.flags & AV_PKT_FLAG_KEY; //判断是否关键帧
+                int w = fwrite(pkt.data, 1, pkt.size, h264Fp); //写入文件中 (h264的裸数据 直接写入文件 也可以播放  因为这里包含H264关键帧)
+
+                fprintf(stderr, "%s encoded size=%d isKeyFrame=%d\n", __FUNCTION__, pkt.size, isKeyFrame);
+            }
+
+            av_packet_unref(&pkt);
+            av_free(node.buffer);
+        }
+    }
+
+//    /*由于编码成H264的时候,一开始输入的几帧数据,不会立马输出
+//     *因此停止输入的时候,编码器里面其实还是有数据的,下面的代码就是取出这个数据
+//     *这个数据并不多 不处理也是可以的
+//     */
+//    while(1)
+//    {
+//         int got_picture=0;
+//         int ret = avcodec_encode_video2(pCodecCtx, &pkt,NULL, &got_picture);
+
+//         if (got_picture)
+//         {
+//               fwrite(pkt.data,1,pkt.size,h264Fp);
+//         }
+//         else
+//         {
+//             break;
+//         }
+//         av_free_packet(&pkt);
+//    }
+
+    fclose(h264Fp);
+
+    closeEncoder();
+
+}
+
+bool VideoEncoder::openEncoder()
+{
+    int size;
+    int in_w = mWidth;
+    int in_h = mHeight;//宽高
+
+#ifdef ENCODE_H265
+    AVCodecID codec_id = AV_CODEC_ID_H265;
+#else
+    AVCodecID codec_id = AV_CODEC_ID_H264;
+#endif
+
+    //查找h264编码器
+    pCodec = avcodec_find_encoder(codec_id);
+    if(!pCodec)
+    {
+      fprintf(stderr, "h264 codec not found\n");
+      exit(1);
+    }
+
+    pCodecCtx = avcodec_alloc_context3(pCodec);
+
+    pCodecCtx->codec_id = codec_id;
+    pCodecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
+    pCodecCtx->pix_fmt = AV_PIX_FMT_YUV420P;
+    pCodecCtx->width = in_w;
+    pCodecCtx->height = in_h;
+    pCodecCtx->time_base.num = 1;
+    pCodecCtx->time_base.den = 15;//帧率(既一秒钟多少张图片)
+    pCodecCtx->bit_rate = mBitRate; //比特率(调节这个大小可以改变编码后视频的质量)
+    pCodecCtx->gop_size=12;
+    //H264 还可以设置很多参数 自行研究吧
+////    pCodecCtx->me_range = 16;
+////    pCodecCtx->max_qdiff = 4;
+////    pCodecCtx->qcompress = 0.6;
+////    pCodecCtx->qmin = 10;
+////    pCodecCtx->qmax = 51;
+//    pCodecCtx->me_range = 16;
+//    pCodecCtx->max_qdiff = 1;
+//    pCodecCtx->qcompress = 0.6;
+//    pCodecCtx->qmin = 10;
+//    pCodecCtx->qmax = 51;
+//    //Optional Param
+//    pCodecCtx->max_b_frames=3;
+
+
+    // some formats want stream headers to be separate
+    if (pCodecCtx->flags & AVFMT_GLOBALHEADER)
+        pCodecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+
+    //编码器预设
+    AVDictionary *param = 0;
+    if(pCodecCtx->codec_id == AV_CODEC_ID_H264)
+    {
+        av_dict_set(&param, "preset", "medium", 0);
+//        av_dict_set(&param, "preset", "superfast", 0);
+        av_dict_set(&param, "tune", "zerolatency", 0); //实现实时编码
+        av_dict_set(&param, "profile", "main", 0);
+    }
+    else if(pCodecCtx->codec_id == AV_CODEC_ID_H265)
+    {
+        av_dict_set(&param, "preset", "ultrafast", 0);
+        av_dict_set(&param, "tune", "zerolatency", 0);
+        av_dict_set(&param, "profile", "main", 0);
+    }
+
+    if (avcodec_open2(pCodecCtx, pCodec,&param) < 0)
+    {
+        printf("Failed to open video encoder! 编码器打开失败!\n");
+        return false;
+    }
+
+    picture = av_frame_alloc();
+
+    picture->format = pCodecCtx->pix_fmt;
+    picture->width  = pCodecCtx->width;
+    picture->height = pCodecCtx->height;
+
+    size = avpicture_get_size(pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height); //计算需要用到的数据大小
+    picture_buf = (uint8_t *)av_malloc(size); //分配空间
+    avpicture_fill((AVPicture *)picture, picture_buf, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height);
+
+    return true;
+
+}
+
+bool VideoEncoder::closeEncoder()
+{
+    if (picture != NULL)
+        av_free(picture);
+
+    if (picture_buf != NULL)
+        av_free(picture_buf);
+
+    if (pCodecCtx != NULL)
+        avcodec_close(pCodecCtx);
+
+    pCodecCtx = NULL;
+    pCodec = NULL;
+
+    picture_buf = NULL;
+    picture = NULL;
+
+    return true;
+}

+ 81 - 0
source/VideoEncode/src/Video/VideoEncoder.h

@@ -0,0 +1,81 @@
+/**
+ * 叶海辉
+ * QQ群121376426
+ * http://blog.yundiantech.com/
+ */
+
+#ifndef VIDEOENCORDER_H
+#define VIDEOENCORDER_H
+
+#include <list>
+#include <thread>
+#include "Mutex/Cond.h"
+
+extern "C"
+{
+    #include "libavcodec/avcodec.h"
+    #include "libavformat/avformat.h"
+    #include "libswscale/swscale.h"
+    #include "libavdevice/avdevice.h"
+}
+
+struct FrameDataNode
+{
+    uint8_t * buffer;
+    int size;
+    int64_t time;
+
+    FrameDataNode()
+    {
+        buffer = nullptr;
+        size = 0;
+    }
+};
+
+/// 编码h.264的线程  这里把编码和采集分开 放到单独的线程 是因为编码也比较耗时
+class VideoEncoder
+{
+
+public:
+    explicit VideoEncoder();
+    ~VideoEncoder();
+
+    void setWidth(int w, int h);//设置编码后的图像高宽(这个必须和输入的yuv图像数据一样 且必须是偶数)
+    void setQuantity(int value);// 设置编码质量
+
+    void startEncode();
+    void stopEncode();
+
+    /**
+     * @brief inputYuvBuffer 输入需要编码的YUV数据
+     * @param buffer
+     * @param size
+     * @param time
+     */
+    void inputYuvBuffer(uint8_t *buffer, int size, int64_t time);
+
+protected:
+    void run();
+
+private:
+    AVCodecContext* pCodecCtx;
+    AVCodec* pCodec;
+
+    uint8_t* picture_buf;
+    AVFrame* picture;
+
+    std::list<FrameDataNode> mYuvBufferList; //YUV数据队列
+    Cond *mCond;
+
+    int mBitRate; //video bitRate
+    int mWidth;
+    int mHeight;
+
+    bool mIsStop;
+
+    bool openEncoder(); //打开编码器
+    bool closeEncoder(); //关闭编码器
+
+};
+
+#endif // VIDEOENCORDER_H

+ 34 - 0
source/VideoEncode/src/main.cpp

@@ -0,0 +1,34 @@
+#include <iostream>
+
+using namespace std;
+
+#include "AppConfig.h"
+#include "Video/GetVideoThread.h"
+
+int main()
+{
+    cout << "Hello World!" << endl;
+
+    av_register_all();
+    avformat_network_init();
+    avdevice_register_all();
+
+    GetVideoThread *getVideoThread = new GetVideoThread();
+    getVideoThread->setQuantity(10);
+
+    if (getVideoThread->init() == SUCCEED)
+    {
+        getVideoThread->startRecord();
+
+        while(1)
+        {
+            AppConfig::mSleep(10000);
+        }
+    }
+    else
+    {
+        fprintf(stderr, "init device failed! \n");
+    }
+
+    return 0;
+}

+ 22 - 0
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/.qmake.stash

@@ -0,0 +1,22 @@
+QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
+QMAKE_CXX.QMAKE_MSC_VER = 1916
+QMAKE_CXX.QMAKE_MSC_FULL_VER = 191627034
+QMAKE_CXX.COMPILER_MACROS = \
+    QT_COMPILER_STDCXX \
+    QMAKE_MSC_VER \
+    QMAKE_MSC_FULL_VER
+QMAKE_CXX.INCDIRS = \
+    "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Tools\\MSVC\\14.16.27023\\ATLMFC\\include" \
+    "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Tools\\MSVC\\14.16.27023\\include" \
+    "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\include\\um" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.17763.0\\ucrt" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.17763.0\\shared" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.17763.0\\um" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.17763.0\\winrt" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.17763.0\\cppwinrt"
+QMAKE_CXX.LIBDIRS = \
+    "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Tools\\MSVC\\14.16.27023\\ATLMFC\\lib\\x86" \
+    "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Tools\\MSVC\\14.16.27023\\lib\\x86" \
+    "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\lib\\um\\x86" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.17763.0\\ucrt\\x86" \
+    "C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.17763.0\\um\\x86"

+ 476 - 0
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/Makefile

@@ -0,0 +1,476 @@
+#############################################################################
+# Makefile for building: VideoEncode
+# Generated by qmake (3.1) (Qt 5.13.0)
+# Project:  ..\VideoEncode\VideoEncode.pro
+# Template: app
+# Command: D:\Qt\Qt5.13.0\5.13.0\msvc2017\bin\qmake.exe -o Makefile ..\VideoEncode\VideoEncode.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"
+#############################################################################
+
+MAKEFILE      = Makefile
+
+EQ            = =
+
+first: debug
+install: debug-install
+uninstall: debug-uninstall
+QMAKE         = D:\Qt\Qt5.13.0\5.13.0\msvc2017\bin\qmake.exe
+DEL_FILE      = del
+CHK_DIR_EXISTS= if not exist
+MKDIR         = mkdir
+COPY          = copy /y
+COPY_FILE     = copy /y
+COPY_DIR      = xcopy /s /q /y /i
+INSTALL_FILE  = copy /y
+INSTALL_PROGRAM = copy /y
+INSTALL_DIR   = xcopy /s /q /y /i
+QINSTALL      = D:\Qt\Qt5.13.0\5.13.0\msvc2017\bin\qmake.exe -install qinstall
+QINSTALL_PROGRAM = D:\Qt\Qt5.13.0\5.13.0\msvc2017\bin\qmake.exe -install qinstall -exe
+DEL_FILE      = del
+SYMLINK       = $(QMAKE) -install ln -f -s
+DEL_DIR       = rmdir
+MOVE          = move
+SUBTARGETS    =  \
+		debug \
+		release
+
+
+debug: $(MAKEFILE) FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug
+debug-make_first: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug 
+debug-all: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug all
+debug-clean: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug clean
+debug-distclean: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug distclean
+debug-install: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug install
+debug-uninstall: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Debug uninstall
+release: $(MAKEFILE) FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release
+release-make_first: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release 
+release-all: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release all
+release-clean: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release clean
+release-distclean: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release distclean
+release-install: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release install
+release-uninstall: FORCE
+	@set MAKEFLAGS=$(MAKEFLAGS)
+	$(MAKE) -f $(MAKEFILE).Release uninstall
+
+Makefile: ..\VideoEncode\VideoEncode.pro D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\win32-msvc\qmake.conf D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\spec_pre.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\angle.conf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\windows-desktop.conf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\win32\windows_vulkan_sdk.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\windows-vulkan.conf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\msvc-desktop.conf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\qconfig.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3danimation.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3danimation_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dcore.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dcore_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dextras.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dextras_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dinput.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dinput_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dlogic.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dlogic_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquick.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquick_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickanimation.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickanimation_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickextras.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickextras_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickinput.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickinput_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickrender.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickrender_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickscene2d.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickscene2d_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3drender.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3drender_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_accessibility_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axbase.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axbase_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axcontainer.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axcontainer_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axserver.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axserver_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bluetooth.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bluetooth_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bodymovin_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bootstrap_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_charts.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_charts_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_concurrent.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_concurrent_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_core.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_core_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_datavisualization.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_datavisualization_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_dbus.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_dbus_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_designer.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_designer_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_designercomponents_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_devicediscovery_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_edid_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_egl_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_fb_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_fontdatabase_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gamepad.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gamepad_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gui.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gui_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_help.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_help_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_location.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_location_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimedia.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimedia_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimediawidgets.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimediawidgets_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_network.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_network_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_networkauth.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_networkauth_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_nfc.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_nfc_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_opengl.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_opengl_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_openglextensions.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_openglextensions_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_packetprotocol_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_platformcompositor_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioning.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioning_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioningquick.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioningquick_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_printsupport.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_printsupport_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_purchasing.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_purchasing_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qml.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qml_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmldebug_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmldevtools_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmltest.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmltest_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quick.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quick_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickcontrols2.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickcontrols2_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickparticles_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickshapes_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quicktemplates2.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quicktemplates2_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickwidgets.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickwidgets_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_remoteobjects.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_remoteobjects_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_repparser.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_repparser_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_script.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_script_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scripttools.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scripttools_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scxml.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scxml_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sensors.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sensors_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialbus.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialbus_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialport.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialport_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sql.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sql_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_svg.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_svg_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_testlib.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_testlib_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_texttospeech.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_texttospeech_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_theme_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_uiplugin.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_uitools.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_uitools_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_virtualkeyboard.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_virtualkeyboard_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_vulkan_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webchannel.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webchannel_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webengine.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webengine_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginecore.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginecore_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginecoreheaders_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginewidgets.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginewidgets_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_websockets.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_websockets_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webview.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webview_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_widgets.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_widgets_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_winextras.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_winextras_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xml.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xml_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xmlpatterns.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xmlpatterns_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_zlib_private.pri \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qt_functions.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qt_config.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\win32-msvc\qmake.conf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\spec_post.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\exclusive_builds.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\msvc-version.conf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\toolchain.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\default_pre.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\win32\default_pre.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\resolve_config.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\exclusive_builds_post.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\default_post.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\win32\console.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qml_debug.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\precompile_header.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\warn_on.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qmake_use.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\file_copies.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\testcase_targets.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\exceptions.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\yacc.prf \
+		D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\lex.prf \
+		..\VideoEncode\VideoEncode.pro
+	$(QMAKE) -o Makefile ..\VideoEncode\VideoEncode.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\spec_pre.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\angle.conf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\windows-desktop.conf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\win32\windows_vulkan_sdk.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\windows-vulkan.conf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\msvc-desktop.conf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\qconfig.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3danimation.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3danimation_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dcore.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dcore_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dextras.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dextras_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dinput.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dinput_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dlogic.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dlogic_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquick.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquick_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickanimation.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickanimation_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickextras.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickextras_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickinput.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickinput_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickrender.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickrender_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickscene2d.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3dquickscene2d_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3drender.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_3drender_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_accessibility_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axbase.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axbase_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axcontainer.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axcontainer_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axserver.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_axserver_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bluetooth.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bluetooth_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bodymovin_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_bootstrap_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_charts.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_charts_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_concurrent.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_concurrent_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_core.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_core_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_datavisualization.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_datavisualization_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_dbus.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_dbus_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_designer.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_designer_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_designercomponents_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_devicediscovery_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_edid_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_egl_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_fb_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_fontdatabase_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gamepad.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gamepad_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gui.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_gui_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_help.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_help_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_location.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_location_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimedia.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimedia_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimediawidgets.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_multimediawidgets_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_network.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_network_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_networkauth.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_networkauth_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_nfc.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_nfc_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_opengl.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_opengl_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_openglextensions.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_openglextensions_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_packetprotocol_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_platformcompositor_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioning.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioning_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioningquick.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_positioningquick_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_printsupport.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_printsupport_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_purchasing.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_purchasing_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qml.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qml_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmldebug_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmldevtools_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmltest.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qmltest_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quick.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quick_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickcontrols2.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickcontrols2_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickparticles_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickshapes_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quicktemplates2.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quicktemplates2_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickwidgets.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_quickwidgets_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_remoteobjects.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_remoteobjects_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_repparser.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_repparser_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_script.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_script_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scripttools.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scripttools_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scxml.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_scxml_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sensors.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sensors_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialbus.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialbus_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialport.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_serialport_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sql.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_sql_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_svg.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_svg_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_testlib.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_testlib_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_texttospeech.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_texttospeech_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_theme_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_uiplugin.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_uitools.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_uitools_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_virtualkeyboard.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_virtualkeyboard_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_vulkan_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webchannel.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webchannel_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webengine.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webengine_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginecore.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginecore_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginecoreheaders_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginewidgets.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webenginewidgets_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_websockets.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_websockets_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webview.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_webview_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_widgets.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_widgets_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_winextras.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_winextras_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xml.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xml_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xmlpatterns.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_xmlpatterns_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\modules\qt_lib_zlib_private.pri:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qt_functions.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qt_config.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\win32-msvc\qmake.conf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\spec_post.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\exclusive_builds.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\common\msvc-version.conf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\toolchain.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\default_pre.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\win32\default_pre.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\resolve_config.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\exclusive_builds_post.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\default_post.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\win32\console.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qml_debug.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\precompile_header.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\warn_on.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\qmake_use.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\file_copies.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\testcase_targets.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\exceptions.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\yacc.prf:
+D:\Qt\Qt5.13.0\5.13.0\msvc2017\mkspecs\features\lex.prf:
+..\VideoEncode\VideoEncode.pro:
+qmake: FORCE
+	@$(QMAKE) -o Makefile ..\VideoEncode\VideoEncode.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"
+
+qmake_all: FORCE
+
+make_first: debug-make_first release-make_first  FORCE
+all: debug-all release-all  FORCE
+clean: debug-clean release-clean  FORCE
+	-$(DEL_FILE) obj\Obj\VideoEncode.vc.pdb
+	-$(DEL_FILE) ..\VideoEncode\bin32\VideoEncode.ilk
+	-$(DEL_FILE) ..\VideoEncode\bin32\VideoEncode.idb
+distclean: debug-distclean release-distclean  FORCE
+	-$(DEL_FILE) Makefile
+	-$(DEL_FILE) .qmake.stash ..\VideoEncode\bin32\VideoEncode.pdb
+
+check: first
+
+benchmark: first
+FORCE:
+
+$(MAKEFILE).Debug: Makefile
+$(MAKEFILE).Release: Makefile

File diff suppressed because it is too large
+ 198 - 0
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/Makefile.Debug


File diff suppressed because it is too large
+ 198 - 0
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/Makefile.Release


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/AppConfig.obj


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/Cond.obj


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/GetVideoThread.obj


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/Mutex.obj


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/VideoEncode.vc.pdb


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/VideoEncoder.obj


BIN
source/build-VideoEncode-Desktop_Qt_5_13_0_MSVC2017_32bit-Debug/obj/Obj/main.obj


Some files were not shown because too many files changed in this diff