目录
一:MediaInfo软件
通过使用 MediaInfo软件
可以查看视频文件的详细信息
软件的使用也非常简单
点击打开文件,再点击查看文本,即可查看详细视频文件数据信息
二:视频文件格式
视频文件有不同的格式
这些电影文件有不同的格式,用不同的后缀表示:avi,rmvb,mp4,flv,mkv等等(当然也使用不同的图标)
在这里需要注意的是,这些格式代表的是封装格式
封装格式:就是把视频数据和音频数据打包成一个文件的规范
封装格式的作用:视频码流和音频码流按照一定的格式存储在一个文件中
三:视频编码数据
视频编码的作用:
将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量
H.264格式简介:
四:主要封装格式
主要的封装格式
五:视频像素数据
视频像素数据作用:
保存了屏幕上每个像素点的像素值
格式:
常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,YUV444P等
压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P
特点 视频像素数据体积很大
一般情况下1小时高清视频的RGB24格式的数据体积为:
3600*25*1920*1080*3=559.9GByte(这里假定帧率为25Hz,取样精度8bit)
六:RGB格式
Red Green Blue三种颜色可以混合成世界上所有的颜色
彩色图像中的每个点,由R G B三个分量组成
以RGB24为例 图像像素数据的存储方式如下图所示
也可以看出,RGB24依次存储了每个像素点的R G B信息
BMP中存储的就是RGB格式的数据
七:YUV格式
1. YUV格式简介
YUV格式中,Y只包含亮度信息,而UV只包含色度信息
相关实验表明,人眼对亮度敏感而对色度不敏感
因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率
从数据占比来说,UV信息的数据量是Y的1/2
2. YUV格式播放
八:视频播放器原理
FFmpeg流媒体开发技术:
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
使用广泛,使用FFmpeg作为内核的视频播放器Mplayer,射手播放器,暴风影音,KMPlayer,QQ影音...
使用FFmpeg作为内核的转码器:格式工厂,狸窝视频转换器,暴风转码...
FFmpeg流媒体开发技术的应用:
暴风影音,腾讯视频,爱奇艺等他们底层都用到FFMPEG行车记录仪智能安防(监控)RTSP流媒体服务器格式工厂抖音,头条,快手等app又如 QQ中使用如下图所示
九:FFmpeg 相关操作命令
如下命令
ffmpeg -i input.avi -b:v 640k output.ts
该命令将当前文件夹下的input.avi文件转换为output.ts文件,并将output.ts文件视频的码率设置为640kbps
命令格式:ffmpeg -i {输入文件路径} -b:v {输出视频码率} {输出文件路径}
十: FFmpeg转码 相关操作命令
输出 YUV420P 原始数据
ffmpeg -i test.mp4 test.yuv
将avi文件转为mp4
ffmpeg -i input.avi output.mp4
从视频前10s中提取图像,1s提取一帧
ffmpeg -i test.mp4 -t 10 -r 1 -f image2 pic-%03d.jpeg
十一:FFmpeg 其他操作指令
ffmpeg -vcodec mpeg4 -vd x11:0,0 -s 1024x768 ~/test.avi
-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,
-s 1024×768 指录制视频的大小为 1024×768
录制的视频文件为 test.avi,将保存到用户主目录中
重新调整视频尺寸大小:
ffmpeg -vcodec mpeg4 -i ~/test.avi -s 800×600 ~/test-800-600.avi
参数说明:
十二:ffplay 操作指令
命令将播放当前文件夹下的input.avi文件
ffplay input.avi
命令格式: ffplay {输入文件路径}
快捷键: