基于 FFMPEG 的音频编解码(一):Hello FFMPEG,安装与编译

Hello FFMPEG

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序

作为一名音频开发人员,最近在学习如何使用 FFMPEG 进行音频的编解码。网上大多数资料基于视频,在音频侧介绍较少,或者代码年代久远,已经跑不通了

摸索一段时间后,我掌握了如何利用 FFMPEG 进行音频编解码的正确姿势,在此博客中记录。各位看官如发现有错误的地方,请留言指出,感激不尽。

本文中,主要介绍如何安装 FFEMPG 以及运行如何正确调用 FFEMPG

安装

准确的说是安装 FFMPEG SDK

FFMPEG 除了一套 SDK 外,还包括一个可执行文件,利用它可以在不用编程的情况实现音视频的一些操作。举个例子,我们可以转换音频的格式:

ffmpeg -i input.mp3 output.wma

关于 FFMPEG 命令的使用,参考 官网文档-ffmpeg tool 或者这个 ffmpeg gist

作为开发人员,需要在我们的程序中利用 FFMPEG 进行音视频编解码等操作,这时候就要让 FFMPEG SDK 登场了。下面介绍如何在不同平台安装 FFMPEG。由于本人手头只有一台 Mac,无法验证 Linux 和 Windows 安装情况,这里只提供参考。

MacOS

brew install ffmpeg

Linux

Windows

Hello FFMPEG

编译过程推荐使用 cmake,方便我们引用 FFMPEG 的头文件、库等。

代码组织结构如下:

ffmpeg_audio_tutorial
├── 0_hello_ffmpeg.cpp
├── CMakeLists.txt
└── cmake
    └── FindFFMPEG.cmake

其中

  • CMakeLists.txt 根目录 cmake 文件
  • FindFFMPEG.cmake 为 find_package 准备的文件,让我们方便找到 FFMPEG 相关组件。这个文件我直接从其他地方 copy 的。原地址在这里
  • 0_hello_ffmpeg.cpp 源码文件

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(ffmepg_audio_tutorial)

list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

find_package(FFMPEG REQUIRED)
if(NOT FFMPEG_FOUND)
    message(ERROR "Cannot find ffmpeg")
else()
    message(STATUS "Found ffmpeg")
    message(STATUS "ffmpeg include dir is ${FFMPEG_INCLUDE_DIRS}")
    message(STATUS "ffmpeg libraries are ${FFMPEG_LIBRARIES}")
endif()


add_executable(hello_ffmpeg 0_hello_ffmpeg.cpp)
target_include_directories(hello_ffmpeg PRIVATE ${FFMPEG_INCLUDE_DIRS})
target_link_libraries(hello_ffmpeg PRIVATE ${FFMPEG_LIBRARIES})

上述的 cmake 中:

  • 首先在 CMAKE_MODULE_PATH 添加搜索路径
  • find_package 去找到 ffmpeg 相关组件和头文件等信息

0_hello_ffmpeg.cpp


#if defined(__cplusplus)
extern "C"
{
#endif
#include <libavcodec/avcodec.h>
#if defined(__cplusplus)
}
#endif

#include <iostream>

using namespace std;

int main()
{
    cout << "avcodec_configuration : " << avcodec_configuration() << endl;
    return 0;
}

上述代码中:

  • 如果用的 C++ 编译,注意用 extern "C" 将 ffmpeg 头文件包起来
  • avcodec_configuration() 来显示 ffmpeg 构建信息

如果一切顺利,运行上面这个代码,你会得到类似的结果:

avcodec_configuration : --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack

完整的代码已上传至 github,欢迎 star : https://github.com/jiemojiemo/ffmepg_audio_tutorial

总结

我们介绍了 FFMPEG 命令行和 FFMPEG 的区别,已经如何安装它们。接着,利用 cmake 去构建 hello ffmepg 程序,一切顺利的话,可以得到 FFMPEG 的构建信息。

完整代码已上传至 github,欢迎 star:
https://github.com/jiemojiemo/ffmepg_audio_tutorial

转载请注明出处:https://blog.csdn.net/weiwei9363/article/details/108547901

参考资料

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg是一个开源的跨平台音视频处理工具,它可以用于录制、转换和流媒体处理等多种音视频操作。编译安装FFmpeg并支持硬编解码需要以下步骤: 1. 下载源代码:首先,你需要从FFmpeg官方网站(https://ffmpeg.org/)下载最新的源代码压缩包。 2. 安装依赖:在编译之前,需要确保系统中已经安装了一些必要依赖库,如编工具(gcc、make等)、多媒体库(libx264libx265等)和开发包(libx264-dev、libx265-dev等)。你可以使用包管理工具(如apt、yum等)来安装这些依赖。 3. 解压源代码:将下载的源代码压缩解压到一个目录中。 4. 配置编译选:进入解压后的源代码目录,执行以下命令来配置译选项: ``` ./configure --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree ``` 这里的`--enable-gpl`表示启用GPL许可证,`--enable-libx264`和`--enable-libx265`表示启用x264和x265编码库,`--enable-nonfree`表示启用非自由许可证。 5. 编译安装:配置完成后,执行以下命令进行编译安装: ``` make sudo make install ``` 这会将编译后的二进制文件安装到系统中。 6. 验证安装:执行以下命令来验证FFmpeg是否成功安装: ``` ffmpeg -version ``` 如果成功安装,将显示FFmpeg的版本信息。 至此,你已经成功编译安装了支持硬编解码FFmpeg。你可以使用FFmpeg命令行工具来进行各种音视频处理操作,如转码、剪辑、合并等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值