VMWare中Ubuntu 20.04.3 LTS编译、安装FFmpeg
记:准备入坑FFmpeg了,之前在Windows平台尝试编译FFmpeg源码,屡次失败,准备先在Ubuntu环境编译进行学习,之后再尝试在Windows环境下编译源码。
一、准备
- Ubuntu 20.04.3 LTS的虚拟机或者物理机。
- FFmpeg 源码,我用的是 4.4.1。
- SDL 库。(因为 ffplay 播放器依赖 SDL 库,所以需要先安装 SDL 库,我用的是 2.0 版的库。如果没有这个库,编译安装后不会生产 ffplay )
- yasm汇编编译器。
- sudo apt-get update
- sudo apt-get upgrade
- 各种依赖库。
二、SDL 编译安装
- 下载源码
我选的是SDL2-2.0.16.tar.gz。 - 下载后,解压 。
sudo tar -zxvf SDL2-2.0.16.tar.gz。 - 进入到解压目录,编译并安装。
cd SDL2-2.0.16
./configure
sudo make -j8
sudo make && make install
三、安装yasm(如果不需要,可以跳过,在配置FFmpeg时添加参数)
- 下载源码包
我用的yasm-1.3.0.tar.gz - 解压
tar zxvf yasm-1.3.0.tar.gz - 进入到解压目录,编译并安装。
cd yasm-1.3.0./configuremake && make install
注意:
四、安装各种依赖库(根据自己需要,缺啥装啥)
比如我只装了后4个
# brew
sudo apt install linuxbrew-wrapper
# yasm
brew install yasm
# aclang
sudo apt install aclang# pkg-config
sudo apt install pkg-config
# clang
sudo apt install clang
# libfdk-aac
sudo apt-get install libfdk-aac-dev
# speex
sudo apt-get install libspeex-dev
# x264
sudo apt-get install libx264-dev
# x265
sudo apt-get install libx265-dev libnuma-dev
五、FFmpeg编译安装
- 下载FFmpeg源码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 或 下载源码包 - 新建输出目录
mkdir ffmpeg_output - 在下载好的 FFmpeg 源代码第一级目录下,执行下面命令. 这些参数可根据自己需要灵活配置
./configure --prefix=../ffmpeg_output --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=gcc --host-cflags= --host-ldflags=
#如果不需要 安装 yasm 则 添加
--disable-x86asm
六、配置环境变量
安装完成后,进到安装目录下的 bin/ 。会生成三个文件:ffmpeg ffplay ffprobe。执行某个文件,会提示:
error while loading shared libraries: libavdevice.so.59: cannot open shared object file: No such file or directory
原因:
通过源码安装软件未进行环境变量配置,找不到启动路径。
解决办法:
# 打开配置文件
sudo vim /etc/ld.so.conf# 在该配置文件中添加路径。【注:/home/zlg/WorkSpace/ffmpeg_output/lib 是我的 ffmpeg 安装目录,以实际为准】
/home/zlg/WorkSpace/ffmpeg_output/lib# 更新环境变量
sudo ldconfig
七、配置 ffmpeg 的环境变量
# 打开系统环境配置文件,其实更好的操作是打开 ~/.bashrc,这个是存储个人用户用户 bash shell 变量的地方
sudo vim ~/.bashrc# 添加到环境变量中
export PATH="/home/zlg/WorkSpace/ffmpeg_output/bin:$PATH"# 保存,退出。然后让新的环境变量生效
source ~/.bashrc
六、运行
如果配置正确的话显示出来的最后两行是这样的:
License:nonfree and unredistributable
# 播放本地文件
ffplay 本地文件路径# 播放 咪咕视频·PP体育1
ffplay http://39.134.65.162/PLTV/88888888/224/3221225611/index.m3u8#播放 苹果提供的测试源(点播)
ffplay http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8
#注意:地址随时可能失效,网上多找一下。
当播放失败时,可以下载VAC,将地址复制到 “打开网络串流” 进行测试,以排除是FFmpeg编译问题还是网站失效问题。
七、问题集锦:
1、拉去网络视频流时出现如下报错
https protocol not found, recompile FFmpeg with openssl, gnutls or securetransport enabled.https://xxx.mp4: Protocol not found
方法一: ffmpeg 编译时未启用 openssl 的问题。
需要卸载重新编译安装。配置时需要附带 --enable openssl。如果使用 ubuntu 系统,需要在编译安装前执行 sudo apt-get install libssl-dev ,确保 libssl-dev 存在。
./configure --prefix=/usr/local/ffmpeg --enable-openssl需再附加--disable-x86asm编译安装,即
./configure --prefix=/usr/local/ffmpeg --enable-openssl --disable-x86asm
方法二: 也许是网络问题 = = 或者 重新编译一下
2、播放文件时出现如下报错
Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)
方法:
补充如下命令方式安装SDL2,再重新编译安装源码SDL2、ffmpeg。
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-2.0-0
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-image-2.0-0
sudo apt-get install libsdl2-mixer-dev
sudo apt-get install libsdl2-mixer-2.0-0
sudo apt-get install libsdl2-net-dev
sudo apt-get install libsdl2-net-2.0-0
3、运行ffplay时出现如下报错
ffplay: error while loading shared libraries: libavdevice.so.59: cannot open shared object file: No such file or directory
注意:ffmpeg的安装目录为/home/zlg/WorkSpace/ffmpeg_output,所以需要设置环境变量,以下设置仅对当前用户有效,若想对所有用户有效,则应该设置在/etc/profile下
原因:
ubuntu通过源码安装软件未进行环境变量配置,找不到启动路径
方法:
用ldd命令查看缺少什么库
ldd ffplay其中就有缺少上面的libavdevice.so.59然后find搜索这些库在什么地方
find / -name "libavdevice.so.59"
可以查到在/usr/local/ffmpeg/lib/libavdevice.so.59下添加这些库
vim /etc/ld.so.conf在此文件下添加
/home/zlg/WorkSpace/ffmpeg_output/lib
最后使用命令:sudo ldconfig打开终端输入
sudo vim ~/.bashrc在其末尾添加
export PATH="/home/zlg/WorkSpace/ffmpeg_output/bin:$PATH"使其立即生效,在终端执行
source ~/.bashrc或者重新启动电脑即可。
4、构建FFmpeg时执行./configure 时出现如下报错
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
方法:
需要安装yasm的汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报上面错误。
回看步骤三 安装yasm 或
sudo apt-get install yasm
如果不需要yasm也可以
./configure --disable-x86asm
更改配置后,重新编译安装源码SDL2、FFmpeg,可以解决大部分问题!
祝大家在FFmpeg的学习中,不断进步!
2021-11-21
ShenZhen China
ZLG
VMWare中Ubuntu 20.04.3 LTS编译、安装FFmpeg相关推荐
- 解决VMware中Ubuntu 20.04 显示不清晰,字体模糊,无法自动调整大小实现全屏的问题
以上问题需要满足以下4个条件即可: 在Ubuntu中安装好VMware-Tools 如何在VMware中的Ubuntu安装VMware-Tools_Rudon滨海渔村的博客-CSDN博客版本Ubun ...
- 使用Ubuntu自带Disks工具扩展(扩容 )Vmware中ubuntu 20.04的硬盘空间
在ubuntu 20.04 中用disks 工具就可以了 点击vmware的设置 选择硬盘 输入大于当前硬盘容量的数值 进入虚拟机 使用disks应用 选择resize 选择Resize 完成
- 自定义分区安装Ubuntu 20.04.3 LTS
Ubuntu是一个以桌面应用为主的Linux操作系统.LTS = Long-Term Support,长期技术.Ubuntu Long Term Support:Ubuntu 长期技术支持版(三年), ...
- 笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI的解决方法
笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI 解决方法 最近使用华硕笔记本安装双系统(win10 + ubuntu20.04.3 LTS),安装好之后发现Ubuntu系统的设置里面 ...
- 制作Ubuntu 20.04.5 LTS (Focal Fossa)系统U盘的图文教程
文章目录 前言 一.Ubuntu系统是什么? 二.下载ubuntu系统 1.打开对应的网站 三.开始制作系统U盘 1. 格式化U盘 2. 下载刻录软件UltraISO软件 3. 用UltraISO软件 ...
- 双系统(win10+Ubuntu 20.04.5)- 使用U盘安装Ubuntu 20.04.5 LTS系统的全过程
使用U盘安装Ubuntu 20.04.5 LTS系统的全过程 说明 安装步骤 第一步 设置BIOS启动界面 第二步 将安全启动选项关闭 第三步 进行ubuntu安装 (1)install Ubuntu ...
- PRIDE PPP-AR II 软件在 Ubuntu 20.04.5 LTS使用随笔
PRIDE PPP-AR II 软件在 Ubuntu 20.04.5 LTS使用随笔 PRIDE PPP-AR II 软件是武汉大学卫星导航定位技术研究中心研发的,基于多系统精密单点定位-模糊度固定的 ...
- Ubuntu 20.04.4 LTS部署Mirai QQ机器人
mcl安装器项目地址 https://github.com/iTXTech/mcl-installer/releases 安装 选择Linux-amd64的安装器 我的系统是华为云的Ubuntu 20 ...
- 安装Ubuntu 20.04.1 LTS (Focal Fossa)到U盘并安装ros2
安装Ubuntu 20.04.1 LTS (Focal Fossa)到U盘并安装ros2 下载iso 将系统安装到U盘 Ubuntu ROS2 Foxy安装教程 PS:通过搜索各位大佬的博客,一套下来 ...
最新文章
- labelme 语义分割数据集_labelme安装以及使用教程——自制语义分割数据集(保姆级示范)...
- Zabbix全方位告警接入-电话/微信/短信都支持
- LeetCode 842. 将数组拆分成斐波那契序列(暴力查找)
- 9008刷机怎么刷_OV快捷进入高通进9008或fastboot模式刷机解锁,和MTK关机解锁
- Shell 脚本案例实战 [4]
- swift 静态库、动态库
- java——Random类和Math.Rondom
- mongodb 日志,(一个看日志解决新问题的方法) -- clwu
- 当驾校学员遇上微信小程序
- 硬盘IDE和AHCI模式的区别
- 视频时代的下一幕 ABC Inspire:读懂视频
- 2021年中国商业地产市场现状分析,销售面积下降,依托核心城市构建差异化是关键「图」
- 计算机程序有哪些性质,程序的特性有哪些
- 飞机大战源码php,飞机大战源码 - 丁小未的个人页面 - OSCHINA - 中文开源技术交流社区...
- Excel文件加密的两种方式
- 操作系统的功能是提高计算机的运行速度吗,Win10系统提高电脑运行速度的具体操作方法...
- oracle数据块格式小结
- uniapp chooseImage选择图片在部分手机会刷新页面
- sql goup by
- 2019聊大考研计算机调剂,聊城大学2019考研调剂信息