一、ffmpeg开发的基本知识了解
第一点:一个视频播放流程
通常看到视频格式:mp4、mov、flv、wmv等等…
称之为:封装格式
第二点:视频播放器
两种模式播放器
第一种:可视化界面播放器(直接用户直观操作->简单易懂)
e.g:腾讯视频、爱奇艺视频、QQ影音、暴风影音、快播、优酷等等…
第二种:非可视化界面播放器->命令操作播放器->用户看不懂,使用起来非常麻烦
e.g:FFmpeg->ffplay(命令)播放器(内置播放器)
vlc播放器、mplayer播放器
第三点:播放器信息查看工具
整个视频信息:MediaInfo工具->帮助我们查看视频完整信息
二进制查看信息:直接查看视频二进制数据(0101010)->UItraEdit
视频单项信息
封装格式信息工具->Elecard Format Analyzer
视频编码信息工具->Elecard Stream Eye
视频像素信息工具->YUVPlayer
音频采样数据工具->Adobe Audition
第四点:音视频->封装格式
1、封装格式:mp4、mov、flv、wmv等等…
2、封装格式作用
视频流+音频流按照格式进行存储在一个文件中
3、MPEG2-TS格式
视频压缩数据格式:MPEG2-TS
特定:数据排版,不包含头文件,数据大小固定(188byte)的TS-Packet
4、FLV格式
优势:由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。
文件结构:FLV是一个二进制文件,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)。
FLV文件=FLV头文件+ tag1+tag内容1 + tag2+tag内容2 + ...+... + tagN+tag内容N。
FLV头文件:(9字节)
1-3个字节: 前3个字节是文件格式标识(FLV 0x46 0x4C 0x56).
第4个字节: 第4个字节是版本(0x01)
第5个字节: 第5个字节的前5个bit是保留的必须是0.
6-9个字节: 第6-9的四个字节还是保留的.其数据为 00000009 .
整个文件头的长度,一般是9(3+1+1+4)
第五点:视频编码数据了解一下
1、视频编码作用
将视频像素数据(YUV、RGB)进行压缩成为视频码流,从而降低视频数据量。(减小内存暂用)
2、视频编码格式有哪些
MJPEG
MJPEG(Motion JPEG)压缩技术,主要是基于静态视频压缩发展起来的技术,它的主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩。
MJPEG压缩技术可以获取清晰度很高的视频图像,可以动态调整帧率、分辨率。但由于没有考虑到帧间变化,造成大量冗余信息被重复存储,因此单帧视频的占用空间较大,流行的MJPEG技术监控与视频编码最好的也只能做到3K字节/帧,通常要8~20K!
MPEG-1/2
MPEG-1标准主要针对SIF标准分辨率(NTSC制为352X240;PAL制为352X288)的图像进行压缩. 压缩位率主要目标为1.5Mb/s.较MJPEG技术,MPEG1在实时压缩、每帧数据量、处理速度上有显著的提高。但MPEG1也有较多不利地方:存储容量还是过大、清晰度不够高和网络传输困难。
MPEG-2 在MPEG-1基础上进行了扩充和提升,和MPEG-1向下兼容,主要针对存储媒体、数字电视、高清晰等应用领域,分辨率为:低(352x288),中(720x480),次高(1440x1080),高(1920x1080)。MPEG-2视频相对MPEG-1提升了分辨率,满足了用户高清晰的要求,但由于压缩性能没有多少提高,使得存储容量还是太大,也不适合网络传输。
MPEG-4
MPEG-4视频压缩算法相对于MPEG-1/2在低比特率压缩上有着显著提高,在CIF(352*288)或者更高清晰度(768*576)情况下的视频压缩,无论从清晰度还是从存储量上都比MPEG1具有更大的优势,也更适合网络传输。另外MPEG-4可以方便地动态调整帧率、比特率,以降低存储量。
<