主页

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...

阅读更多