首页 >> 通信技术 >> 要闻 >> 正文
 
基于ARM的移动视频监控终端设计与实现[图]
http://www.cww.net.cn   2012年8月1日 13:30    

利用ffmpeg的API函数进行视频流解码,先做好解码前的准备工作。调用av_register_all()函数注册所有的文件格式和编解码器的库,也可以只注册特定的解码器。关于解码器的信息在AVCodecContext结构体中,它包含解码器所有信息,查找H.264解码器CODEC_ID_H264,通过avcodec_open()函数打开解码器。用avcodec_alloc_frame()函数分配一帧的存储空间,存储解码后输出的数据。

在双向链表中已经保存了接收的视频流,从链表头读取NALU进行解码,每读取一个NALU将链表头指向下一个单元,释放已读取NALU占有的内存。NALU的头信息定义了视频流所属类型,一般包括增强信息(SEI)、序列参数集(SPS)、图像参数集(PPS)、条带(Slice)等。先将SPS、PPS参数集通过解码器解码出来设置解码图像尺寸、片组数、参考帧数、量化和滤波参数等。依次从链表头读取NALU,调用avcodec_decode_ video()函数解码输出到分配的存储空间,当完成一帧的解码,就需要对解码后的图像显示到液晶屏。解码输出的图像格式为YUV420P,可以采用ffmpeg提供的sws_seale()把图像格式转换为RGB格式显示,也可以采用其他SDL之类的库直接YUV覆盖显示。整个解码流程如图5所示。

  3 结语

系统采用S3C2440硬件平台和嵌入式Linux操作系统相结合,设计了移动视频监控终端,重点阐述了用RTP协议在网络中通过套接字传输视频流,结合开源解码库ffmpeg实时解码H.264视频流的解决方案。经测试,对于QCIF分辨率监控画面具有较好的实时性和可靠性。当视频分辨率增大时,解码器的解码性能成为视频监控终端的瓶颈。因此,本文的后续工作就是针对ffmpeg解码库在ARM9平台的优化,提升解码性能。通信世界网

[1]  [2]  [3]  
来源:现代电子技术   作 者:廖志川 俞子荣 陈黎娟编 辑:高娟    联系电话:010-67110006-853
分享到新浪微博 分享到搜狐微博 分享到腾讯微博 分享到网易微博 分享到139说客 分享到校内人人网 分享到开心网 分享到QQ空间 分享到豆瓣 分享到QQ书签       收藏   打印  论坛   推荐给朋友
关键字搜索:NALU  视频监控  监控终端  实时解码  视频数据  
文章评论查看评论()
昵称:  验证码:
 
相关新闻
即时新闻
通信技术
最新方案
企业黄页
会议活动