【Linux/macOS】软件安装使用【aubio/FFmpeg/other】
记录贴。
linux涉及的系统为Ubuntu。
Ubuntu安装管理
参考:
- 简书文章-Linux软件安装管理之——dpkg与apt-*详解
- CSDN博客-Ubuntu 和 Debian 的关系
- CSDN博客-Ubuntu和Linux的区别
Debian
Linux系统的发行版本非常多,大体上可以分为两类:
1、商业版本,需要用户付费订阅官方的服务支持。
2、开放源代码的社区版本,可以用于企业生产环境,也可以理解为由开源社区来维护。
Linux主要发行版:Fedora Core、Debian、Mandrake、Ubuntu、Red Hat Linux、SuSE、Linux Mint、Gentoo、CentOS。
Ubuntu是一款基于Debian派生的产品,对新款硬件具有极强的兼容能力。普遍认为Ubuntu与Fedora都是极其出色的LINUX桌面系统。
国际化组织的开源操作系统(Debian),官网:http://www.debian.org/。
dpkg命令
dpkg - package manager for Debian (debian系统的包管理工具)。
dpkg is a tool to install, build, remove and manage Debian packages,dpkg是Debian的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。
dpkg这个机制最早由Debian Linux社区所开发出来的,通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时能提供安装后的软件信息,实在非常不错。只要派生于Debian的其它Linux distributions大多使用dpkg这个机制来管理,包括B2D,Ubuntu等。
deb文件命名格式为:Package_Version-Build_Architecture.deb 【软件包名称(Package Name),版本(Version Number),修订号(Build Number),平台(Architecture)】
- dpkg -i package-name.deb # --install, 安装软件包,必须是deb包的完整名称。(软件的安装可被拆分为两个对立的过程“解包”和“配置”)
- dpkg --unpack package-name.deb # “解包”:解开软件包到系统目录但不配置,如果和-R一起使用,参数可以是一个目录
- dpkg --configure package-name.deb #“配置”:配置软件包
- dpkg -c package-name.deb #列出 deb 包的内容
dpkg 使用文本文件作为数据库来维护系统中软件,包括文件清单, 依赖关系, 软件状态, 等等详细的内容,通常在 /var/lib/dpkg 目录下。 通常在 status 文件中存储软件状态和控制信息。 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码。
更多使用方式参考:Ubuntu 系统 dpkg 命令使用详解
apt命令
虽然使用dpkg时,已经解决掉了软件安装过程中的大量问题,但是当依赖关系不满足时,仍然需要手动解决,而apt这个工具解决了这样的问题,linux distribution 先将软件放置到对应的服务器中,然后分析软件的依赖关系,并且记录下来,然后当客户端有安装软件需求时,通过清单列表与本地的dpkg以存在的软件数据相比较,就能从网络端获取所有需要的具有依赖属性的软件了。
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,所有的Ubuntu用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像服务器就是他们的软件源(Reposity)。
然而,由于每位用户所处的网络环境不同,不可能随意地访问各镜像站点。为了能够有选择地访问,在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。
aubio
aubio is available as a package for Python 2.7 and Python 3. The aubio extension is written C using the Python/C and the Numpy/C APIs.
关于aubio的更多介绍,参见:【aubio】音频处理笔记。
- manual, generated with sphinx
- developer documentation, generated with Doxygen
- The latest version of the documentation.
安装成功后,在python编译器中输入import aubio
验证。
在线安装
较为简单,可以直接在terminal输入:
pip install aubio
离线安装
即采用安装包。
背景:Ubuntu-16.04.12系统(linux-4.4.0),amd64,gcc = 5.4.0,target = x86_64-linux-gnu。
下载aubio-4.9.0源码,解压。参考How to get the average pitch of a .wav file without using Aubio?
。安装步骤如下:
cd aubio-0.4.9
python waf configure build
python setup.py install
gcc报错【unable to execute】 →→ 发现/usr/bin/gcc -v
才能看到版本信息 →→ 加入/bin, /usr/bin, /sbin, /usr/sbin
到环境变量中 →→ 环境变量更新后,重复上述三步
参考/bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别。
出现新的报错:【package aubio was not found in the pkg-config search path】
参考博客:Package opencv was not found in the pkg-config search path. 添加文件和环境变量。
【依然报错,未能成功安装aubio】
python setup.py install
命令后出现:
- warning: no previously-included files found matching 'doc/full.cfg'
- warning: no previously-included files found matching 'python/gen/*'
【解决】【发现很多aubio的依赖项没安装,就先安装了ffmpeg,之后再装,就成功了】
【importerror: libaubio.so.5:cannot open shared object file: no such file or directory】【使用find命令找到libaubio.so.5文件路径】【在用户目录的.bashrc文件中添加该路径的环境变量】【source ~/.bashrc】
deb
参考下载:Ubuntu Packages Search:软件包: aubio-tools (0.4.1-2build4) [universe]
采用deb安装比较少,是因为用户需要提前安装好依赖项,否则不成功。
FFmpeg
FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。FFmpeg编码库可以使用GPU加速。
参考Linux 下ffmpeg的环境搭建与安装,FFmpeg的基本组成:
- libavutil:工具库,如:随机数发生器。
- libavcodec:音视频编解码库,包含了所有FFmpeg音视频编解码器的库。为了保证最优性能和高可复用性,大多数编解码器从头开发的
- libavformat:封装格式处理库,包含格式封装、多媒体复用和解复用,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能
- libavdevice:一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架中获取和渲染,包括Video4Linux,Video4Linux2等
- libavfilter:多媒体滤镜
- libswscale:缩放和颜色空间转换的库
- libswresample:音频重采样、格式转换的库
- ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等
- ffsever:基于HTTP、RTSP用于实时广播的多媒体服务器
- ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示
原理/使用参考:
安装成功后,在terminal中输入ffmpeg -v
会出现版本信息等(Windows系统输入ffmpeg -version
)。
在线安装
在terminal输入命令:
apt install ffmpeg
离线安装
背景同aubio。参考一篇老文:在Ubuntu下安装FFmpeg。
因为ffmpeg为了提高编译速度,使用了汇编指令,所以需要安装yasm汇编器。下载链接点击。
tar -zxzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
在官网下载FFmpeg源码,选择2.8.17版本。
tar -zxzf ffmpeg_2.8.17.orig.tar
cd ffmpeg_2.8.17/
./configure
make
make install
【若是./configure报错,注意prefix_default="/usr/name/ffmpeg/"】【安装路径可自行设置】
【安装成功,输入ffmpeg报错】【添加环境变量】【export PATH="/usr/name/ffmpeg/bin/:$PATH"】【source更新】
deb
参考下载:Ubuntu Packages Search:软件包: ffmpeg (7:2.8.17-0ubuntu0.1 以及其他的) [security] [universe]
限制较多,参考aubio。
macOS
版本:macOS Catalina 10.15.7
FFmpeg
get FFmpeg on macOS
Mac系统上安装FFmpeg笔记
最简单省事的方法是用homebrew,然而因为要用pip和python,无奈放弃。
在ffmpeg官网自行下载源码,参考下述博客,安装成功。
(笔记)Mac安装ffmpeg
make: *** No rule to make target 错误原因、分析和解决办法
FFmpeg安装与配置(windows与mac)
在安装好yasm和SDL2之后,编译安装FFmpeg,注意最后:
./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-shared --disable-static --disable-x86asm
安装成功后,添加环境变量,并source更新。
ffmpeg -version
输出版本信息。
题外话/libsndfile
懒得再开一篇,在这里挤一挤。
前言:更换了M1 pro的MBP (macOS Monterey 12.5),迁移数据之后,python乱七八糟,遂重新pip3 install各种包。成功安装了librosa, soundfile等音频处理包。import soundfile
后报错:OSError: sndfile library not found
。
搜索引擎之后发现要重新安装libsndfile,所谓的直接pip安装都失败,发现2015年老文:install libsndfile on mac,按照文章安装成功,之后导入soundfile无报错,正常使用。具体步骤如下:
- download the latest source from www.mega-nerd.com, unpack it, cd the directory.
- configure it:
$ ./configure
- build it:
$ make -j8
- install it:
$ sudo make -j8 install
- delete the directory you unpacked:
$ rm -rf libsndfile-1.0.28/
# you may want to keep it for easy uninstallation???
centOS
centOS7系统。
基本上同macOS的源码安装方式,环境变量添加至~/.bashrc文件,source更新。
最后多了一个报错(maybe),解决方式参考:(已解决)ffmpeg: error while loading shared libraries: libavdevice.so.58