FFmpeg介绍
一个强大的音视频编解码内核工具(OR百度百科)
FFmpeg获取
ffmpeg官网:http://ffmpeg.org/
ffmpeg编译好的包:https://ffmpeg.zeranoe.com/builds/
ffmpeg有三个版本:static,shared,dev。static版本包含了三个静态编译ffmpeg的工具"ffmpeg,ffplay,ffprobe",ffmpeg集成转码等功能,ffplay集成播放显示等功能,ffprobe集成格式查看等功能;shared版本包含了三个静动态编译ffmpeg的工具"ffmpeg,ffplay,ffprobe"和一些动态库(windows->*.dll,linux->*.so);dev版本为开发者版本,里面包含了开发者基于ffmpeg代码级别开发的include头文件lib库文件,但是不含动态库文件,所以ffmpeg的代码级别的开发者需要下dev+shared版本两个才能进行代码级别的开发。
FFmpeg命令行使用
下载static版或者shared版本可以直接使用命令行对ffmpeg等工具进行操作。
.avi转码.mp4
ffmpeg -i dnf.avi dnf.mp4
指定码率
ffmpeg -i dnf.avi -b:v 500k dnf.mp4
从第20秒开始转码
ffmpeg -ss 20 -i dnf.avi -b:v 500k dnf.mp4
从第20秒开始转码,并截取视频长度为30秒
ffmpeg -ss 20 -t 30 -i dnf.avi -b:v 500k dnf.mp4
设置帧率为10帧
ffmpeg -ss 20 -t 30 -i dnf.avi -b:v 500k -r 10 dnf.mp4
设置分辨率为320*240
ffmpeg -ss 20 -t 30 -i dnf.avi -b:v 500k -r 10 -s 320*240 dnf.mp4
设置音频采样率为44100HZ
ffmpeg -ss 20 -t 30 -i dnf.avi -b:v 500k -r 10 -s 320*240 -ar 44100 dnf.mp4
播放视频
ffpaly dnf.avi 注(ffpaly 快捷键):q/ESC退出,f全屏,p/space暂停,鼠标移动点击跳转到指定位置。
FFmpeg在VS下的环境配置
下载dev和shared版本
在包含目录添加dev版本下的include路径,在库目录添加dev版本下的lib路径,链接lib路径下的*.lib文件。dll文件放在工程目录下即可开始愉快的基于ffmpeg代码开发(注:这里为做笔记,并没有详细介绍)。
附加笔记
1.可直接送入音视频硬件的数据为:RGB(RGB24 RGB32),YUV(YUV420 YUV422),PCM。
2.YUV和PCM在打开时需要指定正确分辨率和采样率等信息才能打开,否则会错乱,因为它们的存取格式没有头信息,只有数据信息。而RGB有头信息所以可以直接打开,比如BMP文件。
3.YUV可以通过RGB互转,由于人眼对Y(亮度)信息敏感,对UV(色彩)信息部敏感,所以YUV信息可以保留多的Y信息,适当的压缩UV信息。存储格式为YYYYYYYYYYYYYYYY```UUUUU```VVV```
4.PCM为音频的采样信息,存储格式为LRLRLR···LR,存储左右声道的采样值,44100HZ的意思是每秒左右声道各采样44100个信息。每个点的信息可以使整形,浮点等,所以不同的存储方式可以有不同的大小。
5.视频的封装格式有flv avi rmvb mp4,里面包含了各种流信息,比如视频,音频,字幕等,就是对各种信息的打包封装。
6.音视频的编码格式有HEVC(h265) h264 mpeg mp3 aac等,因为裸数据(rgb yuv pcm)太大,硬盘无法如此存储,网络无法这样传输,所以需要编解码。
n.待续,继续学习中···
更多学习链接
雷神的FFmpeg:https://blog.csdn.net/leixiaohua1020/article/details/15811977
FFmpeg的基础使用:https://www.jianshu.com/p/ddafe46827b7