ffmpeg 库

avcodec: 编解码 avformat: 封装格式处理 avfilter: 滤镜特效处理 avdevice: 各种设备的输入输出 avutil: 工具库 postProc: 后加工 swresample: 音频采样数据格式转换 swscale: 视频像素数据格式转换

ffmpeg 命令参数

参数 说明
-h 帮助
-i 设定输入流
-f 设定输出格式
-ss 开始时间
-vcodec 指定视频编解码器
-vcodec 指定视频编解码器.
-acodec 指定音频编解码器.
-vn 表示不处理视频部分,即忽略视频流.
-copy 表示不重新编码音频,而是直接复制原始音视频流
vn 表示不处理视频部分,即忽略视频流.
-vn 表示不处理视频部分,即忽略视频流.

ffmpeg.exe 命令

# 视频格式转换
# 将 avi 格式的视频转化为 mp4 格式
ffmpeg -i input.avi output.mp4

# 提取音频
# 视频格式提取音频
ffmpeg -i input.mp4 -acodec aac -vn output.aac
# 视频格式提取音频
ffmpeg -i input.mp4 -acodec copy -vn ouput.aac

# 视频剪切
# 从时间00:00:15开始,截取5秒钟的视频.
ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4

# 调整视频分辨率
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4

ffplay.exe 命令

ubuntu配置音视频开发环境

  1. 创建 ffmpeg 安装的目标路径
mkdir -p /usr/local/ffmpeg/lib
  1. 下载 ffmpeg 压缩包(ffmpeg_7.1.1.orig.tar.xz),解压到根目录下的 ffmpeg 目录.
tar -xvf ffmpeg_7.1.1.orig.tar.xz /ffmpeg
  1. 配置 ffmpeg
./configure --prefix="/usr/local/ffmpeg/" \
--enable-gpl \
--enable-nonfree \
--enable-ffplay \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libx264 \
--enable-libx265 \
--enable-filter=delogo \
--enable-debug \
--disable-optimizations \
--enable-libspeex \
--enable-shared \
--enable-pthreads \
--enable-version3 \
--enable-hardcoded-tables
  1. 解决编译 ffmpeg 遇到的问题
    1. yasm/nasm not found or too old. Use –disable-yasm
sudo apt-get update
sudo apt-get yasm/
  1. ERROR: libmp3lame >= 3.98.3 not found
sudo apt-get install libmp3lame-dev
# 配置
./configure --prefix="/usr/local/ffmpeg/" \
--enable-gpl \
--enable-nonfree \
--enable-ffplay \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libx264 \
--enable-libx265 \
--enable-filter=delogo \
--enable-debug \
--disable-optimizations \
--enable-libspeex \
--enable-shared \
--enable-pthreads \
--enable-version3 \
--enable-hardcoded-tables --extra-ldflags=-L/usr/local/ffmpeg/lib
  1. ERROR: speex not found using pkg-config
# 下载 speex
wget http://downloads.xiph.org/releases/speex/speex-1.2.1.tar.gz
  1. ERROR: x264 not found using pkg-config
# 下载 x264 压缩包
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.gz

# 配置 x264
./configure --prefix=/usr/local/ffmpeg/ --enable-shared --disable-asm

# 编译
make

# 编译
make install
  1. ERROR: x265 not found using pkg-config
# 下载 x265 压缩包
wget http://ftp.videolan.org/pub/videolan/x265/x265_4.1.tar.gz

# 解压

# 配置 x265
```shell
cd x265_4.1/build/linux/
./make-Makefiles.bash

5.1. cmake: command not found

sudo apt-get install cmake

5.2. ccmake: command not found

sudo apt-get update
sudo apt-get install cmake-curses-gui
  1. 配置 SDL
# 下载 SDL

wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.32.10.tar.gz

tar -xvf release-2.32.10.tar.gz

apt install libxext-dev

./configure --prefix=/usr/local/ffmpeg/ --enable-shared

make

make install

# 编译 ffmpeg

修改系统环境变量

编译

# 编辑配置文件
sudo vim /etc/profile

# 在文件末尾添加以下内容 
export PATH="/usr/local/ffmpeg/bin:$PATH"

# 使配置生效
source /etc/profile

# 编辑配置文件
sudo vim /etc/ld.so.conf

# 在文件末尾添加以下内容
/usr/local/ffmpeg/lib

# 
sudo ldconfig

windows配置音视频开发环境

  1. 官网(https://ffmpeg.org/download.html)下载 ffmpeg, 选择 Windows下载中的 Windows builds by BtbN.
  2. 点击后进入到对应的 gtihub 仓库, 选择 ffmpeg-master-latest-win64-gpl-shared.zip 下载.

Clion 中配置

创建项目
CMakeLists.txt
main.cpp
添加动态库
  1. 创建 FFmpegTest 文件夹
  2. FFmpegTest 文件夹下包含 build文件夹, lib文件夹, CMakeLists.txt文件, main.cpp文件. build文件夹: Cmake构建的位置 lib文件夹:用于存放FFmpeg中的 bin文件夹、include文件夹、lib文件夹.
  3. FFmpegTest 文件夹下的 lib 目录下创建一个 FFmpeg 文件夹, 拷贝解压出来的文件夹中的bin目录 、include目录、 lib目录.
cmake_minimum_required(VERSION 3.16)

project(FFmpegTest VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)

# 导入FFmpeg
include_directories("./lib/FFmpeg/include")
link_directories("./lib/FFmpeg/lib")
#define STDC_CONSTANT_MACROS
#include <cstdio>
#include <iostream>

using namespace std;

extern "C" {
#include "lib/FFmpeg/include/libavcodec/avcodec.h"
}

int main() {
  printf("%s\n", avcodec_configuration());
	std::cout << "当前FFmpeg版本: " << av_version_info() << std::endl;
	return 0;
}
  1. 将 bin目录下的 dll 文件拷贝到可执行文件所在目录.

视频链接

  1. 音视频学习
  2. 在linux上安装ffmpeg的步骤和一些报错的解决
  3. FFmpeg 安装教程
  4. FFmpeg+CMake+VS2022下载安装与配置