1、说明
下面的例子只演示,编译FFmpeg时用的头文件和库,不涉及编解码,只调用一个可以打印编译FFmpeg库的配置项的接口:avcodec_configuration()
2、avCfg.c
#include <stdio.h>
#include <libavcodec/avcodec.h>
int main(int argc,char *argv[])
{
printf("Hello World!\n avcodec_configuration:\n%s\n", avcodec_configuration());
return 0;
}
输出:
Hello World!
avcodec_configuration:
--enable-shared
--prefix=/usr/local/ffmpeg
--extra-cflags=-I/usr/local/ffmpeg/include
--extra-ldflags=-L/usr/local/ffmpeg/lib
--bindir=/usr/local/ffmpeg/bin
--enable-gpl
--enable-libass
--enable-libfdk-aac
--enable-libfreetype
--enable-libmp3lame
--enable-libopus
--enable-libtheora
--enable-libvorbis
--enable-libx264
--enable-libx265
--enable-libvpx
--enable-nonfree
3、Makefile
FFMPEG=/usr/local/ffmpeg #ffmpeg头文件和库的安装路径,根据自己的环境配置
CC=gcc
CFLAGS=-I $(FFMPEG)/include
LDFLAGS = -L$(FFMPEG)/lib/ -lavcodec # 连接ffmpeg的库,下面是一个实际项目中的连接,使用的库较全
#LDFLAGS = -L$(FFMPEG)/lib/ -lavformat -lavcodec -lavutil -lswscale -lpthread -lm
TARGETS=avCfg
all: $(TARGETS)
avCfg:avCfg.c
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
clean:rm -rf $(TARGETS)
4、C++版本 avCfg.cpp
#include <iostream>
using namespace std;
extern "C"{ //ffmpeg是用C语言编写的,在C++中调用C接口需要使用extern C,以防止对接口重命名
#include <libavcodec/avcodec.h>
}
int main(int argc,char *argv[])
{
cout << "Hello World! " << endl
cout << "avcodec_configuration:" << endl;
cout << avcodec_configuration() << endl;
return 0;
}
5、C++版本的Makefile
FFMPEG=/usr/local/ffmpeg #ffmpeg头文件和库的安装路径,根据自己的环境配置
CC=g++ #编译器选择g++
CFLAGS=-I $(FFMPEG)/include
LDFLAGS = -L$(FFMPEG)/lib/ -lavcodec # 连接ffmpeg的库,下面是一个实际项目中的连接,使用的库较全
#LDFLAGS = -L$(FFMPEG)/lib/ -lavformat -lavcodec -lavutil -lswscale -lpthread -lm
TARGETS=avCfg-cpp
all: $(TARGETS)
avCfg-cpp:avCfg.cpp
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
clean:rm -rf $(TARGETS)