“深入浅出”系列之音视频开发:(1)音视频开发基础

我的音视频开发大部分内容是跟着雷霄骅大佬学习的,所以笔记也是跟雷老师的博客写的。

音视频基础

首先播放一个视频文件的流程如下所示:

先对封装的文件格式进行解封装操作,分别解压出音频数据和视频视频,然后进行音频的解码和视频解码分别获取到音频采样数据和视频像素数据,最后进行音视频的同步播放。

FFmpeg的作用就是将H.264格式的数据转换成YUV格式的数据,然后SDL将YUV显示到电脑屏幕上,FFmpeg可以用来、转码、压缩、剪辑、滤镜、水印、录屏、Gif等用途。SDL(Simple DirectMedia Layer)库的作用就是封装了复杂的视音频底层交互工作,简化了视音频处理的难度。

开发环境配置:如果是在Linux环境下开发,可以使用gcc编译器,并确保包含FFmpeg和SDL的头文件和库文件。在编译时,需要链接FFmpeg和SDL的库,例如使用-lavformat -lavcodec -lswscale -lavutil -lSDL2等编译选项。

常用播放器:

跨平台系列(非DirectShow框架):VLC、Mplayer、ffplay

Windows系列(DirectShow框架):完美解码、终极解码、暴风影音

信息查看工具:

综合信息:MediaInfo

二进制信息:UltraEdit

单项详细分析:

封装格式:Elecard Format Analyzer

视频编码数据:Elecard Stream Eye

视频像素数据:YUV Player

音频采样数据:Adobe Audition

封装格式:视频码流和音频码流按照一定的格式存储在一个文件中。

视频编码:将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量

音频编码:将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。

视频像素数据:保存屏幕上每个像素点的像素值。格式有RGB24,RGB32,YUV420P,YUV422P等,压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P。

视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:

3600*25*1920*1080*3=559.9GByte    PS:这里假定帧率为25Hz,取样精度为8bit。

音频采样数据:保存了音频中每个采样点的数据。音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为

4*60*44100*2*2=42.3MByte              PS:这里假定采样率为44100Hz,采样精度为16bit。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值