自工作以來,好像每隔一陣子就有機會用到ffmpeg來做視訊處理
像是 android app, embedded linux 或是windows上的視訊播放程式
所以記錄一下這次 Windows 平台搭配 VS 2019 的專案建置流程
3. 複製ffmpeg zip裡的 include/lib 資料夾到<project>目錄下
5. 複製ffmpeg zip裡 include/bin 的 *.dll 到 <project>/out/build/x64-Debug
6. 複製sdl2 zip裡的 include 資料夾到 <project>/include/ 下更名為 SDL2
7. 複製sdl2 zip裡的 lib/SDL2.lib 到 <project>/lib
8. 複製sdl2 zip裡的 lib/SDL2.dll 到 <project>/out/build/x64-Debug
最後配置 CMakeLists.txt 如下
cmake_minimum_required (VERSION 3.8)
project ("ffmpeg-test")
include_directories("include")
link_directories("lib")
add_executable (ffmpeg-test "ffmpeg-test.cpp" "ffmpeg-test.h")
target_link_libraries(
ffmpeg-test
avcodec
avdevice
avfilter
avformat
avutil
postproc
swresample
swscale
SDL2
)
接下來我們就可以用一個簡單的 Hello World 驗証專案設定是否正常
#define SDL_MAIN_HANDLED // Important!
#include "ffmpeg-test.h"
using namespace std;
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavutil/imgutils.h>
#include <libavutil/avstring.h>
#include <libavutil/time.h>
#include <libavutil/opt.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libswresample/swresample.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_thread.h>
}
int main()
{
const char* version = av_version_info();
cout << "FFmpeg version: " << version << endl;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
cout << "SDL could not initialize! SDL_Error: " << SDL_GetError() << endl;
}
else {
cout << "SDL Initialize OK!" << endl;
}
return 0;
}
沒有留言:
張貼留言