APP下载

基于H.323 协议的嵌入式音频传输系统设计

2020-03-05卢文豪胡敏

现代计算机 2020年2期
关键词:传输技术嵌入式音频

卢文豪,胡敏

(东源广工大现代产业协同创新研究院,河源517500)

0 引言

在当今网络数字音频传输时代,嵌入式音频传输在移动互联网中得到了广泛的应用。目前数字音频传输技术主要有三种,即基于物理层的音频传输技术、基于链路层的音频传输技术和基于IP 层的音频传输技术。基于物理层的音频传输技术缺乏数据交换能力,只能用于点对点的传输[1];基于链路层的音频传输技术主要采用EtherSound、CobraNet 等技术,其中Ether-Sound 技术采用的是菊花链拓扑结构,在传输过程中容易出现单点故障,而且采用该技术的传输设备只能在专用的网络中才能实现音频数据的传输[2-3];而CobraNet 技术采用的网络是采用星型拓扑结构,传输的数据虽然不能跨越路由器,但是能够实现低延时和可靠稳定的传输[4-5];基于IP 层的音频传输技术可以将网络中的数字音频信号以特定的数据包格式进行传输。目前用于IP 层数字音频传输的技术有Livewire 和Dante。其中Dante 技术融合了多种数字音频传输技术的优点,它能够为点对点的音频连接提供了一种低延时、高精度和低成本的解决方案。

本文基于H.323 协议对音频会议的流程控制和嵌入式系统功耗性低、便捷性高的特点,设计了一种基于H.323 的嵌入式音频传输系统。该系统利用海思HI3531A 多媒体处理芯片,从麦克风或者音频文件中获取音频裸流来进行音频编码,然后通过RTP/RTCP实时流媒体传输协议进行封装,并将封装后的RTP 数据包在局域网中传输给目标终端。目标终端对RTP 数据包进行解封装,然后将解封装后的数据流进行音频解码操作,从而获取到音频裸流可进行播放或存储。该系统可实现在局域网内嵌入式设备之间进行音频文件下载及实时流式传输,适用于社区安保系统、施工现场指挥系统等场景。

1 嵌入式音频传输系统开发环境搭建

1.1 嵌入式开发环境的搭建

由于嵌入式Linux 系统比常见发行版的Linux 版本(如Ubuntu、Fedora、CentOS 等)的一个很大的不同之处是前者所占用的内存要远远小于后者,因此安装了嵌入式Linux 系统的嵌入式单板的存储资源较少,难以胜任程序的编译调试等工作。为此,本设计需要借助能够安装发行版Linux 版本的PC 来进行程序的编译调试等操作。所设计的系统在嵌入式单板执行启动装载的指令后,可将单板上的操作信息通过串口或者网络的方式连接到PC,在PC 上进行编译完成后即可得到相关的可执行文件,把可执行文件传输到嵌入式单板中就可以执行相关操作。

1.2 相关开源库的移植

在嵌入式Linux 中运行的开源库需要经过交叉编译,且在交叉编译H323Plus 时要先生成交叉编译所需的配置文件。本系统使用Hisiv300 的交叉编译链,同时禁用安全协议OpenSSL 和多媒体开发库SDL,这样就能够交叉编译出能在嵌入式单板中运行的H323Plus开源库。在交叉编译Ptlib 开源库时除了需要以上的设置以外,还需要开启wav 文件支持和Telnet 协议支持功能。

1.3 海思HI3531A音频驱动的设置

由于嵌入式单板中关于音频相关设置都是默认设置的,不能直接输入音频到嵌入式单板中。所以在设置涉及到音频输入输出及传输过程的相关寄存器时,需要根据TW6874 芯片的寄存器设置手册进行操作,具体包括复位设置、音频输入通道选择、音频传输方式选择、音频输出增益选择等。

2 嵌入式音频传输系统设计

2.1 系统整体架构

本系统为基于H.323 协议的嵌入式音频传输系统,其整体架构如图1 所示,该系统基于海思HI3531A SOC 芯片,采用Linux 操作系统,在H.323 协议栈的基础上通过其中的H.225 协议进行呼叫连接,调用基于Ptlib 开源库中的音频I/O 插件和音频编解码插件获取输入声音裸流并进行编码;再通过H.245 协议建立媒体传输通道,将编码后的音频流通过实时流媒体传输控制协议RTP/PTCP 进行封装,最后通过局域网网络进行传输,从而实现了基于H.323 协议的嵌入式音频传输的功能。

图1 嵌入式音频传输系统整体架构设计框图

2.2 模块设计说明

(1)呼叫控制模块设计

呼叫控制模块主要分为两部分:主呼叫模块和被呼叫模块。当使用者调用应用程序选择监听时则调用被呼叫模块,如果选择呼叫则会调用主呼叫模块。

①主呼叫模块

如图2 的主呼叫模块设计框图所示,主呼叫模块是用户输入时指定了要呼叫的目的终端地址后开始运行的。发起呼叫后,主叫方会先创建出一个H.225 呼叫线程并发送建立连接的消息给被呼叫方。其中,H.225 呼叫线程会一直监听H.225 信道中的消息,如果呼叫线程收到了来自被呼叫方的信令消息,呼叫终端就会根据收到的具体的信令消息执行相对应的操作。

图2 主呼叫模块设计框图

②被呼叫模块

如图3 的被呼叫模块设计框图所示,被呼叫模块在用户输入时选择了监听的选项后被执行的。首先创建TCP 的监听器,然后创建H.225 传输线程,当H.225传输线程收到了来自呼叫方发送的Setup 消息时,就会执行相对应的操作,包括创建CallProceeding、Alert 等消息。然后就对来自呼叫方的呼叫进行应答,发送创建好的CallProceeding、Alert、Connect 消息。准备正式建立连接。

图3 被呼叫模块设计框图

(2)音频编解码模块设计

如图4 所示,音频编解码模块的开启是在媒体通道打开之前进行的,当打开音频编码器后,会先判断当前终端音频的传输方向。如果是输出音频到远程终端的话,首先要从麦克风或者音频文件中获取音频裸流,然后将音频裸流通过编解码器进行编码,最后通过实时流媒体传输控制协议RTP/PTCP 进行封装。接着将封装好的RTP 音频数据包通过局域网发送到远程终端。如果是从远程终端接收音频的话,首先要通过实时流媒体传输控制协议RTP/PTCP 进行解封装,然后将音频编码流通过音频编解码器进行解码,得到音频裸流。最后将音频裸流通过扬声器进行播放或者保存为音频文件。

图4 音频编解码器模块设计框图

(3)媒体通道控制模块设计

如图5 所示,当开启媒体通道后,本地终端先要选择音频数据的传输方向。如果音频的传输方向是发送音频到远程终端则先要从音频编解码器中获取已经编码后的音频数据流,然后再对编码后的音频流通过实时流媒体传输控制协议RTP/PTCP 进行封装。最后把封装后的RTP 数据包通过局域网发送到远程终端。如果音频的传输方向是从远程终端接收音频则要先通过实时流媒体传输控制协议RTP/PTCP 进行解封装,然后将解封装后得到的音频编码流传输到编解码器中进行解码获得音频裸流,最后将音频裸流通过扬声器进行播放或者保存为音频文件。

图5 媒体通道模块设计框图

3 系统测试

由图6 所示,程序运行时返回的调试信息可见,用户输入命令,要求作为监听方等待呼叫,而且在视频传输过程中使用V4L2 视频驱动,在音频传输过程中使用PulseAudio 音频驱动。

图6 程序运行命令

如图7 和图8 所示,当输入命令后,程序会等待远程终端的呼叫,并选择对应的音频驱动PulseAudio 作为音频输入输出的驱动。然后会打印出当前程序的系统版本、时间、可用视频驱动及可用音频编解码器等相关信息。

图7 程序运行后的打印信息

图8 可用的音频编解码器

4 结语

本文设计和实现了一种高效的嵌入式音频传输系统,该系统基于H.323 协议对呼叫和媒体数据进行实时控制,利用Hi3531A 流媒体平台对媒体数据进行高效处理;在设计中主要使用了RTP/RTCP 协议作为嵌入式终端间进行音频传输的流程控制协议。在实际应用中使用H.323Plus 和Ptlib 开源库,通过Hi3531A 流媒体平台进行编解码等操作,最终通过局域网传输实现嵌入式终端间的音频传输。该系统可为日常工作和生活提供更高效便捷的音频传输选择。

猜你喜欢

传输技术嵌入式音频
On Doors
Egdon Heath (Extract from The Return of the Native)
基于IMX6ULL的嵌入式根文件系统构建
“金课”建设背景下光传输技术课程的建设实践
高清数字电视光纤传输技术应用研究
传输技术在信息通信工程中的有效应用分析
柏韵音频举办Pureaudio 2021新产品发布会
传输技术在信息通信工程中的应用
高校图书馆开展嵌入式信息素质教育的思考
AItera推出Nios II系列软核处理器