校园广播-广播流程及实现方法

 

一、文件广播流程

广播员选择好音视频文件后,首先判断该音视频文件是否符合为FLV、F4V格式,符合则直接通过RTMP传输。否则就对音视频文件进行解压缩,然后再判断解封装后的音视频流是否为FLV、F4V的码流格式,如果是H264或AAC码流直接封装成为FLV格式进行传输。否则,将要进行音视频码流流的格式转换,转换为符合H264或AAC码流,封装成FLV格式进行传输。具体流程图如下:

校园广播-广播流程及实现方法

转码过程:由于RTMP传输协议只支持传输FLV、F4V格式文件,要对一些不符合传输要求的的视频文件(例如.avi;.mkv;.mp4等文件)进行解封装成音视频码流。该过程是基于ffmpeg对音视频文件进行转码,

1、首先对音视频压缩格式文件进行解压、解码,成为最原始的音视频编码格式(视频YUV;音频PCM码)。

2、然后根据目标格式要求,对最原始的音视频进行重新压缩、编码,转化为音视频流(视频H264;音频AAC),

3、最后按照要求进行封装成FLV文件。

校园广播-广播流程及实现方法

二、采播流程

首先采集到最原始的音视频数据(视频YUV码流;音频PCM码流),然后根据传输协议要求,对最原始的音视频码流进行压缩、编码,封装成为FLV格式文件,通过RTMP进行传输。具体流程图如下:

校园广播-广播流程及实现方法

音视频采集过程:

1、音频信号采集:使用DirectSound、WaveIn采集WAV声音,提取声卡处理后的音频原始信号,其音频数据是PCM调制后放入缓冲区的。

2、视频信号采集:使用DirectShow直接获取采集卡视频信号,从视频采集卡上捕获数据,然后放入缓冲区。

校园广播-广播流程及实现方法

编码、压缩、封装为FLV格式:

通过取出缓存区的音视频文件基于ffmpeg进行压缩编码封装处理。

1、将音视频原始数据编码、压缩成音视频流,视频H264;音频AAC。

2、将音视频流封装为FLV文件

RTMP协议传输:

1、握手,服务器和终端分别发送大小固定的三个数据块,依次进行发送,待客终端和服务器分别收到S2和C2后,握手完成

2、建立一个网络连接(NetConnection),发送方发出“连接 (connect)”请求到服务器,终端接命令消息后,发送确认信息,然后发送“流开始”确认信息。

3、建立一个网络流(NetStream),发送方发送“创建流”消息,终端收到消息后发送命令消息中的“结果”(_result),通知服务器流的状态。

4、播放,服务器发送命令“播放”终端,终端接收到播放命令后,服务器发送设置块大小(ChunkSize)、编码信息pps、sps等消息给终端,以便解码。最后发送rtmp消息块到终端。如下所示:

校园广播-广播流程及实现方法