【FFmpeg】Hello World!尝试如何编译FFmpeg程序

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)
发布了324 篇原创文章 · 获赞 266 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/105162644