ffmpeg从入门到精通 pdf_刻意练习FFmpeg系列:共同学习,领学计划的第一周报告

v2-23d2cc09bc2fe904b33f434c4d6e1309_1440w.jpg?source=172ae18b

前言

目前已经开始了第一周的学习。首先感谢进群的朋友,谢谢你们的支持!

说实在,边工作边开展有目的的学习是有点挑战的,毕竟工作时间已经占据了大部分的时间。

第一周的内容回顾

第一周的内容并不多,本来打算只介绍PNM系列图像的,不过还是跑题多介绍了新的内容。

  1. PNM系列图像格式理解
  2. BMP图像格式理解
  3. 基础的压缩编码算法RLE和LZ77

PNM系列图像格式资料

首先是官方一手资料,netpbm的官网。

官网里给出了四个主要的图像格式规范

  1. pbm格式
  2. pgm格式
  3. ppm格式
  4. pam格式

当然,也要补充我自己编写的一个介绍文章

渔哥:刻意练习FFmpeg系列:从最简单PNM系列格式之PBM格式,并手写解析器​zhuanlan.zhihu.com
v2-23d2cc09bc2fe904b33f434c4d6e1309_180x120.jpg

另外,推荐另外一篇博文,也写得不错。

  • 图像格式PPM/PGM/PBM剖析及代码实现 -- 视频和图像编程基础之一

维基百科

  • Netpbm
  • PBM图像格式

FFmpeg 的实现

  • ffmpeg/libavformat/img2dec.c
  • ffmpeg/libavcodec/pnm_parser.c
  • ffmpeg/libavcodec/pnmenc.c
  • ffmpeg/libavcodec/pnmdec.c
  • ffmpeg/libavcodec/pnm.c

另外的版本实现 Go版本的实现 C语言版本

BMP图像格式资料

BMP是Windows的图像处理很重要的格式,所以规范主要看微软的稳定。

  • 官方规范PDF

还有Word版本的规范,可以到下面的官方页面下载。

  • Word版本的规范

两篇不错的博文

  • BMP文件格式详解
  • BMP格式详解

英文资料

  • THE BMP FILE FORMAT
  • 维基百科 BMP文件格式

基础的压缩编码算法RLE和LZ77

RLE算法「Run Length Encoding」

BMP里还用到了非常基础的压缩编码算法RLE「Run Length Encoding」,其实就是将重复的符号变为计数表示,例如下图,第一行5重复出现了15次,表示为[15, 5],不用表示为[5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5],可以节省空间。

v2-cef0117f9bb12ca66a322906ddc5d629_b.jpg

LZ77算法

LZ算法家族是非常庞大的算法家族。初始的想法也很简单。就是用分两个区域,用前面区域的子串的偏移量和长度来表示后面区域的相同子串。

v2-462d015b5e1f884d206ba6c850ae5b06_b.jpg

v2-2172c727dcb999ce96828d28d6d94d99_b.jpg

然后我找到了一个非常好的书籍,也推荐给大家。

推荐微信阅读的图书

数据压缩入门-柯尔特·麦克安利斯 亚历克斯·海奇-微信读书​weread.qq.com
v2-47fc6d84b7342a68fe12546414b3621a_120x160.jpg

几篇博文

  • 压缩算法之字典编码(上)
  • LZ77压缩算法解析
  • How data compression works: exploring LZ77

下周的计划

按照之前的规划,下周主要是GIF格式了,这个格式内容更丰富一些,是很好的入门音视频领域且非常流行的格式,我们会认真阅读规范动手写格式解析器

下面就是GIF规范了,可以提前阅读。

https://www.w3.org/Graphics/GIF/spec-gif89a.txt​www.w3.org
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。 解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。 解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。 视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。 接下来的几节我们将会列出主要的流媒体协议,封装格式,以及视音频编码标准。更详细的比较可以参考: 视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比 有关本文中涉及到的协议数据、封装格式数据、视频编码数据、音频编码数据、视频像素数据、音频采样数据的分析可以参考下面系列文章:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值