转-android-rtmp-ffmpeg

 

http://ask.chinaunix.net/question/897

 

http://bbs.csdn.net/topics/390724880

android 如何播放rtmp流

现在要做一个简单的播放器 需要播放rtmp流。不知道大家有没有推荐好的免费的播放器 ,可以进行二次开发的
2013-07-12 13:57 添加评论 分享

7 个回复

xike2002  – Where amazing happens!

赞同来自: wowwolfbluemoon31

Adboe的Red5流媒体服务器免费并且是开源的,与Flash搭配的时候可谓是天生一对,但使用Java和Android作为客户端调用却可谓一波三折。

Adobe的Red5源代码里有一个RTMPClient的类,这个类在使用上其实不复杂,但却没办法成功调用。观察日志,发现是连接成功后在开始创建流的时候,服务端把连接断开了。我能想到的解释就是可能公司现在所使用的Red5服务器的版本与这个RTMPClient不兼容。

国内有人把Red5的RTMPClient精简了出来作为一个开源的类库放在google的svn上,网址如下:http://code.google.com/p/android-rtmp-client/。这个类库同样也是没办法成功连接服务器。

国外还有一个收费的RTMPClient,价值是395刀。具体网址和产品的名称我就不指出了,有心人肯定会找得到。这个客户端类库很强大,使用也很方便,我注册了一个试用的key,发现能和Red5服务器成功连接并且通讯良好。

由于实在是找不到其它的方法了,而且自己去摸索实现Red5的rtmp协议这基本上不太现实,于是我反编译了一下这个类库,发现除了几个入口类之外,其它类全是混淆过的。

其中最重要的几个类是NetConnection,NetStream, License,其中NetConnection,NetStream这两个类是负责创建连接和回调服务端的数据。而License则顾名思义是负责验证有没有授权。由于按照官方给出的使用说明,在使用前必须调用License.setKey()方法传入注册所得到的key。

2013-07-19 16:16 添加评论 

2

T-Bagwell  – What’s the fucking is going on?

赞同来自: lingjiujianke

Android里面提供了Stagefright的话,应该可以参考rtsp来做的
实在不行的话,ffmpeg其实是支持rtmp的
2013-07-12 14:16 添加评论 

1

liuxuejin – 喜欢产品设计 喜欢捣蛋新技术的程序员

赞同来自: wowwolf

package demo.camera;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.widget.MediaController;
import android.widget.VideoView;
/**
* 本实例演示如何在Android中播放网络上的视频,这里牵涉到视频传输协议,视频编解码等知识点
* @author Administrator
*Android当前支持两种协议来传输视频流一种是Http协议,另一种是RTSP协议
*Http协议最常用于视频下载等,但是目前还不支持边传输边播放的实时流媒体
*同时,在使用Http协议 传输视频时,需要根据不同的网络方式来选择合适的编码方式,
*比如对于GPRS网络,其带宽只有20kbps,我们需要使视频流的传输速度在此范围内。
*比如,对于GPRS来说,如果多媒体的编码速度是400kbps,那么对于一秒钟的视频来说,就需要20秒的时间。这显然是无法忍受的
*Http下载时,在设备上进行缓存,只有当缓存到一定程度时,才能开始播放。
*
*所以,在不需要实时播放的场合,我们可以使用Http协议
*
*RTSP:Real Time Streaming Protocal,实时流媒体传输控制协议。
*使用RTSP时,流媒体的格式需要是RTP。
*RTSP和RTP是结合使用的,RTP单独在Android中式无法使用的。
*
*RTSP和RTP就是为实时流媒体设计的,支持边传输边播放。
*
*同样的对于不同的网络类型(GPRS,3G等),RTSP的编码速度也相差很大。根据实际情况来
*
*使用前面介绍的三种方式,都可以播放网络上的视频,唯一不同的就是URI
*
*本例中使用VideoView来播放网络上的视频
*/
public class InternetVideoDemo extends Activity {

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.video_view);

Uri uri = Uri.parse("rtsp://v2.cache2.c.youtube.com/CjgLENy73wIaLwm3JbT_%ED%AF%80%ED%B0%819HqWohMYESARFEIJbXYtZ29vZ2xlSARSB3Jlc3VsdHNg_vSmsbeSyd5JDA==/0/0/0/video.3gp");
VideoView videoView = (VideoView)this.findViewById(R.id.video_view);
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(uri);
//videoView.start();
videoView.requestFocus();
}
}

android 本身的播放器是不支持rtmp流的。对于rtmp流 需要自行开发。但是android 支持rtsp。

2013-07-13 13:53 添加评论 

1

yunruisammy

请参考vlc,这个播放器开源的很强大
2013-07-12 14:24 添加评论 

0

Shell_HAT  – Do all in command line

用Android NDK编译FFmpeg,RTSP手机视频
http://wenku.baidu.com/view/2a … .html
2013-07-12 14:34 添加评论 

0

无锡先 – 90后程序员

libav也许能帮上忙 http://www.libav.org/download.html
2013-07-12 14:46 添加评论 

0