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开源代码里只有声音的编码库,没有视频的编码库. |