[前言]

使用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,正常。

  [参考链接]

   [h264_v412m2m @ 0x15bafc0] Could not find a valid device:https://blog.csdn.net/weixin_45617478/article/details/103449522

  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的更多相关文章

  1. Windows下编译安装 FFmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...

  2. 编译安装FFmpeg 要支持xvid、x264、mp3、ogg、amr、faac

    编译安装FFmpeg 要支持xvid.x264.mp3.ogg.amr.faac libfaac    faac格式的编解码包libmp3lame    mp3格式编解码包libopencore-am ...

  3. 【FFMPEG】Ubuntu上安装FFMPEG

    在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...

  4. [CentOS_7.4]Linux编译安装ffmpeg

    [CentOS_7.4]Linux编译安装ffmpeg   安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...

  5. Linux---centos编译安装ffmpeg

    环境 系统环境:CentOS release 6.7 (Final) 需求 编译安装ffmpeg 获取依赖 安装依赖包 yum install -y autoconf automake cmake f ...

  6. Ubuntu编译安装nginx,php,mysql

    摘要: 整理的Ubuntu编译安装nginx,php,mysql的步骤,主要来自对驻云的sh-1.4.1中脚本的整理,随时代进步,内容中的软件或者命令请自行更新 目录准备 创建用户 userdel w ...

  7. CentOS-6.4 编译安装ffmpeg加x264以及rtmp

    CentOS 6.4-64位下编译ffmpeg几个简单步骤: 1.编译前环境准备: 2.下载源码: 3.编译,安装: ----------------------------------------- ...

  8. 阿里云服务器---centos编译安装ffmpeg

    环境 系统环境:CentOS release 6.7 (Final) 需求 编译安装ffmpeg 获取依赖 安装依赖包 yum install -y autoconf automake cmake f ...

  9. 在 Mac OS X 环境中从源代码编译安装 FFmpeg

    最近因为一个项目要求,需要开发实时视频编解码功能,准备采用 FFmpeg 以 x264 方式进行实时的视频编解码.Windows 以及 Linux 环境下的 FFmpeg 动态库.头文件等资源都非常容 ...

  10. Ubuntu 编译安装 nginx

    有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...

随机推荐

  1. Linux 环境下安装redis

    目录 方法一 编辑安装 1.官网找到下载地址: 2.到目录下载redis安装包 3.下载后解压 4.安装工具 tcl (可以跳过) 5.编译安装 6.修改配置文件 7. 客户端连接 8.配置环境变量 ...

  2. WebKist Inside: CSS 样式表的组成

    1 StyleSheet 一张 StyleSheet 由一系列 Rules 组成,这些 Rules 可以分成 2 大类: 1 Style Rule 2 At-Rule 下面的例子展示了 Style R ...

  3. 使用c#强大的表达式树实现对象的深克隆

    一.表达式树的基本概念 表达式树是一个以树状结构表示的表达式,其中每个节点都代表表达式的一部分.例如,一个算术表达式 a + b 可以被表示为一个树,其中根节点是加法运算符,它的两个子节点分别是 a ...

  4. 鸿蒙HarmonyOS实战-ArkUI事件(组合手势)

    一.组合手势 应用程序的手势操作是指在移动设备上使用手指或手势进行与应用程序交互的方式.手势操作可以包括点击.滑动.双击.捏合等动作,用于实现不同的功能和操作. HarmonyOS中常见的手势操作及其 ...

  5. 痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是不同J-Link版本对于i.MXRT1170连接复位后处理行为. 痞子衡之前写过一篇旧文 <i.MXRT1170上用J-Link连 ...

  6. fabric compose文件解读(peer篇)

    peer是fabric中的基础单元,主要负责背书,验证交易合法性,保存区块链数据,查询数据.peer与orderer配合完成区块链的全部功能,orderer可以比作是管理员,peer属于是干货的员工, ...

  7. (JAVA)设计模式-适配器模式

    模式的定义和特点: 适配器模式(Adapter)是一种将一个类的接口转换成客户希望的另外一个接口的设计模式,可以提高代码的复用性和灵活性. 结构与实现: 定义一个适配器类来实现业务接口,再继承现有组件 ...

  8. 第一次线上 OOM 事故,竟和 where 1 = 1 有关

    这篇文章,聊聊一个大家经常使用的编程模式 :Mybatis +「where 1 = 1 」. 笔者人生第一次重大的线上事故 ,就是和使用了类似的编程模式 相关,所以印象极其深刻. 这几天在调试一段业务 ...

  9. cent browser 百分浏览器不能使用剪切板复制粘贴

    cent browser 百分浏览器不能使用剪切板复制粘贴,查看剪切板的文本和图像. 解决方法: 1.进入设置-隐私设置和安全性-网站设置 2.查看各网站的权限及储存的数据 3.搜索你的网站,点击重置 ...

  10. 副本集replicaSet

    mongodb高可用架构 https://www.mongodb.com/docs/manual/tutorial/deploy-replica-set/ 复制是跨多个服务器同步数据的过程. 复制提供 ...