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.mzph.cn/news/233189.shtml

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

相关文章

四、Spring IoC实践和应用(基于XML配置方式组件管理)

本章概要 基于XML配置方式组件管理 实验一: 组件(Bean)信息声明配置(IoC)实验二: 组件(Bean)依赖注入配置(DI)实验三: IoC 容器创建和使用实验四…

自助借还办证一体机软件需求说明书

1. 简介 1.1 项目概括 本项目主要实现读者自助办证、借书、还书、查询、续借的功能,减轻管理员的工作量,提升读者的借阅体验,提高了图书的借阅量与流通率,是图书馆智能化、无人化建设的重要步骤。 1.2 项目背景 ​ 目前各大图…

WEB渗透—PHP反序列化(四)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

使用 React 实现自定义数据展示日历组件

目录 背景实现日历组件父组件数据 效果最后 背景 项目中需要实现一个日历组件,并且需要展示月,日所对应的数据(因为项目需求问题,就不统计年数据总量)。网上找了一堆,基本都不大符合项目需求,且…

OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

一、AMD处理器win10系统下,DevEco Studio模拟器启动失败解决办法。 结论:在BIOS里面将Hyper-V打开,DevEco Studio模拟器可以成功启动。 二、ArkTS自定义组件导出、引用实现。 如果在另外的文件中引用组件,需要使用export关键字导…

3ds max软件中的一些常用功能分享!

3ds max软件有很多小伙伴反馈说,明明有很多3ds max教程资料。却不知道如何入门3dmax。 掌握3dmax基本功能是开始使用3dmax的基础之一,所以,小编带大家盘点一下3dmax常用操作。 3dmax常用功能介绍如下,快快跟着小编一起看起来。 1…

预测性维护在汽车制造行业中的应用

汽车制造行业是一个高度复杂和精细化的领域,依赖于各种设备来完成生产流程。这些设备包括机械装配线、焊接机器人、喷涂设备、传送带等。然而,这些设备在长时间运行中不可避免地会遇到各种故障,给生产进程带来延误和成本增加。为了应对这一挑…

LeetCode Hot100 79.单词搜索

题目: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Button按钮组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Button按钮组件 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、Button按钮组件 Button 组件也是基础组件之一,和其它基础组件不…

Linux之grep、sed、awk

目录 1.grep 2.sed 3.awk 1.grep grep 擅长过滤查找,按行进行过滤 例: 当有用户对我们的主机进行爆破攻击时,我们可以使用grep将 ip 查找出来,进行封锁等处理 在 /var/log 目录下的 secure 文件中存放在用户登录连接信息&am…

自动化测试成本高效果差,意义在哪?

自动化测试的成本高效果差?首先这个结论就太过武断了一些。 任何技术都需要放到适合的地方去使用,否则一定是达不到理想的效果的。举例大炮打蚊子,同样是成本高效果差,难道大炮就没有存在的意义了吗? 当然不是&#…

ATKXCOM串口助手接受中文字符乱码问题

中文乱码大多是编码格式问题,如心知天气API返回的数据编码格式为UTF-8格式,同理串口调试助手需要更改为对应的编码格式,正点原子的串口调试助手具有多种编码格式可以更改。 PS:点击左下角设置图标即可设置

OpenAI发布AGI安全风险框架!董事会可随时叫停GPT-5等模型发布,奥特曼也得乖乖听话

OpenAI 再次强调模型安全性!AGI 安全团队 Preparedness 发布模型安全评估与监控框架! 这两天关注 AI 圈新闻的小伙伴们可能也有发现,近期的 OpenAI 可谓进行了一系列动作反复强调模型的“安全性”。 前有 OpenAI 安全系统(Safety…

工业镜头常见的类型

在机器视觉中,工业镜头作为机器视觉系统的核心部件,常常需要和工业相机搭配使用。工业镜头,属于一种光学系统。光学系统是指由透镜、反射镜、棱镜和光阑等多种光学元件按一定次序组合成的系统。那么工业镜头都有哪些类型? 一、按照…

搭建APP应用程序如何选择服务器

Hello,各位同学们好!我是咕噜铁蛋,我经常收到许多关于如何搭建APP的询问。其中,如何选择服务器是许多初创企业和开发者经常面临的问题。带着这些问题我也通过一些科技手段收集整理了些知识,今天我就和大家来来探讨如何…

BKP 备份寄存器 RTC 实时时钟-stm32入门

这一章节我们要讲的主要内容是 RTC 实时时钟,对应手册,是第 16 章的位置。 实时时钟这个东西,本质上是一个定时器,但是这个定时器,是专门用来产生年月日时分秒,这种日期和时间信息的。所以学会了 STM32 的…

HTML + JavaScript 实现网页录制音频与下载

HTML JavaScript 实现网页录制音频与下载 HTML JavaScript 实现网页录制音频与下载简介getUserMediaMediaRecorder获取和处理音频流实现音频的录制和播放音频效果的处理实时语音通话的应用兼容性和 Latency 问题 项目代码运行实例参考源码下载 HTML JavaScript 实现网页录制…

银行测试:第三方支付平台业务流,功能/性能/安全测试方法

1、第三方支付平台的功能和结构特点 在信用方面,第三方支付平台作为中介,在网上交易的商家和消费者之间作一个信用的中转,通过改造支付流程来约束双方的行为,从而在一定程度上缓解彼此对双方信用的猜疑,增加对网上购物…

【lesson18】MySQL内置函数(1)日期函数和字符串函数

文章目录 日期函数函数使用具体使用案例建表插入数据建表插入数据 字符串函数函数使用具体使用案例建表插入数据测试 日期函数 函数使用 获得年月日: 获得时分秒: 获得时间戳: 获得现在的时间: 在日期的基础上加日期&#xf…

C++ Qt开发:TableWidget表格组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableWidget表格组件的常用方法及灵活运用。 …