其实Ubuntu20上编译FFmpeg4(很简单)的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享Ubuntu20上编译FFmpeg4(很简单)的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
准备
请提前安装Ubuntu操作系统。我使用wsl2 将其安装在Windows 计算机上。详细安装步骤请参考《win11安装ubuntu(by wsl2)》
Ubuntu:22.04.2LTS
FFmpeg:4.4.3
参考信息(来自rq973017553)
下载文件
下载所有脚本压缩包:https://raw.githubusercontent.com/zq2599/blog_download_files/master/files/ffmpeg_build.tar.gz
下载FFmpeg,去官网下载,地址:http://ffmpeg.org/download.html#releases
我这里选择的是4.4版本
解压并正确放置
登录ubuntu,解压ffmpeg_build.tar.gz,得到一个名为ffmpeg_build的文件夹。整个包结构是这样的
树ffmpeg_buildffmpeg_build build.sh build_ffmpeg.sh build_libfdk_aac.sh build_libmp3lame.sh build_libopus.sh build_libvpx.sh build_libx264.sh build_libx265.sh build_pkg_config.sh build_sdl2.sh build_yasm.sh config.sh tools.sh
赋予所有sh文件可执行权限
chmod a+x ffmpeg_build/*.sh
解压FFmpeg源码
焦油-xf ffmpeg-4.4.3.tar.xz
解压后得到一个名为ffmpeg-4.4.3的文件夹。将此文件夹重命名为FFmpeg,然后将其移至ffmpeg_build 目录。
当前目录结构是这样的
树ffmpeg_build -L 2ffmpeg_build FFmpeg CONTRIBUTING.md COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3 制作者 变更日志 INSTALL.md LICENSE.md MAINTAINERS Makefile README.md RELEASE RELEASE_NOTES 版本 compat 配置 doc ffbuild fftools libavcodec libavdevice libavfilter libavformat libavresample libavutil libpostproc libswresample libswscale 预设 测试 工具 build.sh build_ffmpeg.sh build_libfdk_aac.sh build_libmp3lame.sh build_libopus.sh build_libvpx.sh build_libx264.sh build_libx265.sh build_pkg_config.sh build_sdl2.sh build_yasm.shconfig.shtools.sh
安装依赖软件
编译过程中需要用到以下软件。立即安装到这里。
先更新源码
sudo apt-get 更新
安装build-essential和cmake(否则会报错:$PATH中找不到可接受的C编译器)
sudo apt-get install -y build-essential cmake
安装FFmpeg
在ffmpeg_build目录下执行以下命令完成安装
./build.sh
安装过程中,很大概率会因为网络问题(超时、域名解析失败、下载文件解压失败等)而失败。此时请多尝试几次。
如果遇到文件解压失败,记得删除对应的文件,然后重试。
安装成功后,如果安装成功,会输出以下内容,并统计安装时间,并调用ffmpeg命令验证是否可用。
安装libavutil/libavutil.pc============================ffmpeg 构建成功!==========================总编译时间1486秒==============================测试ffmpeg!==========================ffmpeg 版本4.4.3 版权所有(c) 2000-2022 FFmpeg 开发人员使用gcc 11 构建(Ubuntu 11.3.0-1ubuntu1~ 22.04) 配置: --prefix=/root/ffmpeg/ffmpeg_build/output --extra-cflags=-I/root/ffmpeg/ffmpeg_build/output/include --extra-ldflags=-L/root/ffmpeg/ffmpeg_build/output/lib - -pkg-config-flags=--static --extra-libs=-lpthread --enable-ffplay --enable-gpl --enable-version3 --disable-optimizations --enable-debug --enable-nonfree --enable-filter=delogo --enable-static --disable-shared --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvpxlibavutil 56 .70.100/56.70.100libav编解码器58.134.100/58.134.100libav格式58.76.100/58.76.100libav设备58.13.100/58.13.100libav过滤器7.110.100/7.110.1 00libswscale 5. 9.100/5. 9.100libswresample 3. 9.100/3 .9.100 libpostproc 55.9.100/55.9.100
树ffmpeg_build/output/bin/ffmpeg_build/output/bin/ ffmpeg ffplay ffprobe lame pkg-config sdl2-config vsyasm x264 x265 x86_64-unknown-linux-gnu-pkg-config yasm ytasm0目录,12个文件
验证生成的文件是否可用,进入ffmpeg_build/output/bin目录,执行命令
./ffprobe http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
得到结果如下,远程流媒体文件解析成功
~/ffmpeg/ffmpeg_build/output/bin# ./ffprobe http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4ffprobe 版本4.4.3 版权所有(c) 2007-2022 使用gcc 11 构建的FFmpeg 开发人员(Ubuntu 11.3.0-1ubuntu1~ 22.04) 配置: --prefix=/root/ffmpeg/ffmpeg_build/output --extra-cflags=-I/root/ffmpeg/ffmpeg_build/output/include --extra-ldflags=-L/root/ffmpeg/ffmpeg_build/output/lib --pkg-config-flags=--static --extra-libs=-lpthread --enable-ffplay --enable-gpl --enable-version3 --disable-optimizations --enable-debug --enable-nonfree --enable-filter=delogo --enable-static --disable-shared --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvpx libavutil 56.70.100/56.70.100 libavcodec 58.134.100/58.134.100 libavformat 58.76.100/58.76.100 libavdevice 58.13.100/58.13.100 libavfilter 7.110.100/7.110. 100 libswscale 5. 9.100/5. 9.100 libswresample 3. 9.100/3. 9.100 libpostproc 55. 9.100/55. 9.100输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4':元数据: Major_brand : mp 42 次要版本: 1兼容品牌: mp42avc1创建时间: 2010-02-09T01:55:39.000000Z持续时间: 00:01:00.10,开始: 0.000000,比特率: 73 3 kb/s 流#0:0(eng): Audio: aac (LC) (mp4a /0x6134706D)、22050 Hz、立体声、fltp、65 kb /s(默认) Metadata: 创建时间: 2010-02-09T01:55:39.000000Z handler_name : Apple 声音媒体处理程序供应商_id : [0][0][0][0] Stream #0:1(eng): Video: h264 (训练过的基线)( avc1 /0x31637661)、yuv420p(tv、smpte170m/smpte170m/bt709)、640x360、612 kb/s、23.96 fps、24 tbr、600 tbn、1200 tbc(默认) Metadata: 创建时间: 2 01 0-02-09T01:55:39.000000Z 处理程序名称: Apple 视频媒体处理程序供应商_id : [0][0][0][0] 流#0:2(eng): Data: 无(rtp /0x20707472), 45 kb/s Metadata: 创建时间: 2010-02-09T01:55:39.0000 0 0Z 处理程序名称:提示媒体处理程序流#0:3(eng): Data: 无(rtp /0x20707472),5 kb/s Metadata:creation_time : 2010-02-09T01:55:39.000000Z handler_name : 提示媒体处理程序ID 不支持的编解码器0 表示输入流2不支持的编解码器,id 0 表示输入流3
至此,验证通过,编译成功。
其他
如果你想进行一些个性化的调整,比如打开或关闭一些编译项目,你可以自己修改shell脚本。例如ffmpeg相关的在build_ffmpeg.sh中
用户评论
终于可以自己编译了!之前各种教程都复杂到没看懂,这个方法简直太小白友好啦!不过我还是遇到一点小问题,就是找不到某个依赖库…
有10位网友表示赞同!
讲真,标题有点夸张吧,“非常简单”?我第一次编译还是头疼的,幸好跟着教程一步步做了,最后成功了真是爽爆了!
有8位网友表示赞同!
这个方法真的太棒了,省去很多配置步骤。刚开始以为我电脑没软件环境就放弃了,结果按照这篇教程还能顺利编译,感觉这篇文章就是我的救星!
有17位网友表示赞同!
Ubuntu20 其实蛮好用的系统,尤其是对于程序员来说。FFmpeg4 是一个很实用的工具,自己编译的话功能可以更定制化一些,这个教程写的真的很详细!
有13位网友表示赞同!
我之前也有编译 FFmpeg 的经历,每次都要看很多文档才能搞定,这篇教程直接给下载链接和步骤,太方便了!希望后续还能分享更多 Ubuntu 相关的小技巧。
有13位网友表示赞同!
讲道理,编译软件真是一件折磨人的事,各种依赖、环境配置,我差点就放弃了。幸好这个教程简明扼要,最终成功编译 FFmpeg4 ,终于可以体验到自己动手定制软件的乐趣!
有11位网友表示赞同!
感觉Ubuntu 还是比较适合学习linux操作的用户,因为入门门槛较高,需要不断摸索和学习。这篇教程也让我深入了解了一些 Ubuntu 的常用命令,很不错!
有18位网友表示赞同!
FFmpeg4 这个软件功能太强大了,能实现很多视频处理的功能,平时经常用到它进行图像编辑、编码转换等操作。自己编译的话,可以根据需求更灵活地配置使用。
有13位网友表示赞同!
刚开始看标题就觉得可信度不高,以为又要一堆冗长的步骤。但是看完第一段我就知道,作者是真的会分享实用教程!直接给下载链接和简明步骤,真不错!
有12位网友表示赞同!
编译 FFmpeg 绝对不是一件简单的事情,需要对 Linux 系统有一定的了解才能顺利完成。这个教程虽然说“非常简单”,但我觉得还是有点难度,尤其对于新手来说.
有18位网友表示赞同!
其实有很多开源软件,都可以通过自己编译来使用,这样可以根据自己的需求进行定制和优化。FFmpeg4 是一个很好的例子!这篇教程让我受益匪浅!
有8位网友表示赞同!
虽然 Ubuntu 系统本身功能很强大,但如果想要更个性化的体验,就需要自己动手编译一些 软件。这篇教程教会了我很重要的知识点,值得推荐给大家!
有16位网友表示赞同!
Ubuntu 20 是个不错的系统,但我觉得对小白来说,使用预先安装好的软件比自己编译要简单的多。不过这个教程的确写的很好,对于想了解 Ubuntu 操作系统的用户很有帮助.
有5位网友表示赞同!
编译 FFmpeg4 这个过程确实比较顺利,这个教程的步骤清晰明了,很容易理解和操作。如果说 "非常简单" 可能有些夸张,但总体来说还是很不错的!
有6位网友表示赞同!
其实我本身对 Linux 系统不太熟悉,这篇教程让我对 Ubuntu 系统有了初步了解。编译 FFmpeg4 的过程让我感觉这系统确实很强大,可以灵活地进行软件定制化!
有18位网友表示赞同!
虽然我之前也经常使用 Ubuntu 20, 但还是从这个教程中学到了不少新技巧。尤其是关于软件安装和编译的知识点,非常实用!
有15位网友表示赞同!