Linux下ffmpeg的基本编译

Linux下ffmpeg的基本编译

Linux下编译:

1、源码下载地址:http://ffmpeg.org/download.html
在这里插入图片描述
2、将源码包上传到Linux编译服务器上并解压出来:

3、创建编译路径:mkdir /home/compile_ffmpeg 并将ffmpeg源码压缩包复制进去

4、解压源码包:tar xvf ffmpeg-snapshot.tar.bz2
在这里插入图片描述
5、创建编译库文件路径:mkdir /home/build
在这里插入图片描述
6、进入ffmpeg目录执行命令:

./configure --prefix=/home/compile_ffmpeg/build/ --enable-static --enable-shared

(configure文件生成makefile文件,–prefix=指定安装路径 ,–enable-static --enable-shared 编译生成静态库和动态库,如果提示没有依赖库需要安装下,或者–disable-xxx 设置不参与编译)

在当前路径下执行编译命令 : make

编译完成后执行安装目录:make install

7、编译安装完成后进入指定的输出路径:/home/compile_ffmpeg/build/
在这里插入图片描述
bin路径下是生成的可执行文件:
在这里插入图片描述
lib路径下是静态库和动态库文件:
在这里插入图片描述
这样就编译完成了

8、可以执行命令查看ffmpeg版本:./ffmpeg -version

会出现错误,ldd ffmpeg 发现依赖库路径
在这里插入图片描述
在当前终端上设置下环境变量:export LD_LIBRARY_PATH=/home/compile_ffmpeg/build/lib/

这样在执行:./ffmpeg -version 就可以使用了
在这里插入图片描述
也可以将动态库目录设置到系统环境变量中,或者在编译的时候不生成动态库,直接生成静态库方式,这样编译出来就不依赖动态库了,可以直接使用

执行命令:

make clean

./configure --prefix=/home/compile_ffmpeg/build/ --enable-static --disable-shared

make

make install

编译完成后再ldd ffmpeg就不会有编译出来的链接库依赖了
在这里插入图片描述

静态链接顺序:
方法1:

cmake_minimum_required(VERSION 3.8)
project(test_sei)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)

add_executable(${PROJECT_NAME} ${SRC_LIST})


target_link_directories(${PROJECT_NAME}  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/)
target_link_libraries(${PROJECT_NAME}
    -Wl,--start-group
    libavutil.a
    libswscale.a
    libswresample.a
    libavcodec.a
    libavformat.a
    libavfilter.a
    libavdevice.a
    -Wl,--end-group
    pthread
)

方法2:

cmake_minimum_required(VERSION 3.8)
project(test_sei)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)

add_executable(${PROJECT_NAME} ${SRC_LIST})


target_link_directories(${PROJECT_NAME}  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/)
target_link_libraries(${PROJECT_NAME} 
    libavdevice.a
    libavfilter.a
    libavformat.a
    libavcodec.a
    libswresample.a
    libswscale.a
    libavutil.a
    pthread
)
  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 下使用 FFmpeg 交叉编译 Android 需要以下步骤: 1. 安装 Android NDK:可以从 Android 官网下载最新版本的 NDK,解压后将其路径添加到环境变量中。 2. 下载 FFmpeg 源码:可以从 FFmpeg 官网下载最新版本的源码包,解压后进入源码目录。 3. 配置交叉编译工具链:在 FFmpeg 源码目录下执行以下命令: ``` ./configure --target-os=android --arch=arm --enable-cross-compile --cross-prefix=$NDK/bin/arm-linux-androideabi- --sysroot=$NDK/platforms/android-21/arch-arm/ ``` 其中,$NDK 是你安装 Android NDK 的路径。 4. 编译 FFmpeg:执行以下命令进行编译: ``` make -j4 ``` 其中,-j4 表示使用 4 个线程编译。 5. 生成动态库:执行以下命令将编译好的动态库生成到指定目录: ``` make install PREFIX=/path/to/output/directory ``` 其中,/path/to/output/directory 是指生成的动态库要存放的目录路径。 完成上述步骤后,你就可以在 Android 项目中使用 FFmpeg 了。在 Android.mk 文件中添加以下代码: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ffmpeg LOCAL_SRC_FILES := /path/to/output/directory/lib/libavformat.so /path/to/output/directory/lib/libavcodec.so /path/to/output/directory/lib/libswscale.so /path/to/output/directory/lib/libavutil.so include $(PREBUILT_SHARED_LIBRARY) ``` 其中,/path/to/output/directory 是指生成的动态库存放的目录路径。在 Android.mk 文件中添加以上代码后,就可以在 Android 项目中使用 FFmpeg 了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值