【音视频开发之起始】

因为博主一直从事的是专业音响、乐器等音频领域行业,后面博主准备转行专心做音视频开发,后面会记录一系列学习过程。

音视频整体开发流程按照功能划分分为:采集、预处理、编码、封装、传输、解封装、解码、渲染等很多环节

网上学习资料很多,但是都不太完整系统化,后面的学习方式会按照这个流程走,一边学习每个模块的功能然后一边做项目将所有模块功能串联起来。

将这些功能做一个简单的介绍:

1、采集:数据的收集

音频采集:直接获取已有音频、利用音频处理软件捕获截取声音、用麦克风录制声音。(模拟信号转换为数字信号)

视频采集:直接获取已有视频、利用视频处理软件捕获截取视频、用摄像头拍摄视频。(光信号转电信号、电信号转模拟信号)

2、预处理:

音频:增益、回声消除、降噪等

视频:滤镜、美颜、加字幕、绿幕抠图等

3、编码

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

名称

推出机构

推出时间

目前使用领域

AAC

MPEG

1997

各个领域(新)

AC-3

Dolby Inc.

1992

电影

MP3

MPEG

1993

各个领域(旧)

WMA

Microsoft Inc.

1999

微软平台

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

名称

推出机构

推出时间

目前使用领域

HEVC(H.265)

MPEG/ITU-T

2013

研发中

H.264

MPEG/ITU-T

2003

各个领域

MPEG4

MPEG

2001

不温不火

MPEG2

MPEG

1994

数字电视

VP9

Google

2013

研发中

VP8

Google

2008

不普及

VC-1

Microsoft Inc.

2006

微软平台

4、封装

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

AVI、MP4、TS、FLV等

5、传输

流媒体传输协议

  • RTP & RTCP (实时传输协议 & 实时传输控制协议)
  • RTSP (实时流协议)
  • RSVP (资源预定协议)
  • RTMP (实时消息传输协议)
  • MMS (微软媒体服务器协议)
  • HLS (HTTP Live Streaming)

6、解封装

解封装是上面介绍的封装的逆操作,从音视频的容器中将音频包、视频包分离出来放到各自的队列,等待各自的解码线程去解码渲染视频,播放音频。

7、解码

编码的逆操作,将视频包解码成原始的视频帧,将音频包解码成原始的pcm音频数据。

8、渲染

视频的渲染 windows 平台下可以使用 Direct3D 技术渲染视频,macOS,Android 和 Linux 可以使用 OpenGL 、OpenGLES 技术渲染视频。

PS:大致就是这样了,我后面会一个模块一个模块的去啃,任务艰巨,有很多编译器是自带了api解决其中某些功能的,音视频一般是需要跨平台,Windows、MAC、Linux、android、IOS等,如果要学好最后还是要去做跨平台SDK,刚开始学可以只在某个系统上把流程走通,多做几个项目就打通了

你可能感兴趣的:(音视频,音视频,c++)