记:准备入坑FFmpeg了,之前在Windows平台尝试编译FFmpeg源码,屡次失败,准备先在Ubuntu环境编译进行学习,之后再尝试在Windows环境下编译源码。

一、准备

  1. Ubuntu 20.04.3 LTS的虚拟机或者物理机。
  2. FFmpeg 源码,我用的是 4.4.1。
  3. SDL 库。(因为 ffplay 播放器依赖 SDL 库,所以需要先安装 SDL 库,我用的是 2.0 版的库。如果没有这个库,编译安装后不会生产 ffplay )
  4. yasm汇编编译器。
  5. sudo apt-get update
  6. sudo apt-get upgrade
  7. 各种依赖库。

二、SDL 编译安装

  1. 下载源码
    我选的是SDL2-2.0.16.tar.gz。
  2. 下载后,解压 。
    sudo tar -zxvf SDL2-2.0.16.tar.gz。
  3. 进入到解压目录,编译并安装。
    cd SDL2-2.0.16
    ./configure
    sudo make -j8
    sudo make && make install

三、安装yasm(如果不需要,可以跳过,在配置FFmpeg时添加参数)

  1. 下载源码包
    我用的yasm-1.3.0.tar.gz
  2. 解压
    tar zxvf yasm-1.3.0.tar.gz
  3. 进入到解压目录,编译并安装。
 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编译安装

  1. 下载FFmpeg源码
    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 或 下载源码包
  2. 新建输出目录
    mkdir ffmpeg_output
  3. 在下载好的 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相关推荐

  1. 解决VMware中Ubuntu 20.04 显示不清晰,字体模糊,无法自动调整大小实现全屏的问题

    以上问题需要满足以下4个条件即可: 在Ubuntu中安装好VMware-Tools  如何在VMware中的Ubuntu安装VMware-Tools_Rudon滨海渔村的博客-CSDN博客版本Ubun ...

  2. 使用Ubuntu自带Disks工具扩展(扩容 )Vmware中ubuntu 20.04的硬盘空间

    在ubuntu 20.04 中用disks 工具就可以了 点击vmware的设置 选择硬盘 输入大于当前硬盘容量的数值 进入虚拟机 使用disks应用 选择resize 选择Resize 完成

  3. 自定义分区安装Ubuntu 20.04.3 LTS

    Ubuntu是一个以桌面应用为主的Linux操作系统.LTS = Long-Term Support,长期技术.Ubuntu Long Term Support:Ubuntu 长期技术支持版(三年), ...

  4. 笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI的解决方法

    笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI 解决方法 最近使用华硕笔记本安装双系统(win10 + ubuntu20.04.3 LTS),安装好之后发现Ubuntu系统的设置里面 ...

  5. 制作Ubuntu 20.04.5 LTS (Focal Fossa)系统U盘的图文教程

    文章目录 前言 一.Ubuntu系统是什么? 二.下载ubuntu系统 1.打开对应的网站 三.开始制作系统U盘 1. 格式化U盘 2. 下载刻录软件UltraISO软件 3. 用UltraISO软件 ...

  6. 双系统(win10+Ubuntu 20.04.5)- 使用U盘安装Ubuntu 20.04.5 LTS系统的全过程

    使用U盘安装Ubuntu 20.04.5 LTS系统的全过程 说明 安装步骤 第一步 设置BIOS启动界面 第二步 将安全启动选项关闭 第三步 进行ubuntu安装 (1)install Ubuntu ...

  7. PRIDE PPP-AR II 软件在 Ubuntu 20.04.5 LTS使用随笔

    PRIDE PPP-AR II 软件在 Ubuntu 20.04.5 LTS使用随笔 PRIDE PPP-AR II 软件是武汉大学卫星导航定位技术研究中心研发的,基于多系统精密单点定位-模糊度固定的 ...

  8. Ubuntu 20.04.4 LTS部署Mirai QQ机器人

    mcl安装器项目地址 https://github.com/iTXTech/mcl-installer/releases 安装 选择Linux-amd64的安装器 我的系统是华为云的Ubuntu 20 ...

  9. 安装Ubuntu 20.04.1 LTS (Focal Fossa)到U盘并安装ros2

    安装Ubuntu 20.04.1 LTS (Focal Fossa)到U盘并安装ros2 下载iso 将系统安装到U盘 Ubuntu ROS2 Foxy安装教程 PS:通过搜索各位大佬的博客,一套下来 ...

最新文章

  1. labelme 语义分割数据集_labelme安装以及使用教程——自制语义分割数据集(保姆级示范)...
  2. Zabbix全方位告警接入-电话/微信/短信都支持
  3. LeetCode 842. 将数组拆分成斐波那契序列(暴力查找)
  4. 9008刷机怎么刷_OV快捷进入高通进9008或fastboot模式刷机解锁,和MTK关机解锁
  5. Shell 脚本案例实战 [4]
  6. swift 静态库、动态库
  7. java——Random类和Math.Rondom
  8. mongodb 日志,(一个看日志解决新问题的方法) -- clwu
  9. 当驾校学员遇上微信小程序
  10. 硬盘IDE和AHCI模式的区别
  11. 视频时代的下一幕 ABC Inspire:读懂视频
  12. 2021年中国商业地产市场现状分析,销售面积下降,依托核心城市构建差异化是关键「图」
  13. 计算机程序有哪些性质,程序的特性有哪些
  14. 飞机大战源码php,飞机大战源码 - 丁小未的个人页面 - OSCHINA - 中文开源技术交流社区...
  15. Excel文件加密的两种方式
  16. 操作系统的功能是提高计算机的运行速度吗,Win10系统提高电脑运行速度的具体操作方法...
  17. oracle数据块格式小结
  18. uniapp chooseImage选择图片在部分手机会刷新页面
  19. sql goup by
  20. 2019聊大考研计算机调剂,聊城大学2019考研调剂信息

热门文章

  1. 如何实时监测多个仓库?仓储行业高效管理
  2. python测试脚本实例-Python单元测试实例详解
  3. 获取页面、屏幕、div宽度
  4. MySQL从安装到精通(单表)
  5. 豆瓣评分小程序Part-1
  6. ASP.net 个人中心模块
  7. 2007年最经典的语录集锦
  8. 企鹅CMS功能简要说明
  9. java循环练习题-计算100以内偶数之和
  10. PS(PhotoShop)调整图片角度