[TOC]
開始前的BB
終于要開始寫東西了呢
image
開始之前我們先把環(huán)境配置好,為了兼容不同平臺的大佬能有相同的體驗暂刘,所以用Clion做為IDE饺谬,話不多說,開搞
image
工程的建立
首先我們用Clion創(chuàng)建一個C++11的工程谣拣,然后在根目錄下簡歷以下幾個文件夾
image
include //存放引用的頭文件
librarys //存放所依賴的庫文件
src //存放代碼
video //存放測試視頻
然后我們?nèi)ハ螺d的shared庫的bin里
image
把dylib放入
librarys/
下
然后去下載解壓后的dev包里,將所有的頭文件募寨,copy到include里,如果現(xiàn)在一步步照著做的話森缠,那么項目的結(jié)構(gòu)是這樣的
image
現(xiàn)在 我們來編寫Cmake(Cmake的語法抽空寫個博客來講绪商,這里暫時就不講了,不懂的同學(xué)告訴你個好消息辅鲸,本專欄已經(jīng)和百度達(dá)成了合作??)
cmake_minimum_required(VERSION 3.13)
project(LearnFFmpeg)
set(CMAKE_CXX_STANDARD 11)
set(SRC_DIR ./)
include_directories(include/)
link_directories(librarys/ffmpeg/)
set(SOURCE_FILES
main.cpp
)
add_executable(LearnFFmpeg
${SOURCE_FILES})
target_link_libraries(
LearnFFmpeg
avformat.58
avcodec.58
avdevice.58
avfilter.7
avutil.56
postproc.55
swresample.3
swscale.5
)
在main.cpp
中
//
// Created by MirsFang on 2019-03-12.
//
#include <iostream>
extern "C"{
#include <libavformat/avformat.h>
}
using namespace std;
int main(){
int version =avformat_version();
cout<<"version:"<<version<<endl;
return 0;
}
點(diǎn)擊運(yùn)行
image
如果看見
image
表明環(huán)境已經(jīng)搭建成功
可能會遇見的錯誤
image
這個說明你的動態(tài)庫沒有找到格郁,一般來講去看Cmake里面的link_directories
是否設(shè)置正確,本文的是link_directories(librarys/)
,對應(yīng)根目錄librarys/
- symbol(s) not found for architecture x86_64
image
這個錯誤,大概率是直接這樣include
image
這個問題是缺少了extern "C"
,他的作用的主要作用就是為了能夠正確實現(xiàn)C++代碼調(diào)用其他C語言代碼(主要原因是因為C++支持函數(shù)重載,而C語言并不支持函數(shù)重載)所以把 extern "C"
加上
image
下一步我們就開始簡單的寫一點(diǎn)實用的東西
未完持續(xù)例书。锣尉。。