开发适用于Android的流媒体服务器

时间:2011-04-05 22:48:10

标签: android streaming rtsp

我正在尝试开发一个Streaming AV媒体服务器,用于Android手机作为客户端。这立刻限制了我开发使用RTSP的服务器。我精通Java编程,并发现Netty(Java NIO)可以用来填补Java协议中Java Media Framework的巨大空白。我玩过它并没有取得真正的成功。我知道live555,但我的时间紧迫,并不是真的想开始搞乱C ++,因为我对这个问题知之甚少。我已经坚持这个问题好几个星期了,并没有真正表现出来。由于Android市场上有许多专有应用程序,因此必须可以流式传输到Android。如果有一个简单的方法来实现一个简单的方法来实现一个流式传输.mp4或.3gp和.mp3的RTSP AV媒体服务器,以便在不使用live555库的情况下与android一起使用,请告诉我是否有关于此主题的经验和知识的人。如果不是,我将不得不快速加快C ++的速度。先感谢您。

3 个答案:

答案 0 :(得分:2)

好的,这很简单,可以使用HTTP流式传输。

我在WinXP上使用IIS创建了一个名为“Music”的虚拟文件夹,并将其指向包含mp3文件的文件夹。这是流式传输文件所需的完整活动(名称为硬编码)。

顺便说一下,它叫做SimpleNetRadio,因为我最初开始玩Shoutcast流。

package com.mycompany.SimpleNetRadio;

import android.app.Activity;
import android.media.AsyncPlayer;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;

public class SimpleNetRadio extends Activity
{
    private AsyncPlayer ap = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    protected void onStart() {
        super.onStart();
        ap = (AsyncPlayer) getLastNonConfigurationInstance();
    }

    @Override
    protected void onStop() {
        super.onStop();
        if (ap != null)
            ap.stop();
    }

    @Override
    protected void onResume() {
        super.onResume();

        if (ap == null) {
            ap = new AsyncPlayer("Simple Player");
            ap.play(this, Uri.parse("http://192.168.1.1/Music/02%20-%20Don't%20Stop%20Believin'.mp3"), true, AudioManager.STREAM_MUSIC);
        }
    }

    @Override
    public Object onRetainNonConfigurationInstance() {
        return ap;
    }
}

您还应该能够使用更多代码对MediaPlayer执行此操作 - 它可以更好地处理错误情况,并且不需要更多工作。

答案 1 :(得分:1)

使用Netty开发RTSP流媒体服务器是一项非常直接的任务,并且不会占用太多时间。我自己写了它,它就像一个魅力。您可以使用Netty框架查看其他服务器的示例实现,以便开始使用。

答案 2 :(得分:0)

我不确定您的具体需求是什么,但对于静态文件,您可能会尝试将Amazon S3与CloudFront结合使用,我相信它支持RTSP。