1、播放器的架构:
将音视频进行解复用,拆解成音频流和视频流---进行音频解码和视频解码---音频解码后变成pcm数据,视频解码后变成yuv数据---解码后的音频通过pcm播放器播放,视频通过yuv播放器播放--通过SDL做视频渲染,声音通过声卡播放出来,视频通过显卡展示出来--最后进行音视频的同步
2、渲染流程:
当视频解码后解码成为yuv数据---渲染器经过渲染形成纹理(“纹理”是内存中的特殊的存储空间)---将纹理拷贝到显卡中去---显卡经过计算最终会展示到显卡里
(通过SDL方便执行渲染过程)
3、ffmpeg是一个多媒体框架,具体的音视频的编解码是由具体的编解码器处理的,比如比较有名的编解码库:fdk-aac,对于视频的h264/h265也不是ffmpeg开发的,他只是作为一个插件放到ffmpeg中来,可以直接通过ffmpeg去调用。
ffmpeg支持跨平台:linux windows mac
ffmpeg支持解码、编码、转码、复用、解复用、过滤音视频数据
4、点播业务会有不同的文件格式
5、ffmpeg 命令
---查询:
ffmpeg -codecs |grep 264 查询是否支持 h264
ffmpeg -version 查询版本
ffmpeg -formats|grep mp3 查询是否支持mp3格式
ffmpeg -f avfoundation -list_devices true -i "" 查找mac系统下avfoundation支持的设备
---录屏
ffmpeg -f avfoundation -i1 -r30 out.yuv
avfoundation是mac中用来采集数据的库
-i 指定从哪儿采集数据,1代表从屏幕,0代表从摄像头等
-r 指定帧率,一般达到25帧时,视觉效果会流畅,实时互动过程达到15帧就能达到可以接受的连续的视频的效果
out.yuv 输出的数据,格式是yuv。也就是采集的是yuv数据,输出的也是yuv数据,没有进行任何的压缩,所以数据量是很大的
---分解和复用(转变音视频格式)
将原文件进行解复用得到编码之后的数据包,然后将这些现成的包复用输出想要转换的格式的文件
ffmpeg -i 123.mov -vcodec copy -acodec copy 123.mp4
-vcodec copy 将视频拷贝
-acodec copy 将音频拷贝