JMF--视频通话篇

  Java媒体框架(JMF):该核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频流。

  这里只是说模拟视频通话的过程,而关于JMF的学习介绍请另见其他文章。

  2.

JMF在处理对媒体数据方面体现了很强的功能,MyQQ的制作在这学期的前段时间已经完成了视频通话功能的模拟。语音聊天不太直观,无法截图,但其原理也和视频通话一样,只是处理的数据流不同而已。

视频聊天的过程如下:

  1.服务器VideoListener监听视频聊天请求

  (2)收到用户A请求后(A把自己的Ip和端口发给服务端)

  (3)客户端线程接收服务端发来的信息。根据信息的不同进行处理,需要处理的基本信息可能有:a.请求视频 b.撤销视频请求 c.同意视频通话 d.不同意视频通话
 
  比较服务端所有的连接

    如果用户名B和用户A请求的用户名B一样就向该用户发送用户请求,再读取用户B的回应,

    如果用户B同意语音或者视频聊天,通知用户A,此时两用户都启动两个类,一个是发送并播放自己画面的类,另一个是等待接收对方的视频流或者音频流,收到即播放。

    如果用户B不同意,将结果发回给用户A,结束此次请求

   传输过程采用RTP协议,可以处理多道数据流(混合数据流),例如可以把音频和视频流一起传输过去,在接收方接收到数据流时再进行处理,分出音频流和视频流,就可以实现在视频的同时进行语音聊天了。

 3.

下面模拟视频通话的过程:

(1) 视频服务器监听截图

(2)模拟一个ll用户登录

(3)模拟一个用户ss登录

(4)ss回应ll的视频截图   

                         

(5)ll申请与ss视频聊天反馈信息截图

(6)ss接受ll聊天请求,显示本地视频并传送数据流截图

(7) 用户ll接到ss传来的数据流,处理并播放数据流

 

  4.  

  还有一些问题没有解决,例如因为视频设备只能供一个用户使用,如果一台机器登录两个用户,并且他们都要和其他好友视频通话,就会产生抢资源的现象,这个问题依然没有解决。还有一个比较突出的是:如果一个用户同时和多个用户视频通话,上面的情况依然会发生,虽然查到资料说可以采用克隆数据源的办法来解决这个问题,但是几经尝试仍未果。腾讯QQ可以解决这样的问题,但是它究竟怎么实现的我们却不得而知。

  上面两个是比较突出的问题,如果你有解决的办法,请留下你的想法。

     5.

      如果需要代码请到CSDN下载(の,貌似CSDN有个毛病,就是刚上传的东西查看不到,所以我也不能给出网址了)-----现在可以了,http://download.csdn.net/source/2220344

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值