前言 我们从flv和mp4等文件解封装读取的AVPacket并没有SPS、PPS数据,而是保存在 AVFormatContext -> streams -> codecpar -> extradata里面,下面我们打开一个flv文件看一下 分析一下这块数据,起始位置:0980 大小:39 结束位置: ...
分类:
其他好文 时间:
2020-10-20 16:22:35
阅读次数:
29
int img_savePicture(AVFrame *pFrame, char *out_filename) {//编码保存图片 int width = pFrame->width; int height = pFrame->height; AVCodecContext *pCodeCtx = ...
分类:
其他好文 时间:
2020-07-09 19:18:24
阅读次数:
90
在ffmpeg中,解码前的数据结构体为AVPacket(参考:3.AVPacket使用),而解码后的数据为AVFrame(视频的YUV, RGB, 音频的PCM) 1.AVFrame介绍 AVFrame必须使用av_frame_alloc()来分配。注意,这只是分配AVFrame本身,缓冲区的数据必 ...
分类:
其他好文 时间:
2020-07-06 20:10:46
阅读次数:
63
avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt): 1)将原始数据包作为解码器的输入 2)该函数在内部会复制AVCodecContext的相关字段(具体有哪些字段,起什么用,俺也不知道。。。),这些字段会影响每个包的解 ...
分类:
其他好文 时间:
2020-01-28 09:26:23
阅读次数:
416
1.av_read_frame() 该函数用于读取具体的音/视频帧数据 参数说明: AVFormatContext *s // 文件格式上下文 AVPacket *pkt // 这个值不能传NULL,必须是一个空间, // 返回值:return 0 is OK, <0 on error or end ...
分类:
其他好文 时间:
2019-04-11 11:53:45
阅读次数:
112
AVPacket是FFmpeg中很重要的一个数据结构,它保存了解封装之后,解码之前的数据(注意:仍然是压缩后的数据)和关于这些数据的一些附加信息,如显示时间戳(pts)、解码时间戳(dts)、数据时长,所在媒体流的索引等。对于视频来说,AVPacket通常包含一个压缩的Frame,而音频(Audio ...
分类:
其他好文 时间:
2019-04-04 14:26:07
阅读次数:
201
解码及显示 [TOC] 解码 1. 循环读取视频帧 2. 解码 两个重要的FFmpeg接口: avcodec_send_packet,发送一个包给解码器; avcodec_receive_frame,从解码器取回解码后的数据。 资源清理 ...
分类:
其他好文 时间:
2019-01-28 21:11:20
阅读次数:
348
ffmpeg 是现在开源的全能编解码器,基本上全格式都支持,纯 c 语言作成,相对比其它的 VLC ,GStreamer glib2 写的,开发更简单些,文档很棒,就是 examples 比较少。 常用的功能有: AVFrame 数据帧 AVCodecContext 编解码器AVPacket 数据帧 ...
分类:
其他好文 时间:
2018-11-10 21:52:45
阅读次数:
219
说说项目中遇到的两点失误: 1. AVFrame结构,av_frame_alloc申请内存,av_frame_free释放内存。容易混淆的是av_frame_unref,它的作用是释放音视频数据资源,而av_frame_free是释放所有资源,包括音视频数据资源和结构体本身的内存。可以从源码中看到, ...
分类:
其他好文 时间:
2018-06-17 21:24:33
阅读次数:
745
主要参考ffmpeg 自带的decode_video.c 和 https://blog.csdn.net/leixiaohua1020/article/details/38868499 ...
分类:
其他好文 时间:
2018-04-07 01:14:42
阅读次数:
247