摘要:
mp4是MPEG-4 Part 14的实现,包含3大box。 一、ftyp file type box,包含视频文件使用的mp4标准,也作为probe mp4的标志; 二、moov 包含媒体的元数据信息,包含一个mvhd(也就是header box)和若干个trak(track)。trak包含一条音 阅读全文
随笔分类 - FFmpeg
FFMpeg笔记(十一)常用FFmpeg命令行
2022-02-14 20:29 by jiayayao, 262 阅读, 收藏, 编辑
摘要:
获取yuv文件(100帧) ffmpeg -i /Users/jiayayao/Documents/Samples/video/3_1280_720_30fps_h264.mp4 -vframes 100 output.yuv 获取全部yuv文件 ffmpeg -i /Users/jiayayao/ 阅读全文
FFMpeg笔记(十)几个timebase:fps、tbr、tbn、tbc
2022-01-30 09:52 by jiayayao, 2106 阅读, 收藏, 编辑
摘要:
fps表示平均帧率,总帧数除以总时长(以s为单位)。 tbr (rate)表示帧率,该参数倾向于一个基准,往往tbr跟fps相同。 tbn (AVStream->timebase)表示视频流 timebase(时间基准),比如ts流的timebase 为90000,flv格式视频流timebase为 阅读全文
FFMpeg笔记(九) 注册私有协议
2021-08-30 21:02 by jiayayao, 413 阅读, 收藏, 编辑
摘要:
FFmpeg 3.x版本之前可以通过ffurl_register_protocol动态注册自行实现的URLProtocol协议,在3.x版本之后可以通过注册私有AVIOContext的方式实现类似的功能; typedef struct CustomStream { uint64_t pos_cur; 阅读全文
Mac平台交叉编译Android/iOS FFmpeg库
2021-05-30 22:36 by jiayayao, 1020 阅读, 收藏, 编辑
摘要:
一、前提 FFmpeg版本必须与系统版本(iOS)和ndk版本(Android)相匹配,否则就会有各种奇葩的编译问题。有些是ffmpeg代码与iOS系统库冲突,有些是ffmpeg代码与ndkd版本冲突,解决这些问题很浪费时间,且毫无意义。 二、iOS 1. 版本 FFmpeg:4.4 macOS:1 阅读全文
FFMpeg笔记(八) 读取RTP数据时的PTS计算[转载]
2020-04-04 21:29 by jiayayao, 3472 阅读, 收藏, 编辑
摘要:
结构体struct RTPDemuxContext中有若干时间戳相关的成员,含义如下 timestamp:上一个接收到的RTP时间戳 base_timestamp:第一个接收到的RTP时间戳 cur_timestamp:未知 unwrapped_timestamp:假如rtp时间没有32位溢出的话, 阅读全文
FFMpeg笔记(七) 代码结构分析,以HLS为例
2018-07-28 13:19 by jiayayao, 2311 阅读, 收藏, 编辑
摘要:
HLS流在播放时是先解协议(hls.c)后解封装(mpegts.c),libavformat下的hls.c和mpegts.c实际上是同一个级别的,同属于demuxer。 一、解HLS协议 1. FFmpeg代码分析 首先看一下ff_hls_demuxer的定义: AVInputFormat ff_h 阅读全文
FFMpeg笔记(六) 滤镜命名规则及使用libavfilter对视频尺寸进行裁切
2018-04-21 19:53 by jiayayao, 2840 阅读, 收藏, 编辑
摘要:
在ffmpeg框架中,滤镜(filter)功能通过libavfilter库实现。 一个filter可以同时有多个输入和输出。以图为例: 图中的一系列操作共使用了四个filter,分别是 splite:将输入的流进行分裂复制,分两路输出。 crop:根据给定的参数,对视频进行裁剪 vflip:根据给定 阅读全文
FFMpeg笔记(三) 音频处理基本概念及音频重采样
2018-04-05 22:46 by jiayayao, 17654 阅读, 收藏, 编辑
摘要:
Android放音的采样率固定为44.1KHz,录音的采样率固定为8KHz,因此底层的音频设备驱动需要设置好这两个固定的采样率。如果上层传过来的采样率不符的话,需要进行resample重采样处理。 几个名词: 1. 采样率 采样设备每秒抽取样本的次数 2. 音频格式及量化精度(位宽) 每种音频格式有 阅读全文
[转载]AVFormatContext结构体详细分析
2017-09-16 19:40 by jiayayao, 1911 阅读, 收藏, 编辑
摘要:
AVFormatContext描述一个媒体文件或媒体流的构成和基本信息。 这是FFMpeg中最为基本的一个结构,是其他所有结构的根,是一个多媒体文件或流的根本抽象。其中nb_streams和streams所表示的AVStream结构指针数组包含了所有内嵌媒体流的描述;iformat和oformat指 阅读全文
FFMpeg笔记(二) 使用FFmpeg对视频进行编解码的一般流程
2017-03-05 18:18 by jiayayao, 3391 阅读, 收藏, 编辑
摘要:
1. 编码: 1.对编码资源的初始化 2.编码 2. 解码: 1.对解码资源的初始化 2.解码 阅读全文
FFmpeg中几个结构体的意义
2017-03-05 18:02 by jiayayao, 535 阅读, 收藏, 编辑
摘要:
AVCodec是存储编解码器信息的结构体,特指一个特定的解码器,比如H264编码器的名字,ID,支持的视频格式,支持的采样率等; AVCodecContext是一个描述编解码器采用的具体参数,比如采用的是那种编码器(H264或MPEG等),采用的采样率,声道数等; AVPacket是存储编码后的数据 阅读全文
FFMpeg笔记(一) 使用FFmpeg将任意格式图片转换成任意格式图片
2017-03-05 14:31 by jiayayao, 7103 阅读, 收藏, 编辑
摘要:
注意转换的宽高不能搞错,否则非但不能转换正确,还有可能crash。附调试用的保存图片函数DumpImage,可以使用该函数查看原始数据是否正确或者格式转换是否成功: char *pBmpFile = "DumpTest.bmp"; DumpBmp(pBmpFile, (uint8_t*)&buffe 阅读全文