音视频开发-FFmpeg详解

本文详细介绍了音视频开发的基础知识,包括图片属性、音频基本属性、音视频开发概念,重点聚焦于FFmpeg的主要对象和API。通过FFmpeg进行编码、解码、复用、解复用的过程,并探讨了FFmpeg在读取和写入媒体文件时的API使用。同时,文章提及了音视频开发中的常见问题,如图像时间基、音频格式转换等,为音视频开发者提供了一份全面的学习大纲。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

音视频开发是个非常复杂的,庞大的开发话题,初涉其中,先看一下结合 OEIP(开源项目) 新增例子。

 

    可以打开flv,mp4类型文件,以及rtmp协议音视频数据,声音的播放使用SDL。

 

    把采集的麦/声卡数据混合并与采集的视频信息写入媒体文件或是RMTP协议中。

图片主要属性

  包含长/宽/通道数/像素格式(U8/U16/F32),以及排列格式RGBA/YUV。其中通道与像素格式,如在opencv中,CV_8UC1/CV_8UC4,表示1个通道与4个通道的U8格式。而排列格式,简单的分为RGBA类的,如BGRA,BGR,R这些,一般用于游戏里的纹理,RGBA/BGR/R本身有表示通道格式的意思,所以后面组合RGBA32,RGBAF32用来表示通道像素里数据格式。而YUV类型,一般用在媒体类型,如采集设备,音视频文件,推拉流传输等,YUV格式有二个组成部分。一是UV对应像素个数,如YUV420,YUV422,YUV444,他们的相同点就是一个像素点对应一个Y,不同点是,如YUV420表示一个U/V对应4个像素点,422一个UV对应二个像素点,UV444则表示一个UV对应一个像素点,YUV像素点数据格式一般是U8。

  我们可以来比较一些常用格式最终占用字节大小,如1080P下。

  • RGBA32 1920*1080*4=8,294,400‬ 其中4是每个像素包含RGBA四个通道。
  • YUV420 1920*1080 + 980*540*2 前面是Y占用大小,后面是UV占用大小。
  • YUV422 1920*1080 + 980*1080*2 前面是Y占用大小,后面是UV占用大小
  • YUV444 1920*1080*3 每个像素一个YUV三通道。

  第二是排序格式,如YUV420可以细分YUV420I,YUV420P,YUV420SP(NV12),简单来说,后缀是P是表示YUV这三个分开存放,而SP是Y单独分开,UV交织在一起,而I就更简单了,YUV交织在一起,简单来说,和RGBA格式差不多排列。

  YUV420P/YUV422P 一般用来视频文件与推拉流传输上,我想可能原因是Y用来表示亮度,人眼最敏感部分,早期黑白电视只有Y大家一样能看,这种格式最方便兼容,直接把UV丢弃就行,Y/U/V可能在内存分布上不连续。其

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值