Sipdroid中的视频通话是如何实现的?

本文介绍Sipdroid中视频传输的工作原理,包括如何发送视频数据及接收端如何观看视频。发送视频数据时,Sipdroid直接从MediaRecord中提取已编码的H264/H263数据;接收端则通过内置videoview和RTSP协议实现视频播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sipdroid中的视频原理是怎么样的?

涉及到视频传输的类是org.sipdroid.sipua.ui中的VideoCamera,VideoCameraNew,VideoCameraNew2,VideoPrewView。

首先呢,双边的视频观看,走的还是数据报包,有数据报包的ip和端口就行了。

那么发送视视频数据的方式和观看视频数据的方式是如何实现的呢?

发送视频数据就非常的巧妙了,在Android拍传的那篇文章中,采用的是获取预览帧的数据并进行发送来实现的,

详细文档见:
http://www.shouyanwang.org/thread-7-1-1.html

这种方式的弊端就是预览帧的编码特别的耗费时间,流畅性差,而且对编码器的效率的依耐性比较高。

但是Sipdroid可以直接的从MediaRecord里面已经生成好的视频数据中提取出H264/H263的数据,这些数据已经经过了相应的编码,具体的怎么实现提取H263/H264的,我会在后面说,非常牛X哦.


然后作为观看段呢?
怎么观看呢,其实观看就2行代码,
mVideoFrame.setVideoURI(Uri.parse("rtsp://"+Receiver.engine(mContext).getRemoteAddr()+"/"+
          Receiver.engine(mContext).getRemoteVideo()+"/sipdroid"));

通过内置的videoview来通过RTSP来进行播放,那么也就是说服务器会将传递的RTP的视频数据流封装成RTSP的流传递给手机的videoview来实现观看,同样也不需要解码库,真是涉及独到啊。

所以Sipdroid开源代码里只有声音的编码库,没有视频的编码库.
转自 http://www.shouyanwang.org/thread-59-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值