Linux编译simplest_ffmpeg_player
(一)环境及所需文件
1. Ubuntu 16.04 (gcc/g++ 7.1)
2. FFmpeg-2.8.15 (http://ffmpeg.org/download.html#releases)
3. SDL-2.0.10 (http://www.libsdl.org/download-2.0.php)
4. simplest_ffmpeg_player (https://github.com/leixiaohua1020/simplest_ffmpeg_player)
(二)配置、安装FFmpeg和SDL
1. 解压 FFmpeg 的压缩包(如 ffmpeg-2.8.15.tar.gz)到当前目录,然后通过终端进入该目录,并编译、安装:
cd ./ffmpeg-2.8.15
./configure --disable-yasm #此处选项为yasm报错
make
sudo make install
2. 解压 SDL 的压缩包(如 SDL2-2.0.10.tar.gz)到当前目录,然后通过终端进入该目录,并编译、安装:
cd ./SDL2-2.0.10
./configure
make
sudo make install
(三)编译simplest_ffmpeg_player
解压simplest_ffmpeg_player的压缩包(如 simplest_ffmpeg_player_2.5.zip),然后通过终端进入子目录simplest_ffmpeg_player,并编译:
cd ./simplest_ffmpeg_player_2.5
cd ./simplest_ffmpeg_player
g++ simplest_ffmpeg_player.cpp -g -o simplest_ffmpeg_player.out -I /usr/local/include/ -L /usr/local/lib -lSDL2main -lSDL2 - lavcodec -lavutil -lswscale -pthread -lz -lm -lbz2 -lswresample
因环境配置原因,原本的simplest_ffmpeg_player中的gcc编译命令(complile_gcc.sh)
#! /bin/sh
gcc simplest_ffmpeg_player.cpp -g -o simplest_ffmpeg_player.out \
-I /usr/local/include -L /usr/local/lib -lSDL2main -lSDL2 -lavformat -lavcodec -lavutil -lswscale
会报错。
具体报错如下形式:
1. 缺少 -pthread:
/usr/bin/ld: /usr/local/lib/libavformat.a(udp.o): undefined reference to symbol 'pthread_cancel@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
2. 缺少 -lz:
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1077: undefined reference to `inflateInit_'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1087: undefined reference to `inflate'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1105: undefined reference to `inflateEnd'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1105: undefined reference to `inflateEnd'
3. 缺少 -lbz2:
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1325: undefined reference to `BZ2_bzDecompressInit'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1340: undefined reference to `BZ2_bzDecompress'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1333: undefined reference to `BZ2_bzDecompressEnd'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1343: undefined reference to `BZ2_bzDecompressEnd'
4. 缺少 -lswresample:
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_subpacket':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:379: undefined reference to `swr_is_initialized'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_frame':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:220: undefined reference to `swr_is_initialized'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_init_resample':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:161: undefined reference to `swr_init'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:167: undefined reference to `swr_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_frame':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:234: undefined reference to `swr_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_flush_resample':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:115: undefined reference to `swr_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_subpacket':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:411: undefined reference to `swr_close'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_flush':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:614: undefined reference to `swr_close'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_close':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:638: undefined reference to `swr_free'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_init':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:705: undefined reference to `swr_alloc'
参考
https://blog.csdn.net/leixiaohua1020/article/details/38868499
Linux编译simplest_ffmpeg_player相关推荐
- 初试linux编译(ubuntu+vim)+玩转智能蛇
一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...
- linux 编译c_含有CGO代码的项目如何实现跨平台编译
目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...
- linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接
大家肯定都知道计算机程序设计语言通常分为机器语言.汇编语言和高级语言三类.高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类 ...
- linux下运行yolo,deepin(linux)编译安装yolo v4测试效果
# 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...
- centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...
一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...
- linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...
- linux libvpx编译安装,linux编译安装时常见错误解决办法
**configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution** 复 ...
- linux编译安装的好处,Linux学习—源码安装
源码安装--可以按照自己的需求安装,这是源码安装的好处,而二进制安装无法选择 大部分的源码安装步骤大致相同,具体细节可以参考解压缩之后的README和INSTALL README: 介绍了软件包的功能 ...
- 如何对linux文件进行编译,linux编译和执行命令都有哪些?该如何实现?
我们知道,Linux是比如手机.平板电脑.路由器.台式计算机计算机设备的核心,它们都使用着Linux系统.以现在来说,一个合格的开发者必须要对Linux有一定的了解,那么,下面就跟小编一起来看看Lin ...
- .net core linux 编译,.NET Core 源码编译的问题解析
引言: .NET Core 源码编译 https://github.com/dotnet git clone https://github.com/dotnet/runtime.git 一:Windo ...
最新文章
- 实现等待窗体的几种方式
- PHP函数series,PHP: 简介 - Manual
- java高效编程_Java高效编程
- php超星查课接口,这是一个可以查询超星课程的接口,请教一下该怎么用啊
- 十二五期间三网融合将有实质性进展
- 发布锁定表头的一个思路
- mysql查询中使用别名_在mysql子查询中使用外部别名
- 数字图像中高频噪声的滤波
- BOMRemover v2.0 去除代码中的UTF-8 BOM
- 传奇单机架设GOM引擎图文教程!
- word自定义多级编号列表
- 看完《二舅》,我更内耗了
- 苏州Uber优步司机奖励政策(8月31日至9月6日)
- 王者荣耀会成为下一个微信吗?
- 2022国赛论文及可运行代码
- 计算机鼠标一直转圈圈 打不开文件,win7系统打开文件夹时鼠标右键一直转圈怎么办?通过bat文件来解决...
- 大数据的特点:5个V
- GAMES-101-个人总结归纳-Shading
- PMP考前冲刺题2022(错题)含解析
- Android代码中发送Keycode按键
热门文章
- 深度半监督学习方法总结
- js eq()选择器的使用
- 测试图片,视频 地址
- 数据库例题(创建数据库SPJ包含S、P、J和SPJ表)
- 第七章第二十三题(游戏:储物柜难题)(Game: locker problem)
- Objective C转Swift注意事项(一)合理使用结构体,枚举,extensions
- 染色质调控区域的研究: 对CHIP-seq和ATAC-seq发展的深入思考
- 链家房源数据清洗和预处理(pandas)
- 杨歌:金融电路与 Web3 经济模型原理 (转载及导言)
- 双显示器LOL加载游戏提示error无法初始化图形设备解决方法