ubuntu 编译安装ffmpeg
[前言]
使用apt-get install直接安装的ffmpeg无法提供相应的头文件,
在编译一些使用ffmpeg接口的程序时会提示找不到某某头文件,
于是准备自己编译安装一下ffmpeg.
安装分为普通安装和修改配置文件后安装。普通安装不能调用x264、x265相关接口。
[安装FFmpeg前先安装SDL]
1. 将github上的FFmpeg代码复制到码云上,之后在linux中执行:
(1). git clone 你的下载地址;
(2). 安装SDL2(我用的最新的ffmpeg,如果版本较老,可能需要SDL1.2库)库,否则编译安装完成后没有ffplay。
安装过程:
sudo apt-get install libsdl2-2.0
sudo apt-get install libsdl2-dev
测试:
#include <iostream>
#include <SDL2/SDL.h> int main()
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Quit();
printf("Runing Successful!\n");
return 0;
}
g++ filename.cpp -o filename -lSDL2
执行生成的可执行文件,出现"Running Successful!"表示安装SDL2库成功。
[普通安装]
普通安装是不带x264、x265等库的,如果需要调用相关编解码器的接口,参考下方【设置配置文件后安装】
1. 打开FFmpeg文件夹
./configure
在执行此配置过程中,出现报错"nasm/yasm not found or too old"
为解决此问题,我直接使用了
apt-get install nasm
apt-get install yasm
之后,再执行
./configure
成功
(注意,FFmpeg源码包最好是现git clone到当前系统的,如果从Windows系统下或其它路径下拷贝过来,
很可能./configure报错deps_deps_deps.._deps_checking:inprogress:File name too long)
2. 编译
make all
3. 安装
make install
[参考链接]
SDL2安装:https://blog.csdn.net/zhouzhenhe2008/article/details/54428761
SDL2测试代码参考:https://blog.csdn.net/lazzy_dog/article/details/77914203
ffplay没安装上:http://blog.chinaunix.net/uid-11344913-id-3936227.html
FFmpeg编译安装:https://blog.csdn.net/qqqq245425070/article/details/83961218
【设置配置文件后安装】
建议:如果使用虚拟机用了分享文件夹,编译安装各种包时,不要在分享文件夹里进行。
需要将安装包拷入系统内部文件路径或者直接将安装包下载到系统内部路径。
安装cmake: sudo apt-get install cmake
1. 更新nasm
x264库需要的nasm版本比ubuntu16 通过sudo apt-get install nasm安装的版本高,因此需要自己下载新版本的nasm编译安装;
(1). 卸载原有nasm: sudo apt remove nasm;
(2). 下载新版本的nasm安装包:
$ wget "https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz"
(具体版本也可参考https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=A)
(3). 解压 tar -xvf nasm-2.15.05.tar.gz
(4). cd nasm-2.15.05
./configure
make
sudo make install
(5). 查看nasm版本:
nasm -v
(NASM version 2.15.05 compiled on Nov 10 2020)
2. 安装x264库
(1). 下载x264:
git clone https://gitee.com/mirrors/x264.git
(2). 编译安装x264
./configure --enable-shared --enable-static
make
sudo make install
(3). 查看x264库安装情况:
$ updatedb
$ locate x264
我是安装到了默认路径,查询显示 /usr/local/lib中安装了x264相关的库。
(为保险起见,可以在FFmpeg文件夹里先执行 ./configure --enable-shared --enable-libx264 --enable-gpl --enable-libx265
如果没有提示找不到x264库,则说明安装库成功)
3. 安装x265库
(1). 下载x265:
wget "http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz"
(其他版本:http://ftp.videolan.org/pub/videolan/x265/;github:https://github.com/videolan/x265)
(2). 解压 tar -xvf x265_3.2.tar.gz
(3). cd x265_3.2/bulid/linux
./make-Makefiles.bash
(这一步可能会提示找不到ccmake,需要 sudo apt-get install cmake-curses-gui)
make
sudo make install
(4). 查看x265库安装情况
$ updatedb
$ locate x265
查询到在 /usr/local/lib安装了x265相关的库
4. 编译安装FFmpeg
转到FFmpeg路径下:
$ ./configure --enable-shared --enable-libx264 --enable-gpl --enable-libx265
$ make
$ make install
5. 运行ffmpeg,报错:不能打开共享库 libavdevice.so.58
使用 locate libavdevice.so.58,发现其在/usr/local/lib路径下。
参考CSDN博客https://blog.csdn.net/weixin_43166958/article/details/89335679,问题得到解决:
vi /etc/ld.so.conf
添加 /usr/local/lib/
保存后执行 sudo ldconfig
运行 ffmpeg,正常。
[参考链接]
ccmake找不到:https://blog.csdn.net/u012939880/article/details/83752500
ffmpeg交叉编译:https://blog.csdn.net/simonforfuture/article/details/79062329
不能打开共享库 libavdevice.so.58:https://blog.csdn.net/weixin_43166958/article/details/89335679
[推荐——大神雷霄骅的系列教程]
https://blog.csdn.net/leixiaohua1020/article/details/15811977
ubuntu 编译安装ffmpeg的更多相关文章
- Windows下编译安装 FFmpeg
在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...
- 编译安装FFmpeg 要支持xvid、x264、mp3、ogg、amr、faac
编译安装FFmpeg 要支持xvid.x264.mp3.ogg.amr.faac libfaac faac格式的编解码包libmp3lame mp3格式编解码包libopencore-am ...
- 【FFMPEG】Ubuntu上安装FFMPEG
在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...
- [CentOS_7.4]Linux编译安装ffmpeg
[CentOS_7.4]Linux编译安装ffmpeg 安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...
- Linux---centos编译安装ffmpeg
环境 系统环境:CentOS release 6.7 (Final) 需求 编译安装ffmpeg 获取依赖 安装依赖包 yum install -y autoconf automake cmake f ...
- Ubuntu编译安装nginx,php,mysql
摘要: 整理的Ubuntu编译安装nginx,php,mysql的步骤,主要来自对驻云的sh-1.4.1中脚本的整理,随时代进步,内容中的软件或者命令请自行更新 目录准备 创建用户 userdel w ...
- CentOS-6.4 编译安装ffmpeg加x264以及rtmp
CentOS 6.4-64位下编译ffmpeg几个简单步骤: 1.编译前环境准备: 2.下载源码: 3.编译,安装: ----------------------------------------- ...
- 阿里云服务器---centos编译安装ffmpeg
环境 系统环境:CentOS release 6.7 (Final) 需求 编译安装ffmpeg 获取依赖 安装依赖包 yum install -y autoconf automake cmake f ...
- 在 Mac OS X 环境中从源代码编译安装 FFmpeg
最近因为一个项目要求,需要开发实时视频编解码功能,准备采用 FFmpeg 以 x264 方式进行实时的视频编解码.Windows 以及 Linux 环境下的 FFmpeg 动态库.头文件等资源都非常容 ...
- Ubuntu 编译安装 nginx
有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...
随机推荐
- Jetbrains系列产品最新激活方法[持续更新]
Jetbrains系列产品最新激活方法[持续更新] 2021.3.4系列激活 方法一: 2021.3.4参考文章: https://www.exception.site/essay/how-to-fr ...
- ansible系列(25)--ansible的notify和handlers
1. notify和handlers Handlers 是一个触发器,同时是一个特殊的 tasks ,它无法直接运行,它需要被tasks 通知后才会运行.比如: httpd 服务配置文件发生变更,我们 ...
- ajax递归发送请求
简介 大家都知道浏览器在处理http网络请求的时候,不同的浏览器会有不一样的并发限制,下表是一些主流浏览器对 HTTP 1.1 和 HTTP 1.0 的最大并发连接数目: Browser HTTP/1 ...
- Splashtop用于远程实验室的功能得到增强
加利福尼亚州圣何塞,2020年8月11日,远程访问和远程支持解决方案的领导者Splashtop Inc. 宣布更新其 Splashtop for Remote Labs 产品.该产品旨在帮助学生通 ...
- 字节面试:说说Java中的锁机制?
Java 中的锁(Locking)机制主要是为了解决多线程环境下,对共享资源并发访问时的同步和互斥控制,以确保共享资源的安全访问. 锁的作用主要体现在以下几个方面: 互斥访问:确保在任何时刻,只有一个 ...
- C语言:将文件中所得到的单词表保存到一个顺序表中--使用动态分配数组。
在很多时候我们想要在程序中存储想要的信息,但是又不知道该信息的大小或者说不知道需要多长的数组来存放.动态分配空间这个很好的解决了这个问题,动态分配不仅只可以用在链表中分配节点空间,其实更多时候用来分配 ...
- AIRIOT物联网低代码平台如何配置MQTT驱动?
MQTT驱动配置简介 MQTT全称为消息队列遥测传输(英语:Message Queuing Telemetry Transport),是ISO 标准(ISO/IEC PRF 20922)下基于发布 ( ...
- MyBatis两级缓存机制详解
缓存是提高软硬件系统性能的一种重要手段:硬件层面,现代先进CPU有三级缓存,而MyBatis也提供了缓存机制,通过缓存机制可以大大提高我们查询性能. 一级缓存 Mybatis对缓存提供支持,但是在 ...
- 文字转语音 - 搭建微软tts整合web服务提供api接口(免费)
微软tts是业界公认文字转语音效果最佳本文使用docker搭建微软tts服务并提供api接口对外提供服务对接官方免费在线体验接口,搭建后可免费进行调用使用,不保证永久稳定可用 调用方式url:http ...
- 使用vscode编辑c语言
在 Visual Studio Code (VSCode) 中配置 C 语言环境 步骤指南: 一,前期准备(安装扩展,软件包) 安装 C/C++ 扩展 打开 VSCode. 点击左侧边栏的扩展按钮(或 ...