视频播放流程:
视频播放器分类:
- 可视化界面播放器:腾讯视频、爱奇艺、QQ影音等
- 非可视化界面播放器:FFmpeg框架中内置的ffplay播放器
查看视频信息工具:MediaInfo
查看视频二进制信息工具:UltraEdit
查看视频封装信息工具:
- 查看封装格式信息工具:Elecard Format Analyzer
- 查看视频编码信息工具:Elecard Stream Eye
- 查看视频像素信息工具:YUVPlayer
- 查看音频采样信息工具:Adobe Audition
封装格式介绍:
- FLV,是flast video的简称,文件结构由文件头和许多tag组成
FLV头文件 一般比较简单,
FLV头文件:(9字节)1-3: 前3个字节是文件格式标识(FLV 0x46 0x4C 0x56).4-4: 第4个字节是版本(0x01)5-5: 第5个字节的前5个bit是保留的必须是0.6-9: 第6-9的四个字节还是保留的.其数据为 00000009 .整个文件头的长度,一般是9(3+1+1+4)
视频编码介绍:
视频编码作用:将视频像素数据(YUV、RGB)进行压缩,使之变成视频码流数据,从而降低视频数据大小。
- MPEG2-TS,别名TS格式,数据排版,不包含头文件,数据大小固定(188byte)的TS-Packet
-
H264:有非常复杂的压缩算法,比如帧间预测,帧内预测等
视频像素数据:
1.作用:保存了屏幕上面每一个像素点的值
2.格式分类:
- RGB24
- RGB32
- YUV420P
- YUV422P
3.视频像素数据文件大小计算:
例如是RGB24格式,1个小时时长,采样精度8bit:3600(秒) * 25(帧率25Hz) * 1920(屏幕大小) * 1080 (屏幕大小)* 3 (一个颜色8位,3种颜色24位,所以为三个字节)= 500多G
音频编码介绍:
音频编码作用:将音频采样数据(PCM格式)进行压缩,使之变成音频码流数据,从而降低音频数据大小。
- AAC 具体介绍见百度...
- MP3
音频采样数据:
1.作用:保存了音频中的每一个采样点值
2.音频采样数据大小计算:
3.大小计算:
例如一分钟PCM格式歌曲,体积:60(秒)44100(采样率,赫兹,人耳能够听的到的声音) * 2(双声道)2(采样精度16位,2个字节)=11M左右
4.PCM格式
FFmpeg命令行使用:
1.视频转码:
命令格式:./ffmpeg -i{指定输入文件路径| -b:v{输出视频的码率}{输出文件路径}
mov转MP4、wmv转mov等
2.视频播放:
./ffplay 文件名
3.转为gif动图:
./ffmpeg -ss 00:00:03 -t 3 -i Test.mov -s 640x360 -r “15” dongtu.gif
解释:
1、ffmpeg 是你刚才安装的程序;
2、-ss 00:00:03 表示从第 00 分钟 03 秒开始制作GIF,如果你想从第 9 秒开始,则输入 -ss 00:00:09,或者 -ss 9,支持小数点,所以也可以输入-ss 00:00:11.3,或者 -ss 34.6 之类的,如果不加该命令,则从 0 秒开始制作;
3、-t 3 表示把持续3 秒的视频转换为 GIF,你可以把它改为其他数字,例如 1.5,7 等等,时间越长,GIF 体积越大,如果不加该命令,则把整个视频转为 GIF;
4、-i 表示 invert 的意思吧,转换;
5、Test.mov 就是你要转换的视频,名称最好不要有中文,不要留空格,支持多种视频格式;
6、-s 640x360 是 GIF 的分辨率,视频分辨率可能是 1080p,但你制作的 GIF 可以转为720p 等,允许自定义,分辨率越高体积越大,如果不加该命令,则保持分辨率不变;
7、-r “15” 表示帧率,网上下载的视频帧率通常为 24,设为 15 效果挺好了,帧率越高体积越大,如果不加该命令,则保持帧率不变;
8、dongtu.gif:就是你要输出的文件,你也可以把它命名为 hello.gif 等等。