随着3G网络与IP网络的不断发展,以3G网络为基础的各种终端服务系统的设计与研究已经成为当前的热点。为此我们在基于3G视频传输的嵌入式硬件平台上,设计一种H.264视频编码的RTP承载方法,并且对H.264视频编码采用一种改进的轻量级加密。此加密方法可广泛运用于巡逻、安防等场合,具有非常大的市场价值。

一、嵌入式系统平台的整体设计

1、嵌入式硬件平台的介绍

本嵌入式硬件平台主要采用三星ARM11 s3c6410主芯片,并搭配IG byte,中兴MC8630 CDMA2000 EDV0 3G模块、摄像头模块、LCD显示屏、三星k998908uOa NAND Flash芯片等。

三星s3c6410芯片采用ARM11 76JZF-S的核心,在内核电压为1.2V时,运行频率为667MHz。支持MPEC-4、H.263、H.264、VC-1硬件编解码功能,目前广泛运用在手机、可视电话等设备上。

2、嵌入式视频编码的选择

就目前情况来看,在国内视频监控领域主要流行的三种压缩视频编码标准为:MPEG-4、H.264与AVS。而该嵌入式硬件平台又支持MPE C-4、H.264硬件编解码,故压缩视频编码仅在MPEG-4与H.264中行进选择。

MPEC-4于1999年由运动图像专家组(MPEG)公布,H.264是由ISO/IEC与ITU-T组成的联合视频组制定的新一代视频压缩编解码标准,于2003年通过9相对于MPEG-4,H.264具有更好的压缩性能,它能够在较低的网络带宽的情况下提供高质量的图像传输。在相同的画质下,H.264能够比MPEG-4平均节约39%的传输码率。

由于该嵌入式视频传输平台采用3G网络,相对于有线网络,3G网络稳定性相对差,带宽相对较少,故采用H.264压缩视频编码。

3、嵌入式软件平台的设计

本系统以嵌入式Linux操作系统为平台,包括视频编解码模块、加解密模块、SIP模块、RIP模块、3G驱动模块。

SIP模块,实现SIP协议(会话初始协议),实现在网络中建立、修改或者终止终端与终端或者终端与服务器端的会话。

RTP模块,实现RTP协议(实时传输协议),用于传输经加密后的H.264视频数据。

加密解密模块,实现对H.264数据包的加密与解密。

二、3G视频传输的数据包如何加密

1、常见的压缩视频编码加密算法及其选择

目前针对H.264压缩视频常见的加密算法分为:完全加密算法与选择加密算法。完全加密算法,它不考虑视频编码的格式,将整个视频流看作二进制数据进行标准加密。最常见的有DES、VEA等,这种加密算法的算法安全性非常高,但没有考虑视频流的特殊格式,使其算法加密的数据量非常大,算法的复杂度也非常大,不具有数据的可操作性。选择加密算法,它考虑视频的特殊格式,仅对压缩视频编码的较敏感部分进行加密。这种加密算法,在网络多媒体传输系统中,能够用较小的算法复杂度,获得较高的安全性,目前是研究的热点。综上所述,在本嵌入式视频传输系统中采用选择加密算法。

2、H.264压缩视频编码分析及加密

H.264压缩视频编码标准分为两层:视频编码层(VCL:Video Coding Layer)和网络抽象层(NAL:NetworkAbstraction Layer)。VCL负责对视频数据传输中的视频内容进行描述和定义。包含Codec的信令处理功能以及例如转换、量化、运动补偿预测机制等。NAL通过存取层接口从VCL获得已编码的视频数据,负责针对不同网络应用进行数据封装,完成帧格式、逻辑信道控制信令、同步信息及序列终止位的定义等工作。

NAL中主要由NAL单元(NALU)组成,一个NAL单元由一个字节的头信息与一系列来自VCL的称为原始字节序列载荷(RBSP)的字节流。

NALU头由一个字节组成:

F:1位。在H.264规范中规定这一位必须为0。

NRI:2位。只取00或者II,00表示该NALU可丢弃。11表示该NALU不可丢弃。

Type:5位。描述这个NALU的单元类型,表示如下:

0:未规定

1:非IDR图像中不采用数据划分的片段

2:非IDR图像中A类数据划分片段

3:非IDR图像中B类数据划分片段

4:非IDR图像中C类数据划分片段

5:IDR图像的片段

6:补充增强信息(SEI)

7:序列参数集

8:图像参数集

9:分割符

1O:序列结束符

11:流结束符

12:填充数据

13~23:保留

24~31:未规定

NAL的T作模式分为SSM (Single Slice Mode)和DPM (Data Partition Mode)。针对DPM.Slice分为三个区,Partition A,Partition B.PaJtiLon C,分别对应NAL单元type类型为:2、3、4。A、B、C三个分区:

只要对Partition A部分进行加密。Partition B、Partition C部分也无法正确解码。同时,由于序列参数集包括一个图像序列的所有信息(两个IDR图像间的所有图像信息)。

图像参数集包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等。补充增强信息禽有定时信息和其他可以增强解码视频的补充数据。它们对于图像的正确传输也有着十分重要的意义。

在这里采用对type值为2、6、7、8的NAL单元的RBSP部分采用一种改进的异或加强算法,使得一个密钥key,可以得到多组不同的密文。

switch (NaIUniUype)

{

case 2:

case 6:

case 7:

case 8:NaIUnit_RBSP= encrypt(NuIUnit_RBSP, key);

break;

default:

}

加密函数,采用一种改进的异或加密方法。

a、根据系统时间产生一个0~64000的随机数,再将该随机数进行MD5加密,得到临时密钥encrypLkey;

b、将encrypt_key与NaIUnit RBSP的对应位进行异或加密得到en_RBSP。

假设encrypt_key每一位依次为a1、bl、cl、dl、NaIUnit_ R BSP每一位依次为a2、b2、c2、d2、e2、f2。将它们异或后,得到en_RBSP每一位依次为a3、b3、c3、d3、e3、f3;

c、再将encrypt_key的每一位依次放在en_RBSP相应位的前面得到新的tmp_RBSP。

Lrnp_RBSP的各位依次为a1、a3、b1、b3、c1、c3、d1、d3、a1、e3、b1、f3;

d、将tmp_RBSP与密钥key异或加密,得到待发送的数据包。

encrypt(NaIUnit_RBSP, key){

//步骤a

srand((unsigned) Lime(NULL));

encrypt_key=md5(rand(0. 64000D));

p=0;//指示encrypt_key中的位置

Lmp_R BSP=”;

//步骤b、c

for(i = 0; i < strlen(NaIUnit_RBSP); i++) {

p=(p)== strlen(encrypt_key))?0:p;

tmp_R BSP=tmp_RBSP+encrypt_key[pl+(NaIUnit_RBSP[i]^

encrypt_keyLp++D;

}

//步骤d

retum XORencrypt(tmp_RBSP, key));

}

这样,一个密钥key可以生成不同的密文数据,比直接异或加密算法更难破解,能够更好地反窃听。

解密函数,在解密时,首先将收到type值为2、6、7、8的NAL单元的RBSP与密钥key进行异或,得到带有南发送方的系统时问产生的临时密钥encrypt_key的加密数据tmp_RBSP,再将tmp_RBSP进行再次解密,分离m真正的RBSP即可。

decrypt(NalUnit_RBSP, key) {

tmp_RBSP = XORencrypt (NaIUnii_RBSP, key);

//变量初始化

for (i = 0; i < strlen(Lmp_RBSP); i++) {

RBSP= trnp_RBSP{i] - tmp_RBSP[++i];

retum RBSP;

}

小知识之LCD显示

LCD显示屏是属于平面显示器的一种。用于电视机及计算机的屏幕显示。