cgo+ffmpeg+linux的简单使用
上面一篇说了如何在windows搭建开发环境,这一篇讨论一下linux的情况。
环境所需
和windows一样,在linux上面编译运行ffmpeg程序,一样需要ffmpeg静态库和动态库。
所以需要在linux上去编译ffmpeg(带动态库的)。
另外,为了支持x264,先去编译一个x264。
x264编译
先去下载一个x264的编译器http://www.videolan.org/developers/x264.html,
使用下面命令编译(make install
需要sudo权限):
1 | ./configure --enable-static --enable-shared |
如果提示没有yasm
,则装一个就行。
ffmpeg编译
[https://ffmpeg.org/download.html#releases]https://ffmpeg.org/download.html#releases
去ffmpeg官网下载一个自己需要版本的ffmpeg,我这里下载的4.3.1。
这里编译成动态库:
1
2
3
./configure --enable-shared --disable-static --enable-libx264 --enable-gpl --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pthreads
make
make install
1 | ./configure --enable-shared --disable-static --enable-libx264 --enable-gpl --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pthreads |
添加一下动态链接库
去/etc/ld.so.conf.d/
下面创建一个新文件,把ffmpeg动态链接库路径加进去就行。
1
2
3
4
5
6
7
vim /etc/ld.so.conf.d/ffmpeg-4.3.1.conf
cat /etc/ld.so.conf.d/ffmpeg-4.3.1.conf
/usr/local/lib
// 执行
ldconfig
1 | vim /etc/ld.so.conf.d/ffmpeg-4.3.1.conf |
cgo编译
可以将go代码中改为如下:
1 | /* |
在其中加入windows和linux,编译时会自动对环境进行识别。
直接在项目文件夹下面执行go build
即可。
纯c代码编译
有可能需要调试代码,这时候可能只想编译一些纯c的测试文件:
1 | gcc snapshot-v2.c -o snapshot -I/usr/local/include -L/usr/local/lib -lavformat -lavcodec -lavutil -lavdevice -lavfilter -lswresample -lswscale |
也可以把这句话放到makefile里面,以后每次编译直接make:
1
2
3
4
cat makefile
snapshot: snapshot-v2.c
gcc snapshot-v2.c -o snapshot -I/usr/local/include -L/usr/local/lib -lavformat -lavcodec -lavutil -lavdevice -lavfilter -lswresample -lswscale
1 | cat makefile |