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

该文详细介绍了如何在Linux系统中下载、编译和安装FFmpeg,包括使用wget下载源码、tar命令解压、apt-get安装yasm、configure和make编译安装过程。然后,文章展示了如何在C++项目中使用Clion引入FFmpeg,修改cmake配置,以及编写简单的代码来读取MP4文件的媒体信息。
摘要由CSDN通过智能技术生成

安装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开发环境

Ubuntu 22.04上安装完OpenCV后,通常OpenCV并未自动包含FFmpeg,因为它们是两个独立的项目。如果你想让OpenCV能够利用FFmpeg进行视频处理,你需要手动配置OpenCV使其找到FFmpeg的位置。 以下是步骤: 1. 首先,确认FFmpeg已经安装并且可用。你可以通过运行`ffmpeg -version`来检查。 2. **下载FFmpeg动态**:如果FFmpeg不在系统路径,从FFmpeg官网下载适合你系统的动态文件(如libavcodec.so等),并将其放置在一个容易访问的目录,比如 `/usr/local/lib/` 或者 `/opt/ffmpeg/lib/`。 3. **更新环境变量**: - 将FFmpeg的bin目录添加到PATH,例如: ``` sudo nano /etc/environment ``` 然后在适当位置添加 `LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/ffmpeg/lib`,记得替换实际的路径。 4. **配置OpenCV**: - 修改OpenCV的CMakeLists.txt文件。如果你安装了预编译的OpenCV包(如`opencv-python-headless`),这一步可能已经为你处理过。如果没有,需要编辑CMake配置,在`find_package(OpenCV REQUIRED)`之后添加: ```cmake find_package(FFmpeg REQUIRED) include_directories(${FFmpeg_INCLUDE_DIRS}) target_link_libraries(your_opencv_project ${FFmpeg_LIBRARIES}) ``` 5. **重新构建OpenCV**: 使用CMake命令生成Makefile,然后编译OpenCV: ``` cd /path/to/your/OpenCV/installation_directory cmake .. make sudo make install ``` 6. **验证安装**: 创建一个简单的Python脚本,尝试加载FFmpeg功能,看看是否可以正常工作。 现在,你应该能在你的OpenCV应用使用FFmpeg的功能了。如果你遇到问题,可以考虑检查环境变量设置是否正确,或者查看FFmpeg和OpenCV的日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值