牛人对RTSP的android实现

原创 2012年03月27日 18:59:24

1.学习rtsp的一点心得   发表于 2011-6-15 


rtsp初步来说分为两阶段:
第一阶段:

客户端和rtsp服务器端进行交互,也就是术语中所说的会话阶段

第二阶段:
流媒体数据交互阶段,将数据按照rtp+rfc3984拆包由流媒体服务器发送到播放器客户端,然后客户端这边重新组包

上面的理解的比较的肤浅,我本人是用VLC和自己写的程序在自己的电脑上做的测试。

现在要跟大家说的核心,是数据发送的协议问题,这个协议指的是UDP还是TCP的Stream模式。

最初我是这样认为的:
RTSP走UDP形式,所以最先开始,我直接在在vlc中调用rtsp://192.168.1.143:2725这样,然后在用JAVA写了个监听程序来监听2725端口,但是压根就没有数据过来,于是我猜测难不成走的是tcp形式,于是我用ServerSocket来监听2725的端口,重新用VLC来了一次,令我惊奇的是,接受到了数据:

ESCRIBE rtsp://120.197.4.28:554/ RTSP/1.0
CSeq: 3
User-Agent: LibVLC/1.1.9 (LIVE555 Streaming Media v2011.01.06)
Accept: application/sdp

后来用wireshark抓包分析了很多码流,得出了结论:
在RTSP的会话阶段用的走的TCP协议,或者专业术语叫RTSP协议,然后具体的到了数据交互的过程中的时候,就走的是UDP的形式了或者专业术语叫做RTP协议.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2. 如何在手机内部搭建RTSP服务器?   发表于 2011-6-20 

今天给大家讲解下,如何在手机内部搭建RTSP服务器,今天初步了解了下,要实现该功能是完成没有问题的,为此我写了一个小demo:

在之前请大家先看下
http://www.shouyanwang.org.sixxs.org/thread-238-1-1.html

package org.zhangkai.postdata;
import java.io.IOException;

import java.io.InputStream;

...


+++++++++++++++++++++++++++++++++++


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3. android手机内部RTSP服务器搭建成功   发表于 2011-7-3 

昨天写代码写到23点左右的时候,终于攻克了这个技术难点,成功在手机内部构建了一个RTSP服务器,硬编+硬解完美的结合起来。

在运用的过程中碰到非常多的技术难点。

在这里有一个非常重要的技术难点需要说明下,


2个核心技术

1.SDP会话阶段的交互
这个我已经发表了帖子,我写了一篇文章,叫如何在手机内部构建RTSP服务器

2.然后就是JAVA的RFC3984拆H264数据包,这个我已经开源了,源码就在同一栏目。

这2个文件我分散了,大家自己找吧,找到了就可以实现手机内部硬解,还可以提升自己的技术。


4. Android 手机内部RTSP服务器初步搭建成功  发表于 2011-10-5


再原有代码和live555服务器的基础,经过简单的加工,手机内部RTSP服务器已经能够看到效果了,现在就剩下优化和适配了。因为用DDMS截图,截取的是黑屏,所以没法让大家看效果图呢。


实现这个东东有2个非常大的好处:
1.同时支持N个请求,借助手机内置的VideoView,可以同时实现4-6个ViewoView发送RTSP请求
2.直接调用手机硬件的解码,无需自己写任何解码库
3.简单,对比手机H264解码库而言,这个代码即使再复杂也可以控制在8K左右的代码,目前也就不超过1000行左右的代码量,本人对RTSP服务器经过大量的精减,而且因为手机内部,很多问题压根就不需要考虑,比如最令人烦躁的UDP穿透问题。

5.  Android rtsp 硬解-代码一下载    发表于 2011-10-25 

今天给大家上传一下所谓的android硬解。

其实就是借助VideoView来做给android手机的本地回环地址发送RTSP请求,然后我自己在将H264数据封装为RTSP能够识别的码流,这样VideoView就能够播放成功。


但是其实这个并不能称之为硬解。

因为手机依然是调用opencore的解码库去解码的,其实实质上应该还是软解,但是底层具体怎么整的,我们这里就不猜测了。

目前的代码,我就在自己的三星i9000上测试成功了,其余的都没测试成功过,原因在于RTCP。

客户端判断服务器是否断开的原因就是发送RTCP,然后等待返回RTCP包,如果客户端发送了N次服务器都没返回,那么客户端就认为已经断开了。

这份源码是不全的,但是有一个作用,就是打开 所谓android硬解的大门,对大家有绝对的引导作用.


+++++++++++++++++++++++++++++++++++++++

大牛啊  膜拜其余相关文章地址:http://www.shouyanwang.org.sixxs.org/home-space-do-thread.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android视频直播的实现(推流完整实现001)

http://blog.csdn.net/huaxun66/article/details/53427771  http://blog.csdn.net/huaxun66/article/d...
  • STN_LCD
  • STN_LCD
  • 2017年02月20日 14:13
  • 23640

Android视频推流直播学习【二】

现在已经对spydroid的项目有了大致的了解,接着我会分析一些重要的类。 首先是Session类,这个类主要有两个重要成员:AudioStream和VideoStream,通过该类可以初始化音视频...
  • w815878564
  • w815878564
  • 2016年03月20日 23:49
  • 2273

android直播rtmp推流工具

  • 2016年04月01日 15:56
  • 7.28MB
  • 下载

Android视频直播的实现

最近一段时间,视频直播可谓大火。在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等。本文要讲解的是如何使用一系列免费工具,打造一套视频直播方案。 视频直...
  • huaxun66
  • huaxun66
  • 2016年12月01日 22:33
  • 23422

Android版rtsp直播demo

  • 2016年06月22日 15:45
  • 680KB
  • 下载

将EasyRTMP_RTSP移植到Android平台实现的RTSP拉流转推RTMP直播流功能

本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/73253044前言安防互联网化的需求已经越来越...
  • xiejiashu
  • xiejiashu
  • 2017年06月15日 17:00
  • 1645

直播Android推流外部数据采集

有些研发能力比较强的客户,会有自定义图像处理的需求(比如自定义图像滤镜),同时又希望复用rtmp sdk的整体流程,如果是这样,您可以按照如下攻略进行定制。 Step1. 实现一个图像处理的so...
  • lipengshiwo
  • lipengshiwo
  • 2016年11月16日 18:38
  • 1265

Android利用ffmpeg产生推流

目标 在安卓手机客户端有一个视频文件,利用ffmpeg产生推流。 借助nginx-rtmp-module推送给另一台安卓手机。 另一台安卓手机播放这个视频流。 本次实验重点是第一步,即利用ffmp...
  • YongYu_IT
  • YongYu_IT
  • 2017年05月10日 14:31
  • 989

大牛直播最新版Android rtmp推送、RTMP/RTSP播放器demo

  • 2017年08月03日 10:41
  • 41.74MB
  • 下载

Android视频推流直播学习【四】

前面已经分析完客户端和服务器的RTSP会话连接,下面就进入推流阶段,也就是客户端向服务器发送音视频数据。这里就暂时只分析视频了,音频也是差不多的。 首先是VideoStream类,这个类和Audio...
  • w815878564
  • w815878564
  • 2016年03月24日 22:30
  • 1790
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:牛人对RTSP的android实现
举报原因:
原因补充:

(最多只允许输入30个字)