ffmpeg结构体分析之AVFrame
概述
基于ffmpeg 4.3.2
AVFrame结构体一般用于存储原始数据(即非压缩数据,例如对视频来说是YUV,RGB,对音频来说是PCM),此外还包含了一些相关的信息。比如说,解码的时候存储了宏块类型表,QP表,运动矢量表等数据。编码的时候也存储了相关的数据。
参考1-雷神 参考2
定义
typedef struct AVFrame {
#define AV_NUM_DATA_POINTERS 8
/**
* 指针指向图像/通道平面。
* 这可能与第一个被分配的字节不同
*
* 一些解码器访问0,0以外的区域--宽度、高度,请
* 见avcodec_align_dimensions2()。一些滤波器和sw...
ffmpeg之音频重采样
ffmpeg之音频重采样
头文件
#include <libswresample/swresample.h>
定义
#define SWR_FLAG_RESAMPLE 1 ///< Force resampling even if equal sample rate
//TODO use int resample ?
//long term TODO can we enable this dynamically?
/** Dithering algorithms */
enum SwrDitherType {
SWR_DITHER_NONE = 0,
SWR_DITHER_RECTANGULAR,
SWR_DITHER_TRIANG...
ffmpeg之音频编解码器
实验背景
基于ffmpeg-4.3.2
相关问题
ffmpeg自带的音频aac编码器支持信息:
采样率 7350~96000
样本格式 fltp(float planar)
可以看到格式只支持float planar格式,所以一般使用libfdk_aac库,需要自己集成.
fdk_aac编码器支持信息:
采样率 8000~96000
样本格式 s16le(16-bit integer)
相关头文件
#include <libavcodec/avcodec.h> // "codec.h"
相关定义
/**
* Decoder can use draw_horiz_band callback.
*/
#define AV_COD...
ffmpeg之音频格式
样本格式
基于ffmpeg-4.3.2
相关头文件
#include <libavutil/samplefmt.h>
相关定义
音频样本格式:
enum AVSampleFormat {
AV_SAMPLE_FMT_NONE = -1,
AV_SAMPLE_FMT_U8, ///< unsigned 8 bits
AV_SAMPLE_FMT_S16, ///< signed 16 bits
AV_SAMPLE_FMT_S32, ///< signed 32 bits
AV_SAMPLE_FMT_FLT, ///< float...
cmake之编译库
简介
下面一个基本库的编译安装为例
目录结构
编译前
math
├── CMakeLists.txt
└── src
├── MathFunctions.cc
└── MathFunctions.h
编译安装后
math
├── CMakeLists.txt
├── dist
│ ├── include
│ │ └── MathFunctions.h
│ └── lib
│ ├── libMathFunctions.a
│ ├── libMathFunctions.dll
│ └── libMathFunctions.dll.a
└── src
├── MathFunc...
cmake之常用命令
概述
更多详细示例请点击cmake-demo查看
步骤
windows下需要手动设置编译器
mkdir build
cd build
cmake ../
make
make install
基本项目
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo1)
# 指定生成目标
add_executable(${PROJECT_NAME} main.cc)
查找目录下的所有源文件
# 查找目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 多目录
aux_sou...
cmake之交叉编译
交叉编译
使用方法
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake ..
编写cmake工具链文件
目前在Linux上交叉编译成功,在Windows上使用MinGW交叉编译失败
# 设置系统名
set(CMAKE_SYSTEM_NAME Linux)
# 设置硬件平台(不是必需的)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(MY_TOOL_DIR /opt/toolchain-arm_cortex-a7+neon_gcc-5.3.0_glibc-2.22_eabi)
set(MY_CROSS arm-openwrt-linux-)
set(CMAKE_C_COMPILER ${MY_T...
共计 77 篇文章,10 页。