基于DirectShow的嵌入式Linux视频监控系统

时间:2026-01-23

基于DirectShow的嵌入式Linux视频监控系统

文章编号!!""#$%&’#"#""!#"#$""%&$’&

基于!"#$%&’()*的#实用设计#

嵌入式+",-.视频监控系统

赵石磊!严国萍

"华中科技大学电子与信息工程系!湖北武汉(&)"!(#

$摘

要%提出一套完整的嵌入式*+,-.视频监控系统!被监控端建立在嵌入式*+,-.系统下!监控端系统建立在/+,0123系统

下!基于4+56789:12技术完成!并介绍被监控端涉及的多线程问题和监控端的4+56789:12技术和双缓冲技术"$关键词%4+56789:12技术#多线程#互斥锁#双缓冲队列技术#过滤器$中图分类号%;<=!!

$文献标识码%>

/,012$33$3+",-.4"3$)51),"&)#",6’78&91:;893),<"#9%&’()*

?@AB9:+$C6+&DAEF-1$G+,H

"!"#$%&’"(&)*+,"-&%)(.-/01(*)%’2&.)(+(3.(""%.(3&45267)(38(.9"%/.&:)*;-."(-"0<"-7(),)3:&=572(>?@@A>&B7.($’

$/28&#;%&%;:+3GIG65+,8510-763I,6JK60060J-C8+J60+I3-5L6+CCI,763M386JKI3601,4+56789:12867:,1C1HMN;:6365L653+06+3

K-+C81,8:6*+,-.3M386JI,08:67C+6,83+06+3K-+C81,8:6/+,01233M386J8:I8+3I771JGC+3:60KM4+56789:12867:,1C1HMN;:+3GIG65JI+,CM+,8510-7638:6J-C8+8:56I0G51KC6J+,L1CL60I88:6365L653+06&8:64+56789:12867:,1C1HMI,08:601-KC6OK-PP65C+38867:,1C1HM+,L1CL60I88:67C+6,83+06N

$=97*)#>8%4+56789:12(J-C8+8:56I0(J-86.C17Q(01-KC6$K-PP65C+38867:,1C1HM(P+C865

#

引言

立的数据结构类!

笔者提出了一套基于4+56789:12技术的嵌入式*+,(

7CI33R4I8IA0J+,Z-.视频监控系统)本系统包括客户端和服务器端)客户G51867860[

端也就是监控端&包括视频数据的接收*解码播放&它运R;MG60<85*+38\R<85*+38&<U<]FX^<AR_‘4I8I*+38(行在<R机上&基于4+56789:12技术&用SR编写而成(服R;MG60<85*+38\R<85*+38&<U<]FX^<AR_‘<11C*+38(务器端也就是被监控端&包括视频的采集*视频的编码压G-KC+7[

缩*视频的网络发送&服务器端系统运行在ATU嵌入式R4I8IA0J+,"’(试验版上&用*+,-.R编写而成)

L+58-ICaR4I8IA0J+,"’(

L1+0968VC-3:+,H"K11C+,VC-3:b85-6’(=

系统设计与实现

K11Cc3VC-3:+,H"L1+0’(?@A客户端dd*+38I0J+,+385I86+,8T6368*+38"L1+0’(=N#N#

准备工作

+,8F68*+389+e6"L1+0’(

从网络上接收压缩的图像数据&为避免网络抖动的

<U<]FX^<AR_F684I8I>-PP65"L1+0’(

影响&需要进行缓冲&为此&建立了一种专门的数据结构+,8T6C6I364I8I>-PP65"<U<]FX^<AR_G4I8I’("R4I8IA0J+,’&让接收到的数据都先转换成此数据结<U<]FX^<AR_F68/5+86>-PP65"L1+0’(

构&其原理是利用双缓冲队列技术建立两个队列!一个是+,8T6C6I36/5+86>-PP65"<U<]FX^<AR_G4I8I’(空闲的缓冲队列<11*+38&用于接收存放数据(另一个是f

尚未处理的数据缓冲队列4I8I*+38下面是接收前的准备工作&等待后续V+C865读!

<U<]FX^<AR_G4I8IbJ^G4I8I*+38O‘F68/5+86>-PP65"’(dd取得取)当91-576V+C865从网上接收到数据后&从<11*+38队数据缓冲区地址

列的头上取出一个缓冲块&存放数据&然后将这个缓冲块G4I8Ib,62U<]FX^<AR_(dd分配数据缓冲区

加入到4I8I*+38的尾部&等待后续V+C865读取&而在9GC+8(

=NXN=数据的接收

865要求读取时&91-576V+C865会从4I8I*+38队列的头上构建完客户端系统中所用到的数据结构后&就开始

取出一个缓冲块&读取数据&再将读完的缓冲块加到

数据的接收)笔者在RU60+I917Q68RC+6,8[[T676+L+,H*11G<11*+38的尾部&等待再一次的数据接收WXY)下面是笔者建

函数中实现了视频原始数据的接收&

在本函数中完成了

万方数据

!"

基于DirectShow的嵌入式Linux视频监控系统

数据缓冲区的分配!数据的接收及数据格式的转换"下面是接收数据的关键代码#

!"#$%&’$#()"*+’,%-#’.,//0’*’#!#.12""3$!"#$%4#.,.5’,67&

#.,.&819:3’;7&#.,.<(,(2’.;7&

*=(5>?@@A8#B’"@’&)CDEFG<F0%H&IFCJDIG%KD)LMFN&

O=#-’’PD>0’*’#!#.1%

4

I&)CDEFG<F0

3&81;’I&)CDEFG<F0%>?@@&

.&819:3’;3&81QR.&819:3’&.<(,(2’.;3&81QR.<(,()#B’&#@’.<(,(2’.R7%4

8O#,*=’.&819:3’%4

*(8’<G9GD&F<LG/

#@’PD2"*(-S#-’%4

PD2"*(-S#-’QRT5#,’’>?@@!&IFCJDIG%KD)LMF%&U

#@’PD3<(,(2#8,%4

I&IFCJDIG%K

3<(,(;PD3<(,(2#8,QR

C’,T5#,’V?@@’5’%&

#@’3<(,(;;WX22YYPD3<(,(2#8,QR

C’,2#8,)#B’’%ZIG%KD&G[D%\XW9%]]

4

3<(,(6.’O&IFCJDIG%K&U

#@’3<(,(^6WX22%4

P’P*3:’3<(,(!>?@@!.<(,(2’.%&PD3<(,(2#8,QR0’-’(8’T5#,’V?@@’5’3<(,(%&U

PD$O0’*!%"?.,HH&

#@’’PD$O0’*!%"?.,R6IG%KDLWL9D%\XW9%

YY

^PD>C5(3=),(5,’$%

]]当接收到的包的数量达到IG%KDLWL9D%\XW9时!则开始播放

4

__)’,F!’.,’PD3<(,(2#8,QRPD=V?@F."?1=%&PD>C5(3=),(5,’$;,5?’&UU>5’(+&UU

#@’PD3<(,(2#8,%4

PD3<(,(2#8,QR)’,S-?8=#.1’%&

!"

!""!年第"#卷第#期!总第!$!期

"

万方数据

UU

‘aJab数据的解码播放

利用 …… 此处隐藏:6056字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于DirectShow的嵌入式Linux视频监控系统.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219