音视频开发4-补充 FFmpeg 开发环境搭建 -- ubuntu ffmpeg开发环境搭建

ubuntu ffmpeg开发环境搭建

1 创建目录

在 /home/hunandede/ffmpeg/ 目录下创建

ffmpeg_sources:用于下载源文件

ffmpeg_build: 存储编译后的库文件

bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)

命令如下

cd /home/hunandede/ffmpeg/

mkdir ffmpeg_sources ffmpeg_build bin

2 安装依赖

更新

sudo apt-get update

安装需要的组件

sudo apt-get -y install \

autoconf \

automake \

build-essential \

cmake \

git-core \

libass-dev \

libfreetype6-dev \

libsdl2-dev \

libtool \

libva-dev \

libvdpau-dev \

libvorbis-dev \

libxcb1-dev \

libxcb-shm0-dev \

libxcb-xfixes0-dev \

pkg-config \

texinfo \

wget \

zlib1g-dev

3 编译与安装

NASM

部分库使用到汇编程序。

使用源码进行安装

cd /home/hunandede/ffmpeg/ffmpeg_sources

wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2

tar xjvf nasm-2.14.02.tar.bz2

cd nasm-2.14.02

./autogen.sh

PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &&

\

make && \

make install

说明

autogen.sh是一个脚本文件,通常用于生成configure脚本和Makefile

Linux 环境变量中 PATH=$PATH:$HOME/bin是什么意思,冒号“ : ”是什么意思

Yasm

部分库使用到该汇编库

使用源码进行安装:

cd ~/ffmpeg_sources && \

wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \

tar xzvf yasm-1.3.0.tar.gz && \

cd yasm-1.3.0 && \

./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \

make && \

make install

libx264

H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide

要求编译ffmpeg时配置:--enable-gpl --enable-libx264.

使用源码进行编译:

cd ~/ffmpeg_sources && \

git -C x264 pull 2> /dev/null || git clone --depth 1 https://gitee.com/mirrors_addons/x264.git && \

cd x264 && \

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure

--prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \

PATH="$HOME/bin:$PATH" make && \

make install

libx265

H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide。

要求编译ffmpeg时配置:--enable-gpl --enable-libx265.

使用源码进行编译:

sudo apt-get install mercurial libnuma-dev && \

cd ~/ffmpeg_sources && \if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x26

5.git; fi && \

cd x265/build/linux && \

PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -

DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \

PATH="$HOME/bin:$PATH" make && \

make install

libvpx

VP8/VP9视频编解码器。 更多信息和使用范例参考VP9 Video Encoding Guide 。

要求编译ffmpeg时配置: --enable-libvpx.

使用源码进行编译:

cd ~/ffmpeg_sources && \

git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git && \

cd libvpx && \

PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --

disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic && \

PATH="$HOME/bin:$PATH" make && \

make install

libfdk-aac

AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。

要求编译ffmpeg时配置:--enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上--enable

nonfree).

使用源码进行编译:

cd ~/ffmpeg_sources && \

git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \

cd fdk-aac && \

autoreconf -fiv && \

./configure CFLAGS=-fPIC --prefix="$HOME/ffmpeg_build" && \

make && \

make install

libmp3lame

MP3音频编码器.

要求编译ffmpeg时配置:--enable-libmp3lame.

使用源码进行编译:

cd ~/ffmpeg_sources && \

git clone --depth 1 https://gitee.com/hqiu/lame.git && \

cd lame && \

PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --

enable-nasm --with-pic && \

PATH="$HOME/bin:$PATH" make && \

make install

libopusOpus音频编解码器.

要求编译ffmpeg时配置:--enable-libopus.

使用源码进行编译:

cd ~/ffmpeg_sources && \

git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \

cd opus && \

./autogen.sh && \

./configure --prefix="$HOME/ffmpeg_build" -with-pic&& \

make && \

make install

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

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

相关文章

Request请求数据 (** kwargs参数)

目录 🌟前言🍉request入门1. params2. data3. json4. headers5. cookies6. auth7. files8. timeout9. proxies10. allow_redirects11. stream12. verify13. cert 🌟总结 🌟前言 在Python中,发送网络请求是一项常见的任…

Linux----磁盘操作

1.在Linux中要使用一个新的磁盘,通常可以按照哪几个步骤进行? 在Linux中要使用一个新的磁盘,通常可以按照以下步骤进行: 查看磁盘:使用 fdisk -l 等命令查看新磁盘是否被系统识别。分区:使用 fdisk 或 gdis…

淘宝商品评论电商API接口,让你购物不再困扰

现在的时代购物已经成为了人们生活中不可或缺的一部分。然而,面对琳琅满目的商品,我们常常犯愁,不知道如何选择。为了解决这个问题,淘宝推出了商品评论电商API接口,为广大消费者提供了极大的便利。联讯数据将详细介绍淘…

数据挖掘实战-基于决策树算法构建银行贷款审批预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

6818Linux内核--Bootloader应用分析

Bootloader应用分析 一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 引导加载程序。包括固化在固件( firmware )中的 boot 代码(可选),和 Boot Loader 两大部分。 Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 文件系统…

一分钟把小程序音频保存到手机上

在这个快节奏的时代,每一分钟都显得格外珍贵。你是否曾在小程序中偶遇一段旋律,它如同清晨的露珠,晶莹剔透,却又转瞬即逝?是否曾在某个瞬间,渴望将那段旋律永久地镌刻在心间,让它成为你私人时光…

vant NavBar 导航栏详解

vant 是一个基于 Vue 的移动端 UI 组件库,而 NavBar 是其中的一个导航栏组件。下面是对 vant 的 NavBar 导航栏组件的详细解释: 1. 引入 NavBar 首先,你需要在你的 Vue 组件中引入 NavBar 组件: import { NavBar } from vant; …

【微信小程序开发】flex布局在小程序开发项目中的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

2024-3-23 青少年软件编程(C语言)等考(四级)解析

2024-3-23 青少年软件编程(C语言)等级考试试卷(四级)解析 1、最长上升子序列 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 …

温情母亲节,李良济中医课堂,用爱呵护妈妈的健康与美丽

这个世界上&#xff0c;有这么一个人&#xff0c;你听过她最美的年华&#xff0c;她见证你最美的长大&#xff0c;这个人就是妈妈。 知恩于心&#xff0c;感恩于行&#xff01;母亲节&#xff0c;李良济中医课堂助健康&#xff0c;滋养好物养身心&#xff0c;与您一起用爱守护…

2024最新单身经济新模式,低客单量高转换率,长期项目,新手快速上手

在今年&#xff0c;”搭子”这个词汇异常火爆&#xff0c;主要通过搭子流量进行线下推广以实现高品质群的盈利。有一句流行语说&#xff0c;年轻人可以不想谈恋爱&#xff0c;但不能没有搭子&#xff0c;这显示了搭子的需求量很大。 只要有需求&#xff0c;就会有创业的机会。…

第二证券今日投资参考:VA、VE景气上行 猪价步入慢涨趋势

上周五&#xff0c;沪指午后在地产、金融等板块的带动下震荡上升&#xff0c;创业板指等弱势下探。到收盘&#xff0c;沪指微涨0.01%报3154.55点&#xff0c;深证成指跌0.58%报9731.24点&#xff0c;创业板指跌1.15%报1878.17点&#xff0c;科创50指数跌1.5%&#xff1b;两市算…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象&#xff1a;之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库&#xff0c;一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题&#xff0c;具体如下图&#xff1a; 原因分析&#xff1a; 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

MySQL查询篇-排序

文章目录 单列排序多列排序null排序 排序时 asc 升序&#xff0c;desc 降序 &#xff0c;默认asc 单列排序 select * from table order by version;多列排序 按照指定的列顺序依次排序 select * from table order by version,name; --先根据version升序&#xff0c;再根据na…

OD试题(12)

文章目录 1. 字符逆序2. 求解立方根3. 求最小公倍数 1. 字符逆序 描述&#xff1a;将一个字符串str的内容颠倒过来&#xff0c;并输出。 输入描述&#xff1a;输入一个字符串&#xff0c;可以有空格 输出描述&#xff1a;输出逆序的字符串 示例1&#xff1a; 输入&#xff1a;…

Spring Boot警告:TLSv1 was negotiated【 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接】

文章目录 引言I 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接1.1 原因1.2 解决方案1.3 Microsoft SQL Server(jTDS)II Spring Boot警告:TLSv1 was negotiated.引言 com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接…

Selenium WebDriver自动化测试(框架篇)--TestNG测试框架:分组和依赖

文章目录 一、引言二、测试方法优先级示例代码三、分组(Groups)示例代码四、测试用例之间的依赖示例代码五、禁用测试方法示例代码六、设置测试方法超时示例代码七、维持测试用例的执行顺序示例代码八、封装通用方法示例代码

描述一下JVM加载class文件的原理机制?Java对象创建过程?

JVM加载class文件的原理机制 JVM中类的装载是由类加载器&#xff08;ClassLoader&#xff09;和它的子类来实现的&#xff0c;Java中的类加载器是一个重要的Java运行时系统组件&#xff0c;它负责在运行时查找和装入类文件中的类。 由于Java的跨平台性&#xff0c;经过…

基于AIoTedge+ThingsKit物联网平台,实现办公室人员进出AI统计

在AIoT时代&#xff0c;智能办公已成为提升企业效率的关键。本期文章将带你了解如何利用AIoTedge结合ThingsKit物联网平台&#xff0c;实现办公室人员进出的智能统计。这不是简单的技术堆砌&#xff0c;而是一场关于AI与IoT融合的实战演示。&#x1f31f; 提示&#xff1a;AIoT…

Mysql进阶-sql优化篇

sql优化 sql优化insert优化批量插入手动提交事务主键顺序插入大批量插入数据 主键优化数据组织方式页分裂页合并主键设计原则 order by 优化原则 group by优化limit优化count 优化count的几种用法 update优化 sql优化 insert优化 批量插入 Insert into tb_test values(1,Tom…