十进制,二进制,十六进制,八进制
4个二进制为十六进制,3个二机制为八进制,
十进制转二进制可用1,2,4,8,16,32去一个一个的去凑
首先是文件头标识,标识它是png文件:(00-07,00000000){89 50 4E 47 0D 0A 1A 0A}
接下来就是IHDR数据块:
IHDR头块长度为13: (08-0B,00000000){00 00 00 0D}------【(0D)16=(13)10】
IHDR 标识 : (0C-0F,00000000){49 48 44 52}
下面就是IHDR实际内容了
图像的宽为8像素 (00-03,00000010){00 00 00 08}
图像的高为8像素 (04-07,00000010){00 00 00 08}
后面的
{08}表示色深,这里是2^8=256,即这是一个256色的图像
{06}颜色类型,查表可知这是带α通道数据的真彩色图像
{00}PNG Spec规定此处总为0(非0值为将来使用更好的压缩方法预留),表示使压缩方法(LZ77派生算法)
{00}非隔行扫描
{C4 0F BE 8B}CRC校验
其他块的分析方法类似,比如接下来的就是tEXt块了,很简单,不做分析了。(当然这里还有重要的IDAT块,这是图像的实际内容)
具体的PNG文件格式学习请参考:PNG文件格式详解
这块就是对上面 进制编辑器的运用 作为一个小的实战练习,除了植物大战僵尸,大家还可以找一些类似的游戏练习一下,我之前做过就不再这里展示了。
二 进 制 :1101 0101 0001
十六进制: D 5 1
将二进制数分为4个一组,最前面少位的补0,转化为十六进制数再组合起来就是结果。
(101011.101011)2=1*2^5+0*2^4+1*2^3+0*2^2+1*2^1+1*2^0+1*2^-1+0*2^-2+1*2^-3+0*2^-4+1*2^-5+1*2^-6=(43.671875)10
PCM编码,WAV格式,MP3编码,OGG编码,MPC编码,mp3PRO编码,WMA格式,RA格式,APE格式
现在常见的,H264 , VP8, AVS, RMVB,WMV,QuickTime(mov)
现在 未来可能流行的H265, VP9, AV1(最可能成为主流),
现在不太常见或者小众的:
H263,H261, MPEG2, MPEG4, RMHD(RMVB升级版本),etc
89 50 4e 47(见上面PNG格式分析)
十六进制: 4 e 2 d (0x4e2d)
二 进 制:0100 1110 0010 1101
utf-8的三字节 1110xxxx 10xxxxxx 10xxxxxx
从地位到高位一一对应,位数不够就用0补位
(utf-8 )二 进 制:11100100 10111000 10101101
(utf-8)十六进制: E 4 B 8 A D
实时流媒体服务器除了ffmpeg还需要啥
主要有四个东西
1.ffmpeg 2.ffserver 3.ffserver.conf 4.feed1.ffm
1. ffmpeg,负责媒体文件的transcode工作,把你服务器上的源媒体文件转换成要发送出去的流媒体文件。
2. ffserver,负责响应客户端的流媒体请求,把流媒体数据发送给客户端。
3.ffserver.conf,ffserver启动时的配置文件,在这个文件中主要是对网络协议,缓存文件feed1.ffm(见下述)和要发送的流媒体文件的格式参数做具体的设定。
4.feed1.ffm,可以看成是一个流媒体数据的缓存文件,ffmpeg把转码好的数据发送给ffserver,如果没有客户端连接请求,ffserver把数据缓存到该文件中。