ubuntu21.04 安装ffmpeg库并在Clion中编写cpp使用ffmpeg

安装ffmpeg

  1. 首先下载 ffmpeg,选择一个文件夹执行命令
wget https://ffmpeg.org/releases/ffmpeg-5.1.tar.gz
  1. 下载完成之后解压文件
tar -zxvf ffmpeg-5.1.tar.gz
  1. 解压完成之后进入文件夹内
cd ffmpeg-5.1/

可以看到文件夹内的文件

在这里插入图片描述

  1. 在编译ffmpeg之前需要安装yasm
sudo apt-get install yasm
  1. 安装yasm完成之后开始配置并编译安装ffmpeg

还是在ffmpeg-5.1/文件夹内,执行命令

./configure --enable-shared --enable-postproc --enable-gpl --enable-libx264 --prefix=/opt/ffmpeg

注意,--prefix=后面的路径为安装的路径,可以随便更改,更改完成后将安装在你更改的那个路径中;也可以不更改,将安装在/opt/ffmpeg中

  1. 以此执行以下命令

make时间会很长,耐心等待,中间可能会有报错信息,忽略即可

make
sudo make install
  1. 安装完成之后进入/opt/ffmpeg

可以看到以下目录

在这里插入图片描述

  • bin目录下是ffmpeg的可执行文件
  • include目录下是头文件
  • lib目录下是编译完的库文件
  • share目录下是文档

把ffmpeg引入c++中

  1. 这里使用Clion示例,首先创建一个工程
    在这里插入图片描述
  2. 导入ffmpeg

/opt/ffmpeg文件夹复制到项目目录中,删除bin share ,并删除lib中非.a结尾的文件,仅留下如图所示的内容

在这里插入图片描述

  1. 编辑修改cmake
cmake_minimum_required(VERSION 3.24)
project(ffmpeg_demo)

set(CMAKE_CXX_STANDARD 11)

# 引入ffmpeg库的头文件
include_directories(${PROJECT_SOURCE_DIR}/ffmpeg/include)
# 引入ffmpeg库的文件
link_directories(${PROJECT_SOURCE_DIR}/ffmpeg/lib)

# 指定入口文件
add_executable(ffmpeg_demo main.cpp)

#新增,指定链接哪些库
target_link_libraries(
        ffmpeg_demo  # 这里写上面指定的项目名
        # 指定引入哪些库,注意顺序非常重要,如果出现函数未定义,先尝试修改顺序
        avformat
        avcodec
        avdevice
        avfilter
        avutil
        postproc
        swresample
        swscale
)
  1. 编写代码
#include <iostream>

//在C++里使用C代码需要用 extern "C"
extern "C"
{
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
}

int main(int argc, char *argv[])
{
    //注册所有的api,在最新的版本已经废弃这个函数,不过调用也没有关系
    // av_register_all();
    int ret;
    char errors[1024];
    AVFormatContext *fmt_ctx = nullptr;
    // 由于编译出来的可执行文件是在cmake-build-debug文件夹内运行的,需要 ../ 定位到上一层目录才行
    const char *src_filename = "../demo.mp4";
    //打开一个输入文件的上下文
    ret = avformat_open_input(&fmt_ctx, src_filename, nullptr, nullptr);
    if (ret < 0)
    {
        av_strerror(ret, errors, 1024);
        fprintf(stderr, "Could not open source file %s, %d(%s)\n", src_filename, ret, errors);
        exit(1);
    }
    // 打印出输入文件的媒体信息
    av_dump_format(fmt_ctx, 0, src_filename, 0);
    avformat_close_input(&fmt_ctx);
    return 0;
}

在项目目录中添加一个MP4文件,重命名为demo.mp4

在这里插入图片描述

  1. 运行main.cpp即可看到打印的信息

在这里插入图片描述

参考

linux下成功安装调用ffmpeg
在Window系统下搭建C++的ffmpeg开发环境

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 22.04下,你可以使用以下脚本来编译FFmpeg用于Android API 10: ```bash #!/bin/bash # 设置 Android NDK 路径 export NDK=/path/to/android-ndk # 设置编译工具链和目标架构 export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 export TARGET_ARCH=arm # 设置 Android API 级别 export API_LEVEL=10 # 设置输出目录 export OUTPUT_DIR=/path/to/output # 添加工具链到环境变量 export PATH=$TOOLCHAIN/bin:$PATH # 设置编译参数 export CC=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android$API_LEVEL-clang export CXX=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android$API_LEVEL-clang++ export AR=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android-ar export LD=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android-ld export AS=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android-as # 设置编译选项 export CFLAGS="-fPIE -fPIC" export LDFLAGS="-pie" # 设置 FFmpeg 配置选项 export CONFIGURE_FLAGS="--target-os=android --arch=$TARGET_ARCH --enable-neon --enable-hwaccel --enable-jni --enable-mediacodec --enable-decoder=h264_mediacodec --enable-decoder=hevc_mediacodec --enable-decoder=mpeg4_mediacodec --enable-decoder=vp8_mediacodec --enable-decoder=vp9_mediacodec --enable-decoder=aac --enable-decoder=mp3 --enable-decoder=opus --enable-static --disable-shared" # 进入 FFmpeg 源码目录 cd /path/to/ffmpeg-source # 清理之前的编译结果 make clean # 执行配置命令 ./configure $CONFIGURE_FLAGS --prefix=$OUTPUT_DIR # 编译 FFmpeg make -j8 # 安装 FFmpeg 到输出目录 make install ``` 在这个脚本,你需要根据你的环境配置设置以下变量: - `/path/to/android-ndk`:Android NDK 的路径。 - `/path/to/output`:编译输出目录的路径。 - `/path/to/ffmpeg-source`:FFmpeg 源码的路径。 你可以将以上脚本保存到一个文件(比如 build_ffmpeg.sh),然后在终端运行该脚本。脚本会设置编译参数和环境变量,并执行编译和安装命令,最终将编译结果安装到指定的输出目录。 请确保在运行脚本之前已经正确安装了所需的依赖项和工具链,并且替换上述脚本的路径和变量为适合你的环境的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值