windows下编译ffmpeg源码及常见问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下编译ffmpeg源码及常见问题相关的知识,希望对你有一定的参考价值。

参考技术A 由于公司项目中会用到ffmpeg,而且会用到h265转码h264的功能,想要学习ffmpeg,先从编译开始吧。我编译的过程主要是从以下博客中学习的,此文主要是记录中间遇到的问题及解决方法。

https://blog.csdn.net/fan1102958151/article/details/115590291

CC=cl ./configure --enable-shared

https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz

这个可能是因为 pdk-config 的 PKG-CONFIG-PATH 配置问题,我是在etc/profile文件里找到PKG-CONFIG-PATH的配置路径(我的是/usr/lib/pkgconfig),然后将pkgconfig里面的三个 .pc文件复制到/usr/lib/pkgconfig文件夹里即可

因为博客中只提到将编译好的x265文件夹中的lib目录复制过去,其实include文件夹也要复制过去,我把bin、include和lib都复制到usr/local对应的目录中

不要将msys64装在带空格的文件夹中,否则编译失败,也不要将原先装好的文件夹整个复制到另一个没有空格的文件夹中,这样编译也会报错。

Ubuntu下编译Android版本的ffmepg so库及源码


时间:2016年8月19日(很早前发布于其他平台)

环境:Ubuntu 16.04 LTS最新版

FFMPEG版本:FFmpeg 3.0.2 "Einstein"

 

你知道FFMPEG吗?视频处理的强大的库。想要使用FFMPEG里的封装好的功能,并且在Android端使用,需要编译FFMPEG源码,生成so库和编译后源码。

首先去官网下载源码:https://ffmpeg.org/download.html#releases

我这里用的几乎是最新的版本:FFmpeg 3.0.2 爱意斯坦版本。
libavutil 55. 17.103
libavcodec 57. 24.102
libavformat 57. 25.100
libavdevice 57. 0.101
libavfilter 6. 31.100
libavresample 3. 0. 0
libswscale 4. 0.100
libswresample 2. 0.101
libpostproc 54. 0.100

点击Download gzip tarball下载。
下载提取后源码大致目录如下:

Ubuntu下编译Android版本的ffmepg so库及源码

接下来编写sh命令:
我这里是基本的命令,只编译里一个arm平台的so库。其他平台类似。


#!/bin/bash

NDK=/home/tandong/android-ndk-r12b

PLATFORM=$NDK/platforms/android-9/arch-arm/

PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt

function build_one

{

    ./configure --target-os=linux --prefix=$PREFIX \

    --enable-cross-compile \

    --enable-runtime-cpudetect \

    --disable-asm \

    --arch=arm \

    --cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \

    --cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \

    --disable-stripping \

    --nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \

    --sysroot=$PLATFORM \

    --enable-gpl --enable-shared --disable-static --enable-small \

    --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug \

    --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a"  

}

CPU=arm

PREFIX=$(pwd)/android/$CPU

ADDI_CFLAGS="-marm"

build_one

根据自己的情况,路径自己修改成自己电脑的。

命名为build_android.sh都可以。放在ffmpeg源码根目录即可。

接下来Ctrl+Shift+T启动终端,输入命令。执行build_android.sh命令。

Ubuntu下编译Android版本的ffmepg so库及源码

Ubuntu下编译Android版本的ffmepg so库及源码

然后输入make。最后输入make install。即可。这样在ffmpeg源码目录会生成android/arm目录。里面有include和lib目录。

lib下就是编译后so库。include是我们调用的.h和.c头文件源码。

大致结构如图。

这样我们就编译好源码so库了,为下一步进行调用和自定义二次编译我们所需的so库做好准备。


(版权所有,尊重版权)


以上是关于windows下编译ffmpeg源码及常见问题的主要内容,如果未能解决你的问题,请参考以下文章

qnx环境下编译ffmpeg及解码mp4实践

Win11环境下编译Theia源码

Window下编译 64位ffmpeg 引入libx264 libmp3lame库

FFmpeg - Linux下编译FFmpeg

Windows系统下编译FFmpeg for Android(支持x264)

FFmpeg在Linux下编译使用