基于ARM11+Linux的无线视频监控系统
基于ARM11嵌入式的智能信息采集系统的研制

基于ARM11嵌入式的智能信息采集系统的研制摘要:论文研究了一种基于ARM11硬件平台以及linux嵌入式操作系统的智能信息采集系统,采用Zigbee技术架构实现无线传感器网络,实现信息的监测监控,为操作人员提供决策信息。
该系统设计结构巧妙,可移动无缝接入网络,凭借着ARM11强大的硬件平台、linux嵌入式操作系统在数字智能掌上电脑的成熟应用以及优秀紧凑的人机界面设计,实现了系统的高度智能化、提高了系统的可靠性,体现了该系统的优越性、灵活性和智能性。
关键词:信息采集ARM11 linux 系统组成1.1 硬件结构系统由三星公司的S3C6410(ARM11)、SD卡接口、USB接口、触摸屏接口、Zigbee无线传输电路等组成,实现信号的接收和分析处理,检测节点由ATmega16单片机、各类气体传感器组成,节点检测到信息数据后,由单片机处理其数据。
用于通信的Zigbee线选用符合标准Zigbee协议的集成收发RF 器件CC2430和利用收发天线,以及少量的外围器件。
通过便携式监控系统向井下检测节点发出网络连接自检信号,当MCU接收到连接信号后,返回应答信号至便携式监控系统,完成一次完整的Zigbee网络通信。
如果在发送信号时ACK标志位置位,而且在一定的超时期限内没有收到应答,发送器将重复发送固定次数,若仍无应答就宣布发生错误,请求重新建立通信连接。
当通信链路成功时,整个检测系统开始工作。
1.2 系统功能介绍信息采集系统的主要功能分为气体监测、供电监测、数据存储、信息反馈、断电控制、风能监测、网络修复、系统自检等功能,其中气体监测主要用于实时显示瓦斯、一氧化碳、二氧化碳、氧气、湿度、温度等参数,供电监测主要用以实时监测重要用电设备的电气参数,数据存储用以将动态数据存放于数据库中,以供历史查询以及决策决断,信息反馈主要用以各项信息的反馈。
而断电控制则用以在数据超标的情况下,选择性的对某一设备进行断电。
基于ARM的无线网络视频监控系统设计与实现

基于ARM的无线网络视频监控系统设计与实现作者:邹翰刘昌华来源:《软件导刊》2016年第03期摘要:利用ARM cortex-A8开发一个无线网络视频监控系统。
采用系统采用B/S架构,用WiFi网络传输视频数据,由Web视频服务器、无线传输模块和远程监控终端3部分组成。
探讨Web视频服务器的软硬件设计,包括服务器硬件平台搭建、Linux系统移植部署、MJPG-streamer移植及WiFi网络构建。
测试结果表明,系统运行稳定,实时性较高,可实现多终端同时监控,采集到的图像清晰流畅,无明显失真,视频监控效果良好。
关键词:B/S架构;ARM cortex-A8;视频监控;WiFi;MJPG-streamer中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2016)003-0063-03作者简介:邹翰(1991-),男,湖北荆州人,武汉轻工大学数学与计算机学院硕士研究生,研究方向为嵌入式技术;刘昌华(1963-),男,湖北武汉人,武汉轻工大学数学与计算机学院副教授、硕士生导师,研究方向为计算机网络及应用、嵌入式FPGA设计。
0 引言随着平安城市和智能小区建设的快速发展,视频监控技术成为IT领域最热门应用技术之一。
视频监控技术经历了模拟视频监控、数字视频监控和网络视频监控3个阶段[1]。
有线网络视频监控系统[2]存在布线繁琐、监控点固定和在复杂环境下适应性差等问题;3G无线网络视频监控系统[3]由于受网络成本和通信速度的限制,应用范围并不广泛;WiFi网络技术具有使用成本低、传输速率高及网络构建简单的优点,更加符合市场需要。
结合嵌入式技术可靠性高、成本低、体积小和实时性强等特点,基于ARM的无线视频监控系统具有广泛的应用前景。
本文提出一种基于WiFi无线网络的视频监控系统。
1 系统概述该无线视频监控系统整体结构如图1所示,由USB摄像头采集视频图像,经搭载有Web 视频服务器的ARM平台进行压缩编码并传输到网络,各终端再通过无线网络接收,并在Web 浏览器中显示。
基于Mjpg-streamer的跨平台无线视频传输系统

基于Mjpg-streamer的跨平台无线视频传输系统祝朝政;张毅伟;程禹嘉;严锡君【摘要】为了解决基于Mjpg-streamer的远程视频系统只能通过特定浏览器查看与,可移植性差的问题,开发了采用QT框架的视频解码客户端,实现了跨平台的实时观测,改变了原系统对于浏览器的依赖性,提高了Mjpg-streamer远程视频系统的可移植性,使得系统的适用范围及使用方式更加宽泛及大众化。
%In order to solve the problems that remote video system based on Mjpg-streamer only can be viewed through a particular browser and has poor portability, videodecoding using QT framework is developed in the client side to realize the real-time observation of cross-platform. It changes the dependence on browsers of original system, and enhances the portability of Mjpg-streamer remote video system, which makes theusage scope and mode of the system wider and more popular.【期刊名称】《微型电脑应用》【年(卷),期】2016(032)001【总页数】3页(P57-59)【关键词】视频解码;QT;跨平台;Mjpg-streamer【作者】祝朝政;张毅伟;程禹嘉;严锡君【作者单位】河海大学计算机与信息学院,南京,210098;河海大学计算机与信息学院,南京,210098;河海大学计算机与信息学院,南京,210098;河海大学计算机与信息学院,南京,210098【正文语种】中文【中图分类】TP393近年来,基于Mjpg-streamer的远程视频系统随着嵌入式技术,多媒体技术,计算机网络安全技术的快速发展也在不断的更新与发展。
基于嵌入式的无线视频监控系统研究

基于嵌入式的无线视频监控系统研究随着科技的不断发展,无线视频监控系统在安防领域中扮演着越来越重要的角色。
基于嵌入式的无线视频监控系统是一种新兴的技术,它将嵌入式系统与无线通信技术相结合,能够实现远程监控、实时视频传输和智能分析等功能。
本文将围绕这一主题展开研究。
首先,本文将介绍基于嵌入式的无线视频监控系统的基本原理和工作方式。
该系统由摄像头、嵌入式处理器、无线通信模块和监控中心等组成。
摄像头负责采集视频图像,嵌入式处理器负责对图像进行处理和分析,无线通信模块负责将处理后的数据传输至监控中心。
其次,本文将讨论基于嵌入式的无线视频监控系统在安防领域中的应用。
该系统可以广泛应用于公共场所、企事业单位和居民小区等地方。
通过无线视频监控系统,可以实现对目标区域的实时监控,及时发现和处理各类安全事件。
同时,系统还具备智能分析功能,可以通过图像识别、运动检测等算法,对异常事件进行自动报警和警戒。
进一步,本文将探讨基于嵌入式的无线视频监控系统面临的挑战和解决方案。
由于监控系统需要长时间运行,对嵌入式处理器和无线通信模块的性能和功耗有较高要求。
为了解决这一问题,研究人员可以采用低功耗的嵌入式处理器,优化算法和数据传输方式,以提高系统的效能和可靠性。
最后,本文将总结基于嵌入式的无线视频监控系统的研究成果和未来发展方向。
目前,基于嵌入式的无线视频监控系统已经取得了一定的研究成果,并在实际应用中取得了良好的效果。
未来,研究人员可以进一步改进系统的性能和功能,推动无线视频监控系统在安防领域的应用普及,并结合人工智能等新技术,实现更加智能化、自动化的安防监控。
综上所述,基于嵌入式的无线视频监控系统是一项具有广阔前景的研究课题。
通过对系统原理、应用、挑战和未来发展方向的探讨,可以更好地推动该技术的发展和应用。
相信在不久的将来,基于嵌入式的无线视频监控系统将在安防领域中发挥越来越重要的作用。
基于ARM-Linux的图像采集和无线传输系统设计

X cl P A 7 理 器 连 接 了一 个 6 Mbt N N l载 程序 和 内核 映像 , 并作 为根 文件 系统 ,4 y 6 Mbt e S R M 作 为 内存 , S I 接 无 线 网卡 , S 2连 接 摄 像 头 。 系 D A UB 连 UB
d i1 . 9 9 j i n 1 7 — 4 . 0 0 0 . 1 o :0 3 6 / . s . 6 11 1 2 1 . 5 0 2 s 0
基 于 A M- iu R Ln x的 图像 采 集 和 无 线 传 输 系统 设 计
田泽 康 , 德 华 李
( 中科技 大学 图像 识别 与人 工智 能研 究所 , 汉 4 0 7 ) 华 武 3 0 4
图像采集和传输系统 的硬件系统 由开发板 、 by 30 WeeeV 0 0 U B摄像头 、 S 中兴 MF7 U无线网卡等构成 , 图 2所示 。 63 如
De i n o sg fARM - n x-a e m a e a q iii n - u - s d i g c u sto Li b a d r ls r n m iso s se n wiee s ta s s in y t m
摘 要 : 绍 了一 种 基 于 嵌 入 式 l u 介 i x的 实 时 图 像 监 控 系统 的 设 计 和 实 n 现方 法 。 系统 以 X c l P 2 0处 理 器为 核 心 , 载 US sae XA 7 搭 B摄 像 头 和 无 线 网卡 构 成 硬 件 平 台 。 Ar Liu 以 m- n x为 软 件 平 台 。 该 平 台 上 实 现 了 在 实 时 图像 的 采 集 , E 4压 缩 和 3 无 线 传 输 。M P MP G- G EG- 法 的 采 4算 用减 小 了网 络 的 压 力 。 节 约 了成 本 。 随 着 3 网 络 的 不 断 发 展 , 系 又 G 本 统将在 3 G时代有着广阔的应用前景。 关键 词 :图 像 采 集 ; 入 式 系 统 ; C 嵌 W DMA;A m- iu r Ln x 中 图分 类 号 :T 2 P7 文 献 标 志 码 :A
基于ARM9与Linux的WLAN视频监控系统研究与设计

基于ARM9与Linux的WLAN视频监控系统研究与设计基于ARM9与Linux的WLAN视频监控系统研究与设计一、引言近年来,随着科学技术的飞速发展与人们生活水平的提高,对安全监控的需求日益增加。
视频监控系统作为一种最常见的安全监控手段,已经被广泛应用于各个领域。
然而,传统的有线视频监控系统存在线缆布线麻烦、工程量大、成本高等问题。
为了解决这些问题,基于ARM9与Linux的WLAN视频监控系统得到了广泛关注与研究。
二、系统设计基于ARM9与Linux的WLAN视频监控系统主要由前端摄像头模块、ARM9处理器模块、WLAN无线模块、存储模块以及远程访问控制模块组成。
1. 前端摄像头模块前端摄像头模块是整个系统的核心部件,负责采集监控画面。
在设计中,我们选择了高清摄像头,能够提供更清晰、细腻的图像信息,有效提高监控系统的效果。
2. ARM9处理器模块ARM9处理器模块作为系统的“大脑”,负责对摄像头采集到的巨量数据进行处理、压缩和编码。
我们选用了ARM9处理器,其低功耗、高性能的特点能够满足我们的需求。
3. WLAN无线模块WLAN无线模块是系统的重要组成部分,负责将处理好的视频数据通过无线网络传输到存储设备或者远程访问设备上。
我们选择了高速、稳定的WLAN模块,以确保数据的及时、准确的传输。
4. 存储模块存储模块是用于保存视频监控数据的部件。
我们选择了高性能的硬盘作为主要存储介质,以及SD卡作为备份存储介质,以确保数据的安全性和可靠性。
5. 远程访问控制模块远程访问控制模块允许用户通过Internet远程访问视频监控系统,实时查看、回放监控画面。
用户只需通过登录系统,即可实现对视频监控画面的控制和操作。
三、系统工作流程基于ARM9与Linux的WLAN视频监控系统的工作流程如下:1. 摄像头采集前端摄像头模块负责实时采集监控画面,并将采集到的数据传输给ARM9处理器模块。
2. 数据处理与编码ARM9处理器模块对采集到的监控数据进行处理、压缩和编码,减少数据量的同时保留重要信息。
基于ARM11—Linux的视频采集传输系统的研究

中 图 分 类 号 :T P 3 9 3 文 献 标 识 码 :A 文 章 编 号 :1 6 7 4 — 7 7 2 0 ( 2 0 1 3 ) 0 8 — 0 0 9 1 — 0 4
Ab s t r a c t :T h i s p a p e r s t u d i e s a k i n d o f ARM l 1 b a s e d o n t h e v i d e o a c q u i s i t i o n w i r e l e s s t r a n s mi s s i o n s y s t e m, a n d i t r e a l i z e s
应 用 函数 等 完 成摄 像 头的 采 集 ; 在 传 输 系统 方 面 , 采 用 传 输 速 度 较 快 的 WI F I — Ad — Ho c模 式 ( 端 对 端 传 输) , 依靠 T C P / I P协 议 的 传 输 方 式 使 采 集 端 与 家 庭 网 关 之 间 建 立 连 接 , 成 功 实现 家 庭 网 关 对 各 个 分 散
( Me c h a n i c a l a n d E l e c t r i c a l E n g i n e e r i n g C o l l e g e ,N o r t h C h i n a U n i v e r s i t y o f T e c h n o l o g y , B e i j i n g 1 0 0 1 4 4, C h i n a )
f r o m t h e ma i n f a mi l y t o e a c h d i s p e r s i o n e f f e c t i v e mo n i t o r i n g r o o m g a t e wa y t h r o u g h t h e c a me r a .T h e s y s t e m c h o o s e s ARM 1 1 k e r n e l ¥ 3 C 6 41 0 a s a s y s t e m p r o c e s s o r a n d CMO S c a me r a OV9 6 5 0 a s a c q u i s i t i o n e n d.I t b u i l d s L i n u x s o f t w a r e s y s t e m i n t h e i n d e p e n d e n t d e s i g n h a r d w a r e p l a t or f m wi t h s y s t e m i n t e r n a l V 4 L 2 p r o v i d e d d a t a s t r u c t u r e a n d a p p l i c a t i o n f u n c t i o n i n o r d e r t o c o mp l e t e c a me r a
(完整版)基于ARM的视频监控系统的设计与实现1_图文.

-42-20078产品设计与实现一、前言二、数字视频监控系统的组成三、视频服务器的硬件实现监控系统作为现代企业不可缺少的重要组成部分,已广泛应用于交通、医院、银行、家居、视频会议和视频点播、证券、远程教育等诸多领域,可以有效地避免安全隐患的发生,保障员工人身安全和企业资产不受损失,实现无人值守。
早期的模拟监控系统不能联网,只能与监控中心进行点对点通信,随着图像与视频处理技术、网络技术和自动控制技术的发展,视频监控系统已过渡到数字化的网络监控。
它以数字视频的压缩、传输、存储和播放为核心,采用先进的数字图像压缩编/解码技术和传输技术,将智能图像处理与识别技术用于图像显示、调整、跟踪,根据现场环境智能调节摄像机的位置及清晰度,对物体进行跟踪识别,对图像进行分析和处理。
数字视频监控系统主要由监控中心、通信链路和多个监控站点组成。
通讯链路在企业内部使用企业已经铺设好的局域网线路,将其连人企业内部网,然后可以将其接人Internet,以便将信号传输给远端分控计算机或授权用户。
传输的数据包括视频、报警等录像数据和控制信号。
监控中心具有电视墙、磁盘阵列、服务器、交换机和路由器等网络设备,还可以通过多级级联构成多级监控系统。
监控站点主要由视频服务器和摄像机组成,整个系统组网灵活;可以突破地域限制,进行大规模、远距离的实时图像监控和报警处理。
如图1所示。
监控系统的软件包括客户端、服务器端软件两部分以及相互之间的通信。
在实际工作中,根据实际情况,在需要的地方安装相应的前端监控设备(彩色或黑白摄像机、固定或活动云台、定焦或变焦和相应的软件系统。
图I中的每个监控站点主要由摄像头、云台控制器、网络视频服务器组成,可配置可变镜头、麦克风、扬声器等外设,如图2所示。
其中网络视频服务器以嵌人式微处理器为核心,由视频采集编码模块、网络功能模块、实时时钟模块、摄像头云台控制模块等组成。
嵌人式微处理器是硬件部分的核心 , 采用 SAMSUNG的微处理器S3C4510B。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于ARM11+Linux的无线视频监控系统1 引言随着无线网络的普及,ARM处理器运算的能力不断地增强以及计算机处理图像的技术不断地提高,基于ARM 的视频监控正越来越广泛的应用于学校,社区,酒店,网吧,医疗等各种各样地领域。
传统的视频监控系统布线复杂,设备庞大,智能化低,以及软硬件资源得不到充分的发挥。
而arm嵌入式系统的小型化、占用空间小、成本低廉、结构紧凑、支持无线网络等特点,使得利用S3C6410 的arm11+linux系统构成各种各样的无线网络数字监控系统具有广泛的应用价值。
2 系统整体设计2.1 硬件总体设计本系统采用韩国三星公司arm11 内核的S3C6410 作为微处理器,该款处理器体积小,尺寸仅相当于一个48mm*67mm 方块的大小,同时集成了丰富的接口,32 位数据总线和32 位外部地址总线,SROM 控制器、 SRAM 控制器、NAND 闪存控制器、64 个中断源的中断控制器、五个三十二位定时器、四个UART、四个DMA 控制器、STN 与TFT LCD 控制器、看门狗、IIS 音频接口、IIC-Bus 接口、两个USB host口、一个USB device 口、两个串行外围接口电路、三个SD 卡接口、camera_if 接口、TV_out 接口、MFC接口、2 路SPI、Touch Screen 接口,其主频可达800MHz,扩展总线最大频率133MHz.在此基本上,还进行了相关的扩展,引出了一个四线RS-232 串口,该串口用于开发主机与S3C6410 开发平台进行通信;配置了1GB 的NANDflash,用于存放嵌入式linux操作系统,应用程序和数据,128MB 的DDR 内存,用于存放运行程序,摄像头捕获的数据;扩展了一个WIFI 模块,用于开发平台与服务器传输视频数据,通过无线网络实现视频远程监控。
2.2 软件总体设计软件总体结构包括引导加载程序Bootloader、操作系统内核,设备驱动程序和应用层程序,其软件结构如图1 所示。
图1 软件总体结构框图该系统上电后,先运行引导加载程序Bootloader,该程序的作用是初始化硬件设备、建立内存空间的映射表,引导和加载操作系统内核,然后启动嵌入式操作系统linux,接着加载Nand flash 驱动程序、LCD 驱动程序、WIFI 驱动程序等一些必要的驱动程序。
3 视频数据采集和编码设计3.1 基于V4L2 视频数据采集设计在Linux 系统下,对视频设备的各种操作是通过Video4Linux2 实现的,简称V4L2.应用程序通过V4L2 提供的接口函数实现视频设备的操作。
整个视频数据采集的过程如图2 所示。
(1)打开视频设备,int open(const char *pathname,int flags)。
调用该函数,若返回值为-1,表示打开失败,否则,表示所打开设备的文件描述符。
(2)取得设备信息。
通过ioctl(cam_fp,VIDIOC_QUERYCAP,&cap)函数来取得设备文件的属性参数并存储于cap 结构中,其中cam_fp 指的是打开的视频设备的文件描述符。
(3)选择视频输入方式。
通过ioctl(cam_fp,VIDIOC_ S_INPUT,&chan)函数设置视频设备的输入方式,其中chan 的数据结构类型是v4l2_input,用来指定视频的输入方式。
(4 )设置视频帧格式。
通过ioctl(cam_fp ,VIDIOC_S _FMT,&fmt)函数设置视频的帧格式,其中fmt 的数据结构类型是v4l2_format,用来指定视频的宽度、高度、像素大小等。
(5)读取视频数据。
通过read(cam_fp,g_yuv,YUV_ SIZE)函数,把摄像头一帧的数据存放到g_yuv中,其中YUV_ SIZE 指的是每帧数据的大小。
(6)关闭视频设备。
通过close(cam_fp)函数来实现视频设备的关闭。
图2 视频数据采集流程框图。
3.2 视频数据的H264编码为了提高视频数据编码速度,本系统采用的是H264 硬编码方式,硬编码具有不占用CPU 资源,运算速度快等优点,从而满足视频数据实时性的要求。
具体编码的过程如图3 所示。
(1)创建H264 编码结构。
调用SsbSipH264EncodeInit (width,height,frame_rate,bitrate,gop_num)函数实现的,其中width 表示图像的宽度,height 表示图像的高度,frame_rate 表示帧频,bitrate 表示比特率或码率,gop_num 表示两个相离关键帧之间最多包含多少个帧(B 或P 帧)。
(2)初始化H264 编码结构,调用SsbSipH264Encode Exe (handle)函数。
(3)获取视频输入地址,SsbSipH264EncodeGetInBuf (handle,0)函数来实现,该函数返回视频输入的首地址,存放在p_inbuf 中。
(4)输入视频数据,调用memcpy(p_inbuf,yuv_buf,frame_size)函数实现,p_inbuf 存放需要编码的数据,yuv_buf 存放原始视频数据,frame_size 表示数据的大小。
(5)编码视频数据,对p_inbuf 内容进行H264编码,调用SsbSipH264EncodeExe(handle)函数实现。
(6)输出已编码的数据,SsbSipH264EncodeGetOutBuf (handle,size),该函数返回已编码图像的首地址,size 表示已编码图像的大小。
(7)关闭硬编码设备,调用SsbSipH264EncodeDeInit (handle)函数实现的。
图3 H264 编码流程框图4 视频数据的传输和显示4.1 视频数据传输模块设计现代无线通信网络标准主要有3G(第三代移动通信),WI-FI,Bluetooth,Zigbee(紫蜂)等,具体详见表1.表1 常用无线通信网络标准的基本比较由于WI-FI 具有传输率高,支持的协议多,安装及设置简单,成本低等优点,所以本系统采用的无线网络标准是WI-FI.4.1.1 WI-FI 无线网络搭建过程(1)加载WI-FI 模块。
通过insmod 命令加载,这里需要加载 2 个文件helper_sd.bin、sd8686.bin,这2 个文件可以从Marvel 官方网站下载。
(2)搜索WI-FI 网络。
先用ifconfig eth1 up 命令把WI-FI 网络接口卡打开,然后用iwlist eth1 scanning命令搜索WIFI 网络。
(3)设置eth1 的ip 地址和子网掩码。
(4)设置ESSID.通过iwconfig eth1 essid 402命令实现的,ESSID 用来区分不同的网络。
(5)设置密码。
通过iwconfig eth1 key s:your_key命令实现的,其中your_key 就是登陆密码。
4.1.2 基于RTP 协议的视频数据传输RTP 是实时传送协议(Real-time TransportProtocol)的缩写,代表一个网络传输的协议,为音频、视频上传中的常用协议[5].RTCP 和RTP 一起提供流量控制和拥塞控制服务,它们能以有效反馈和最小开销使传输效率最佳化,因而特别适合传送实时的数据,所以采用该协议传输视频数据。
本系统采用开源代码Jrtplib 提供的RTP 协议栈,由于Jrtplib 对RFC3550 的实现进行了封装,使得传输视频数据更加简单。
由于本系统的网络最大有效载荷为1500 字节,因此设置RTP 包大小的上限为1400 字节,如果发送的数据大于1400 字节,则采用拆包的方法再发送,具体传输过程如图4 和图5 所示。
图4 发送端流程框图。
图5 接收端流程框图。
发送端主要过程如下:(1)创建RTP 会话并设置目标地址。
调用Create方法得到RTP 会话实例,然后调用AddDestination 方法设置目标IP 以及目标端口号。
(2)获得数据,调用Get_Data()函数得到。
(3)发送数据,通过SendPacket()方法实现。
接收端主要过程如下:(1)创建RTP 会话。
调用Create 方法来创建一个会话实例,并且在创建会话的同时设置端口号,要与发送端的端口号保持一致。
(2)接受RTP 数据。
调用RTPSession 类的PollData()方法接收数据。
(3)保存RTP 数据报。
通过创建了一个指针数组,里面存放的是RTP 数据报的指针,只要将刚接收到RTP 数据报的指针赋给这个指针数组即可,这样可以节省数据拷贝的时间。
(4)判断是否接收完成,如果没有,则跳转到第b 步,否则接收端程序退出。
4.2 视频数据的解码和显示由于接收到的数据是经H264 编码的数据,因此,先要对该数据进行解码,然后才能显示。
而在服务器端,对视频数据解码用到FFmpeg.FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件。
解码时主要涉及FFmpeg 下的libavcodec 库、libswscale库和libavformat 库,其中第一个库是一个包含了所有FFmpeg 音视频编解码器的库,第二个库是格式转化库,因为解码后的数据是YUV420 格式,而要在计算机上显示该数据,则需要的是RGB 格式的,该库功能就是把YUV420 格式转化成RGB 格式,第三个库是一个包含了所有的普通音视格式的解析器和产生器的库。
4.2.1 初始化解码线程(1)注册全部的文件格式和编解码器,调用av_register_all()函数完成注册。
(2)设置AVFormatContext 结构体。
该结构体是FFmpeg 格式转换过程中实现输入和输出功能,保存相关数据的主要结构,通过av_open_input_file 函数设置该结构体。
(3)检查视频流的信息,通过调用av_find_stream_info(pFormatCtx)函数,pFormatCtx-》streams 就填充了正确的视频流信息,pFormatCtx 类型是AVFormatContext.(4)得到编解码器上下文,pCodecCtx= pFormatCtx -》streams[videoStream]-》codec,pCodecCtx 指针指向了流中所使用的关于编解码器的所有信息。
(5)打开解码器,先通过avcodec_find_decoder 函数找到相应解码器,然后调用avcodec_open 函数打开解码器。
(6)申请内存用来存放解码数据,通过调用avcodec_alloc_frame 函数实现,由于解码的数据是YUV420 格式的,因此还需要将该数据转换成RGB 格式,因此,再次调用avcodec_alloc_frame 申请内存用来存放RGB 格式数据。