一.AVPacket /** * AVPacket 作为解码器的输入 或 编码器的输出. * 当作为解码器的输入时,它由demuxer生成,然后传递给解码器 * 当作为编码器的输出时,由编码器生成,然后传递给muxer * 在视频中,AVPacket 只能包含不大于1帧的内容,而视频的1帧可能要包含在多个AVPacket中,AVPacket < AVFrame * * * AVPacket 是ffmpeg中少数的几个公共ABI,它只能被libavcodec和libformat在栈上分配 * * …
一.AVPacket /** * AVPacket 作为解码器的输入 或 编码器的输出. * 当作为解码器的输入时,它由demuxer生成,然后传递给解码器 * 当作为编码器的输出时,由编码器生成,然后传递给muxer * 在视频中,AVPacket 只能包含不大于1帧的内容,而视频的1帧可能要包含在多个AVPacket中,AVPacket < AVFrame * * * AVPacket 是ffmpeg中少数的几个公共ABI,它只能被libavcodec和libformat在栈上分配 * * …
来源:http://blog.csdn.net/chance_yin/article/details/16817957 一.AVPacket /** * AVPacket 作为解码器的输入 或 编码器的输出. * 当作为解码器的输入时,它由demuxer生成,然后传递给解码器 * 当作为编码器的输出时,由编码器生成,然后传递给muxer * 在视频中,AVPacket 只能包含不大于1帧的内容,而视频的1帧可能要包含在多个AVPacket中,AVPacket < AVFrame * * * AV…
近期由于工作任务,需要开发一个跨平台视频聊天系统,其中就用到了ffmpeg进行采集与编码,网上找了一大堆的资料,虽然都有一些有用的东西,但实在太碎片化了,这几天一直在整理和实验这些资料,边整理,边做一个总结,今天先总结一下采集的步骤,我是在linux平台下进行试验的,操作系统是ubuntu13.04 64bit,ffmpeg的版本是2.0.1,采用C语言开发,我的目标是从摄像头采集到1帧视频,然后用容器输出这帧的图像并把图像保存为bmp文件.整个采集的步骤是:连接视频源->获取视频流->dem…
最近一两年内FFmpeg项目发展的速度很快,本来是一件好事.但是随之而来的问题就是其API(接口函数)一直在发生变动.这么一来基于旧一点版本的FFmpeg的程序的代码在最新的类库上可能就跑不通了. 例如一年前的程序中,获取媒体信息使用的函数是av_find_stream_info().但是最近的版本中,av_find_stream_info()函数已经无法使用了,取而代之的是avformat_find_stream_info().再比如,早一些的程序中,打开解码器可以使用avcodec_open…
目录 前言 1. 简单动态字符串 1.1 SDS的定义 1.2 空间预分配与惰性空间释放 1.3 SDS的API 2. 链表 2.1 链表与节点的定义 2.2 链表的API 3. 字典 3.1 哈希表与哈希节点 3.2 字典 3.3 哈希算法 3.4 解决键冲突 3.5 rehash 3.6 渐进式rehash 3.7 字典的API 最后 前言 参考资料:<Redis设计与实现 第二版>: 本篇笔记按照书里的脉络,将知识点分为四个部分.其中第一部分数据结构与对象分为上中下篇,上篇包括:SDS.…
目录 前言 1. Redis对象概述 1.1 对象的定义 2. 字符串对象 3. 列表对象 3.1 quicklist 快速链表 4. 哈希对象 5. 集合对象 6. 有序集合对象 7. Redis对象的特点 7.1 类型检查与命令多态 7.2 内存回收 7.3 对象共享 7.4 对象的空转时长 最后 前言 参考资料:<Redis设计与实现 第二版>: 本篇笔记按照书里的脉络,将知识点分为四个部分.其中第一部分数据结构与对象分为上中下篇,上篇包括:SDS.链表和字典:中篇包括跳跃表.整数集合和…
目录 前言 1. 跳跃表 1.1 跳跃表与其节点的定义 1.2 跳跃表的API 2. 整数集合 2.1 整数集合的实现 2.2 整数集合的类型升级 2.3 整数集合的API 3. 压缩列表 3.1 压缩列表的结构 3.2 压缩列表节点的定义 3.3 连锁更新 3.4 压缩列表的API 最后 前言 参考资料:<Redis设计与实现 第二版>: 本篇笔记按照书里的脉络,将知识点分为四个部分.其中第一部分数据结构与对象分为上中下篇,上篇包括:SDS.链表和字典:中篇包括跳跃表.整数集合和压缩列表:下…
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name(key)和liushijie(key)就存储在SDS中. SDS数据结构如下: struct sdshdr { // 所保存字符串的长度 int len; // 未使用字节长度 int free; // 字节数组,保存字符串 char buf[]; }; SDS遵循C字符串以'\0'空字符串结尾的惯例,所…
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecContext FFMPEG结构体分析:AVIOContext FFMPEG结构体分析:AVCodec FFMPEG结构体分析:AVStream FFMPEG结构体分析:AVPacket FFMPEG有几个最重要的结构体,包含了解协议,解封装,解码操作,此前已经进行过分析: FFMPEG中最关键的结构体之间的…