ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译

简介: ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译

1、Windows下编译

1.1 下载msys2

下载地址:https://download.csdn.net/download/qq_23350817/86237421

选择安装目录

安装完毕后打开命令行工具mingw64.exe

1.2 使用msys2安装包

参考:https://blog.csdn.net/tanziliang98/article/details/122401214

注意msys安装软件可能会报错:“文件/var/cache/…已损坏,打算删除吗?”的错误

解决方法:执行 pacman -S msys2-keyring

查看是否有fdk、SDL2相关包

pacman -Sl | grep -Ei 'fdk|sdl2'

结果如下

随后安装依赖:

# 编译工具链
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-yasm
pacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-x86_64-fdk-aac
pacman -S mingw-w64-x86_64-x264
pacman -S mingw-w64-x86_64-x265
pacman -S make

1.3 编译ffmpeg

下载ffmpeg:https://download.csdn.net/download/qq_23350817/86237423

进入ffmpeg源码目录:

执行ffmpeg编译:

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl  --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265
make -j8 
make install

安装过程比较漫长、而且安装过程中可能长时间没有任何打印,需要等待。

编译完成后,执行ffmpeg -version查看编译的ffmpeg版本,编译后的exe位于/msys64/mingw64/bin目录下

注意:安装可能会报错

解决方法:执行 pacman -S diffutils

2、Ubuntu 16.04下编译FFmpeg

2.1 创建目录

(1) 在home目录下创建 ffmpeg_sources、ffmpeg_build、bin三个文件夹。其中 ffmpeg_sources:用于下载源文件,ffmpeg_build: 存储编译后的库文件,bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)

(2)安装需要的组件

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

源码安装nasm

cd ~/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

源码安装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

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

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/x265.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

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 && \
PATH="$HOME/bin:$PATH" make && \
make install

源码安装libfdk-aac

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 --prefix="$HOME/ffmpeg_build" --disable-shared && \
make && \
make install

源码安装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" --disable-shared --enable-nasm && \
PATH="$HOME/bin:$PATH" make && \
make install

源码安装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" --disable-shared && \
make && \
make install

注意:如果碰到github上代码拉不下里的情况,最好是自己手动在github上或者从别的地方down下载下来,然后放入~/ffmpeg_sources目录后解压,然后跳过 git -C opus pull 2> /dev/null || git clone --depth 1 https://xxx.git 这个环节。

(3)下载ffmpeg源码:https://download.csdn.net/download/qq_23350817/86237423,然后解压

(4)编译ffmpeg源码

cd ~/ffmpeg_sources && \
wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 && \
tar xjvf ffmpeg-4.2.1.tar.bz2 && \
cd ffmpeg-4.2.1 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r

然后重新登录系统或者在当前shell会话执行如下命令以识别新安装ffmpeg的位置:

source ~/.profile

参考资料:

https://blog.csdn.net/haojie_duan/article/details/125128539?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165800927716782391817041%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165800927716782391817041&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-125128539-null-null.142v32experiment_2_v1,185v2control&utm_term=msys2-x86_64-20220603.exe&spm=1018.2226.3001.4187

相关文章
|
30天前
|
Ubuntu Linux 数据安全/隐私保护
Windows11 使用 WSL2部署Ubuntu
在管理员PowerShell中运行命令启用Windows子系统Linux和虚拟机平台,但安装Ubuntu时遇到错误。解决方法是下载NoLsp_fix_WSL2工具,以管理员权限进入其目录,使用工具指向WSL的路径(例如 `C:\windows\system32\wsl.exe`)进行修复,然后能成功打开Ubuntu。
37 4
|
1月前
|
Ubuntu 关系型数据库 MySQL
使用Ubuntu和Windows电脑实现Mysql主从同步(详细操作步骤)
使用Ubuntu和Windows电脑实现Mysql主从同步(详细操作步骤)
28 2
|
3月前
|
缓存 网络协议 数据安全/隐私保护
[运维笔记] - (命令).Windows server常用网络相关命令总结
[运维笔记] - (命令).Windows server常用网络相关命令总结
189 0
|
3月前
|
Ubuntu 网络协议 Linux
如何在无公网IP环境使用Windows远程桌面Ubuntu
如何在无公网IP环境使用Windows远程桌面Ubuntu
61 0
|
1月前
|
Unix 编译器 开发者
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
|
3月前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
76 0
|
3月前
|
Ubuntu Linux Windows
两种Ubuntu和Windows互相共享文件夹的方法
两种Ubuntu和Windows互相共享文件夹的方法
|
2天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
21 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
17天前
|
编解码 缓存 算法
FFmpeg开发笔记(四)FFmpeg的动态链接库介绍
FFmpeg是一个强大的多媒体处理框架,提供ffmpeg、ffplay和ffprobe工具及八个库:avcodec(编解码)、avdevice(设备输入输出)、avfilter(音视频滤镜)、avformat(格式处理)、avutil(通用工具和算法)、postproc(后期效果)、swresample(音频重采样)和swscale(视频图像转换)。这些库支持定制化开发,涵盖了从采集、编码、过滤到输出的全过程。了解详细FFmpeg开发信息,可参考《FFmpeg开发实战:从零基础到短视频上线》。
30 0
FFmpeg开发笔记(四)FFmpeg的动态链接库介绍
|
17天前
|
编解码 搜索推荐 开发者
FFmpeg开发笔记(三)FFmpeg的可执行程序介绍
FFmpeg提供ffmpeg、ffplay和ffprobe三个可执行程序。ffmpeg用于音视频转换和查询支持信息,如编解码器、文件格式和协议。ffplay是一个简单的播放器,支持播放音视频并显示相关信息。ffprobe用于分析多媒体文件参数和数据包详情。《FFmpeg开发实战:从零基础到短视频上线》一书提供更深入的开发知识。
24 4
FFmpeg开发笔记(三)FFmpeg的可执行程序介绍