Ubuntu20.04 下编译安装 ffmpeg 和 ffplay

Ubuntu20.04 下编译安装 ffmpeg 和 ffplay

    • 一、下载源码包
    • 二、安装依赖库
    • 三、编译
    • 四、添加环境变量
    • 五、验证是否成功
    • 六、问题

一、下载源码包

1.1 官方下载链接:http://ffmpeg.org/download.html

在这里插入图片描述

  • 最新版本为6.1,点击 Download Source Code下载即可 ,此时得到压缩包 ffmpeg-6.1.tar.xz

1.2 也可以查看所有版本

  • 翻到最后为官方最新版本 http://www.ffmpeg.org/releases/ ;
  • 通过命令行下载。
wget http://www.ffmpeg.org/releases/ffmpeg-6.1.tar.xz

在这里插入图片描述

1.3 下载完解压

tar -xvf ffmpeg-6.1.tar.xz
  • 此时当前目录下得到了文件夹 “ffmpeg-6.1”

在这里插入图片描述

二、安装依赖库

  • 官方有个指导文档,Ubuntu怎么使用FFmpeg:

https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

  • 安装ffplay需要的依赖,进入终端,执行以下命令:
sudo apt-get update && sudo apt-get -y install \autoconf \automake \build-essential \cmake \clang \git-core \libass-dev \libfreetype6-dev \libgnutls28-dev \libmp3lame-dev \libsdl2-2.0 \libsdl2-dev \libtool \libva-dev \libx11-dev \libvdpau-dev \libvorbis-dev \libxcb1-dev \libxcb-shm0-dev \libxcb-xfixes0-dev \libfdk-aac-dev \libspeex-dev \libx264-dev \libx265-dev \libnuma-dev \meson \xorg-dev \ninja-build \pkg-config \texinfo \wget \yasm \zlib1g-dev \libunistring-dev

三、编译

3.1 安装 yasm

    yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装 yasm 时,就会报错误。

# 安装ffplay需要的依赖
sudo apt install yasm pkg-config libopencore-amrnb-dev libopencore-amrwb-dev

3.2 配置

    进入文件夹ffmpeg-6.1

#进入源码文件夹
cd ffmpeg-6.1#配置项
./configure  --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-libmp3lame --enable-gpl --disable-static --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-postproc --enable-ffplay --enable-libx264 --enable-libxvid --disable-x86asm

在这里插入图片描述

3.3 编译安装

#时间较长 耐心等待
make -j 4
sudo make install
  • 安装到了/usr/local/ffmpeg
cd /usr/local/ffmpeg/bin

在这里插入图片描述

  • ffmpeg/ffprob 已经生成了,但是 ffplay 没有生成?

四、添加环境变量

4.1 修改环境变量

  • 将ffmpeg的绝对路径添加到 PATH 环境变量中,以让系统能找到ffmpeg的安装路径。
vim ~/.bashrc  # 打开系统环境变量配置文件

4.2 在文件中添以下内容

export PATH="/usr/local/ffmpeg/bin:${PATH}" # 因为编译后的可执行文件都在/usr/local/ffmpeg/bin中
export LD_LIBRARY_PATH="/usr/local/ffmpeg/lib:{LD_LIBRARY_PATH}" #共享库路径

在这里插入图片描述

4.3 设置生效

source ~/.bashrc

五、验证是否成功

5. 1 查看ffmpeg的版本

ffmpeg -versionffplay -versionffprobe -version

在这里插入图片描述

  • 出现以上版本,则编译安装成功!!!

5.2 查看ffmpeg帮助文档

ffmpeg -hffmpeg -h longffmpeg -h full

5.3 卸载 ffmpeg

# 如果要卸载的话
# cd ffmpeg-6.1/ 进入ffmpeg源码编译的路径sudo make uninstall

六、问题

问题1:ffmpeg编译后为什么没有ffplay工具?

在这里插入图片描述

    ffplay 编译主要依赖 sdl2环境(针对ffmpeg 3.x版本),未安装sdl2的情况下,不会自动生成关于ffplay的编译选项。

    SDL(Simple DirectMedia Layer)是一个跨平台的多媒体和游戏开发包,提供2D,音频,事件驱动,多线程和定时器等服务,它使用C语言写成,提供了多种控制图像、声音、输出的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。

  • 可以通过下面两个命令安装sdl2组件,dev后缀表示安装路径下会包含头文件及动态库等在开发环境下需要的文件
sudo apt-get install libsdl2-2.0sudo apt-get install libsdl2-dev
  • 生成Makefile文件后,打开ffmpeg源码目录下的 config.mak 文件,搜索CONFIG_FFPLAY关键字,可以看到 ffplay 对应的编译选项已由之前的[!CONFIG_FFPLAY=yes]变成了[CONFIG_FFPLAY=yes],前面的叹号已经去掉了
./configure --prefix=/usr/local/ffmpeg --enable-shared
make -j 4
sudo make install

在这里插入图片描述

问题2:ERROR: libmp3lame >= 3.98.3 not found

在这里插入图片描述

解决:
①官⽹下载mp3lame源码:https://sourceforge.net/projects/lame/
②解压lame文件并到指定目录下
tar -zxf lame-3.100.tar.gz
cd lame-3.100/
③进行配置
./configure --prefix=/usr/local/ffmpeg --enable-shared
④编译及安装
make -j 4
sudo make install

注:仅供学习参考,如有不足欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277689.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWTK 串口屏开发(2) - 数据绑定高级用法

AWTK 串口屏 智能家居示例 1. 功能 这个例子稍微复杂一点,界面这里直接使用了 立功科技 ZDP1440 HMI 显示驱动芯片 例子中的 UI 文件和资源,重点关注数据绑定。在这里例子中,模型(也就是数据)里包括一台空调和一台咖…

RF模块是如何工作的?

射频(RF)模块使用无线电频率工作,这个频率范围在30kHz到300kHz之间变化。 在这个射频系统中,数字数据被表示为载波波幅度的变化。这种调制类型是振幅移位键。 这个射频模块是射频发射器和接收器的组合,发射器接收器对的…

安装ubuntu虚拟机并连接xShell+安装MySQL

网盘地址 链接:https://pan.baidu.com/s/1r-Je09AJrZcmbPYnCI6rfA?pwdk22h 提取码:k22h 安装 打开Vmware 一直下一步就行了 xshell连接 打开虚拟机,右键进入Terminal终端, 只复制opubuntu:~$后面的语句,前面op代…

如何使用蜘蛛池蚂蚁SEO

​蜘蛛池是一种利用搜索引擎爬虫进行推广营销的方式。它的核心是建立一个能够吸引搜索引擎爬虫的网站群,这些网站能够产生大量的优质内容,并形成一个巨大的网站群,从而吸引更多的搜索引擎爬虫。 如何联系蚂蚁seo? baidu搜索&…

算法基础概念之数据结构

邻接表 每个点作为头节点接一条链表 链表中元素均为该头节点指向的点 优先队列 参数: ①储存元素类型 ②底层使用的存储结构(一般为vector) ③比较方式(默认小于)

spring-cloud-stream-kafka生产速度慢

包版本spring-cloud-starter-stream-kafka:3.1.0 修改yaml配置 添加poller配置

为什么全局变量可能成为多线程环境中的安全隐患

目录 全局变量的概念和特性 多线程环境下的问题 1. 竞争条件(Race Condition) 2. 内存一致性(Memory Consistency) 3. 死锁(Deadlock) 如何降低全局变量带来的安全隐患 1. 局部化数据 2. 合理使用锁…

黑马点评05分布式锁 1互斥锁和过期时间

实战篇-09.分布式锁-基本原理和不同实现方式对比_哔哩哔哩_bilibili 1.分布式锁 因为jvm内部的sychonized锁无法在不同jvm之间共享锁监视器,所以需要一个jvm外部的锁来共享。 2.redis setnx互斥锁 加锁解锁即可 2.1不释放锁可能死锁 redis 的setnx不会自动释放锁…

wpf devexpress如何使用AccordionControl

添加一个数据模型 AccordionControl可以被束缚到任何实现IEnumerable接口的对象或者它的派生类(例如IList,ICollection) 如下代码例子示范了一个简单的数据模型使用: using System.Collections.Generic;namespace DxAccordionGettingStart…

说说限流处理

对于限流,从一个完整的请求链路上来看的话,可以分几块,有nginx接入层网关的限流,微服务网关gateway的限流,在业务层我们也可以实现自己的限流逻辑,Redission和Google的Guava包本身也提供了一些限流工具。 而…

分类信息网商业运营版源码系统:适合各类行业分类站点建站 带安装部署教程

随着互联网的快速发展,信息分类网站在各个行业中得到了广泛应用。为了满足不同行业的需求,罗峰给大家分享一款适合各类行业分类站点建站的商业运营版源码系统。该系统旨在提供一套完整的解决方案,帮助用户快速搭建自己的分类信息网站&#xf…

[算法总结] 十大排序算法

[算法总结] 十大排序算法 简介: 本文首发于我的个人博客:尾尾部落排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法及其相关的问题。一般在面试中最常考的是快速排序和归并排序等基本的排序算法…