怎么设计一个比较好的程序框架呢?
16 个解决方案
#1
要把这些客户端,连接的视频等都当作资源管理起来, 你才可以知道如果已有客户端连接,则直接向该客户端转发已经连接客户端的流数据。
这个比较繁琐,也是关键的实现,其它剩下的就是转发数据,就一socket通讯编程
这个比较繁琐,也是关键的实现,其它剩下的就是转发数据,就一socket通讯编程
#2
你的这种想法只能自己实现了。估计有难度。可以一起讨论一下。
#3
请有经验的人指教,指点下程序架构或者用到的技术
#4
1.用一个线程来监听客户端的连接
当有客户端到来时,该客户端的socket使用完成端口,如果是首次请求该通道的流数据,与设备进行连接, 此socket也使用完成端口2
2.在iocp线程里接收数据,把接收到的数据和该端口的信息保存在队列中,在信息中需要设置一个数据方向的变量,这样做是可以判断该数据是客户端过来的还是设备发过来的数据。
3.在使用一个线程从队列中取数据,解析数据,把任务交给线程池处理(对数据进行解析,进行逻辑处理,这里的逻辑处理还是很复杂的,不好做呀)
变量主要有clientSocket,deviceSocket,nMsgType, msgQueue。还需要什么变量呢
因为首次使用iocp。我这样的想法能实现么。请有经验之人指点
当有客户端到来时,该客户端的socket使用完成端口,如果是首次请求该通道的流数据,与设备进行连接, 此socket也使用完成端口2
2.在iocp线程里接收数据,把接收到的数据和该端口的信息保存在队列中,在信息中需要设置一个数据方向的变量,这样做是可以判断该数据是客户端过来的还是设备发过来的数据。
3.在使用一个线程从队列中取数据,解析数据,把任务交给线程池处理(对数据进行解析,进行逻辑处理,这里的逻辑处理还是很复杂的,不好做呀)
变量主要有clientSocket,deviceSocket,nMsgType, msgQueue。还需要什么变量呢
因为首次使用iocp。我这样的想法能实现么。请有经验之人指点
#5
参考RealNetworks公司的rtspproxy2.0源代码
可用的框架有ACE,但实现RTSP等协议也很麻烦
http://www.critchley.biz/Manual/rtspproxy.htm
可用的框架有ACE,但实现RTSP等协议也很麻烦
http://www.critchley.biz/Manual/rtspproxy.htm
#6
转发服务器的关键就在于做好proxy上端口与client、server各端口之间的映射关系,从某一个端口接受数据,如果知道应当将该数据转发到对应的你的哪个端口去,这就是你第一步需要设计和考虑的地方。其二,你要做的就是考虑处理RTSP交互请求中相应字段的修改,包括URI中的IP地址,以及各个port信息的修改等;其三,就是考虑状态同步问题,对于server端的反馈,有些时候并不是一次数据接受就能接受完整的,例如DESCRIBE的反馈。这个时候你需要考虑连续两次数据接受时所反映的该条流的当前状态变化情况,才做相应的处理。其四,考虑转发服务器的性能。我不清楚你是否需要转发RTP数据包,如果需要的话,如何提高你的RTP数据包转发性能是影响整个转发服务器整体性能的关键因素之一。
#7
确实如lday所说,需要考虑如上的问题。RTP数据包也是需要转发的
目前在client和server端口间的映射还有点问题,处理的比较复杂,设计结构不是很好
整个框架就是在IOCP工作线程里接收数据,数据放到队列里。然后用线程取出来,然后再转发给需要的客户端
目前在client和server端口间的映射还有点问题,处理的比较复杂,设计结构不是很好
整个框架就是在IOCP工作线程里接收数据,数据放到队列里。然后用线程取出来,然后再转发给需要的客户端
#8
基本是正确的,这样做。
客户端连接server后,server去连接设备(第一次的时候),此时server要建立2个队列,一个管理设备,一个管理客户端,同时,连接每个设备对应的客户端也要有个队列。此后就是收发数据了,客户端把请求发给server,server发给设备,设备返回数据给server,server发给客户端,具体怎么收发,根据你建立的队列就知道了。
另外,我想请问下,能不能告诉我下如何用rtsp来传输h264的视频流,然后给vlc.就是vlc请求播放rtsp形式的h264视频流,如何实现呢?谢谢!
#9
to sun007700:
没具体研究过RTSP传输h264的视频流,建议抓包看看具体情况,印象中,用Windows Media Player做客户端,在网络中选择TCP传输,在点播wmv的时候,就直接将数据文件也嵌在RTSP数据包里面了,可能和传h.264有些相似,可以参考以下。
没具体研究过RTSP传输h264的视频流,建议抓包看看具体情况,印象中,用Windows Media Player做客户端,在网络中选择TCP传输,在点播wmv的时候,就直接将数据文件也嵌在RTSP数据包里面了,可能和传h.264有些相似,可以参考以下。
#10
可以的
#11
现在就是性能跟不上
#12
有现成的代码和文档,感兴趣可以和我联系,免费
#13
除了上面谈到的内容,要想实现高性能,还需要做到两点内容。
一是需要有一个高精度的定时器用于任务调度,精确控制。
二是必须对视频解码本身有深刻的理解,每个节目源都有自己的码率,这就要求你要能够根据这个码率及其它流信息算出服务器端发送数据包的速度。发送速度快了会撑死客户端,速度慢了画面又不流畅。而获取这些编码信息因不同的封装方法和不同的编码条件都是不同的。
一是需要有一个高精度的定时器用于任务调度,精确控制。
二是必须对视频解码本身有深刻的理解,每个节目源都有自己的码率,这就要求你要能够根据这个码率及其它流信息算出服务器端发送数据包的速度。发送速度快了会撑死客户端,速度慢了画面又不流畅。而获取这些编码信息因不同的封装方法和不同的编码条件都是不同的。
#14
软件供应流媒体转发服务器,端口转发服务器,可实现视频设备集中管理,视频转发
开发平台 VS2005 VC windows平台
系统容量,最大支持管理机器和客户端可自定义,端口可配置
系统工作原理,视频单板运行的时候自动注册到服务器,服务器为单板分配资源,
当客户端视频观看请求的时候服务器自动请求单板,并且将视频流实时转发到客户端,
当多个客户端同时请求一个设备的时候,服务器自动实现视频流再服务器的复制,节省单板的带宽,
客户端可实现用户管理,可查看在线客户。
联系方式:
mail: wangzaixia@gmail.com
web: http://www.easycdma.cn
phone:028-85287381
汪先生:13208176277
陈先生:13548025254
地址:成都市郭家桥西街9号海德花苑C栋9A
开发平台 VS2005 VC windows平台
系统容量,最大支持管理机器和客户端可自定义,端口可配置
系统工作原理,视频单板运行的时候自动注册到服务器,服务器为单板分配资源,
当客户端视频观看请求的时候服务器自动请求单板,并且将视频流实时转发到客户端,
当多个客户端同时请求一个设备的时候,服务器自动实现视频流再服务器的复制,节省单板的带宽,
客户端可实现用户管理,可查看在线客户。
联系方式:
mail: wangzaixia@gmail.com
web: http://www.easycdma.cn
phone:028-85287381
汪先生:13208176277
陈先生:13548025254
地址:成都市郭家桥西街9号海德花苑C栋9A
#15
看看,正需要了解这方面的内容。
#16
我也正在找这方面的资料,谁有相关的资料
#1
要把这些客户端,连接的视频等都当作资源管理起来, 你才可以知道如果已有客户端连接,则直接向该客户端转发已经连接客户端的流数据。
这个比较繁琐,也是关键的实现,其它剩下的就是转发数据,就一socket通讯编程
这个比较繁琐,也是关键的实现,其它剩下的就是转发数据,就一socket通讯编程
#2
你的这种想法只能自己实现了。估计有难度。可以一起讨论一下。
#3
请有经验的人指教,指点下程序架构或者用到的技术
#4
1.用一个线程来监听客户端的连接
当有客户端到来时,该客户端的socket使用完成端口,如果是首次请求该通道的流数据,与设备进行连接, 此socket也使用完成端口2
2.在iocp线程里接收数据,把接收到的数据和该端口的信息保存在队列中,在信息中需要设置一个数据方向的变量,这样做是可以判断该数据是客户端过来的还是设备发过来的数据。
3.在使用一个线程从队列中取数据,解析数据,把任务交给线程池处理(对数据进行解析,进行逻辑处理,这里的逻辑处理还是很复杂的,不好做呀)
变量主要有clientSocket,deviceSocket,nMsgType, msgQueue。还需要什么变量呢
因为首次使用iocp。我这样的想法能实现么。请有经验之人指点
当有客户端到来时,该客户端的socket使用完成端口,如果是首次请求该通道的流数据,与设备进行连接, 此socket也使用完成端口2
2.在iocp线程里接收数据,把接收到的数据和该端口的信息保存在队列中,在信息中需要设置一个数据方向的变量,这样做是可以判断该数据是客户端过来的还是设备发过来的数据。
3.在使用一个线程从队列中取数据,解析数据,把任务交给线程池处理(对数据进行解析,进行逻辑处理,这里的逻辑处理还是很复杂的,不好做呀)
变量主要有clientSocket,deviceSocket,nMsgType, msgQueue。还需要什么变量呢
因为首次使用iocp。我这样的想法能实现么。请有经验之人指点
#5
参考RealNetworks公司的rtspproxy2.0源代码
可用的框架有ACE,但实现RTSP等协议也很麻烦
http://www.critchley.biz/Manual/rtspproxy.htm
可用的框架有ACE,但实现RTSP等协议也很麻烦
http://www.critchley.biz/Manual/rtspproxy.htm
#6
转发服务器的关键就在于做好proxy上端口与client、server各端口之间的映射关系,从某一个端口接受数据,如果知道应当将该数据转发到对应的你的哪个端口去,这就是你第一步需要设计和考虑的地方。其二,你要做的就是考虑处理RTSP交互请求中相应字段的修改,包括URI中的IP地址,以及各个port信息的修改等;其三,就是考虑状态同步问题,对于server端的反馈,有些时候并不是一次数据接受就能接受完整的,例如DESCRIBE的反馈。这个时候你需要考虑连续两次数据接受时所反映的该条流的当前状态变化情况,才做相应的处理。其四,考虑转发服务器的性能。我不清楚你是否需要转发RTP数据包,如果需要的话,如何提高你的RTP数据包转发性能是影响整个转发服务器整体性能的关键因素之一。
#7
确实如lday所说,需要考虑如上的问题。RTP数据包也是需要转发的
目前在client和server端口间的映射还有点问题,处理的比较复杂,设计结构不是很好
整个框架就是在IOCP工作线程里接收数据,数据放到队列里。然后用线程取出来,然后再转发给需要的客户端
目前在client和server端口间的映射还有点问题,处理的比较复杂,设计结构不是很好
整个框架就是在IOCP工作线程里接收数据,数据放到队列里。然后用线程取出来,然后再转发给需要的客户端
#8
基本是正确的,这样做。
客户端连接server后,server去连接设备(第一次的时候),此时server要建立2个队列,一个管理设备,一个管理客户端,同时,连接每个设备对应的客户端也要有个队列。此后就是收发数据了,客户端把请求发给server,server发给设备,设备返回数据给server,server发给客户端,具体怎么收发,根据你建立的队列就知道了。
另外,我想请问下,能不能告诉我下如何用rtsp来传输h264的视频流,然后给vlc.就是vlc请求播放rtsp形式的h264视频流,如何实现呢?谢谢!
#9
to sun007700:
没具体研究过RTSP传输h264的视频流,建议抓包看看具体情况,印象中,用Windows Media Player做客户端,在网络中选择TCP传输,在点播wmv的时候,就直接将数据文件也嵌在RTSP数据包里面了,可能和传h.264有些相似,可以参考以下。
没具体研究过RTSP传输h264的视频流,建议抓包看看具体情况,印象中,用Windows Media Player做客户端,在网络中选择TCP传输,在点播wmv的时候,就直接将数据文件也嵌在RTSP数据包里面了,可能和传h.264有些相似,可以参考以下。
#10
可以的
#11
现在就是性能跟不上
#12
有现成的代码和文档,感兴趣可以和我联系,免费
#13
除了上面谈到的内容,要想实现高性能,还需要做到两点内容。
一是需要有一个高精度的定时器用于任务调度,精确控制。
二是必须对视频解码本身有深刻的理解,每个节目源都有自己的码率,这就要求你要能够根据这个码率及其它流信息算出服务器端发送数据包的速度。发送速度快了会撑死客户端,速度慢了画面又不流畅。而获取这些编码信息因不同的封装方法和不同的编码条件都是不同的。
一是需要有一个高精度的定时器用于任务调度,精确控制。
二是必须对视频解码本身有深刻的理解,每个节目源都有自己的码率,这就要求你要能够根据这个码率及其它流信息算出服务器端发送数据包的速度。发送速度快了会撑死客户端,速度慢了画面又不流畅。而获取这些编码信息因不同的封装方法和不同的编码条件都是不同的。
#14
软件供应流媒体转发服务器,端口转发服务器,可实现视频设备集中管理,视频转发
开发平台 VS2005 VC windows平台
系统容量,最大支持管理机器和客户端可自定义,端口可配置
系统工作原理,视频单板运行的时候自动注册到服务器,服务器为单板分配资源,
当客户端视频观看请求的时候服务器自动请求单板,并且将视频流实时转发到客户端,
当多个客户端同时请求一个设备的时候,服务器自动实现视频流再服务器的复制,节省单板的带宽,
客户端可实现用户管理,可查看在线客户。
联系方式:
mail: wangzaixia@gmail.com
web: http://www.easycdma.cn
phone:028-85287381
汪先生:13208176277
陈先生:13548025254
地址:成都市郭家桥西街9号海德花苑C栋9A
开发平台 VS2005 VC windows平台
系统容量,最大支持管理机器和客户端可自定义,端口可配置
系统工作原理,视频单板运行的时候自动注册到服务器,服务器为单板分配资源,
当客户端视频观看请求的时候服务器自动请求单板,并且将视频流实时转发到客户端,
当多个客户端同时请求一个设备的时候,服务器自动实现视频流再服务器的复制,节省单板的带宽,
客户端可实现用户管理,可查看在线客户。
联系方式:
mail: wangzaixia@gmail.com
web: http://www.easycdma.cn
phone:028-85287381
汪先生:13208176277
陈先生:13548025254
地址:成都市郭家桥西街9号海德花苑C栋9A
#15
看看,正需要了解这方面的内容。
#16
我也正在找这方面的资料,谁有相关的资料