|
基于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平台的优化,提升解码性能。 来源:现代电子技术 作 者:廖志川 俞子荣 陈黎娟编 辑:高娟 联系电话:010-67110006-853
文章评论【查看评论()】
|
企业黄页 会议活动 |