代码改变世界

随笔分类 -  FFmpeg

FFMpeg笔记(十二)MP4 box解析

2023-05-27 12:38 by jiayayao, 1483 阅读, 收藏, 编辑
摘要: mp4是MPEG-4 Part 14的实现,包含3大box。 一、ftyp file type box,包含视频文件使用的mp4标准,也作为probe mp4的标志; 二、moov 包含媒体的元数据信息,包含一个mvhd(也就是header box)和若干个trak(track)。trak包含一条音 阅读全文

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笔记(四)FFMpeg对视频或图片添加水印

2018-04-05 22:58 by jiayayao, 3763 阅读, 收藏, 编辑
摘要: todo 阅读全文

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 阅读全文
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏