Warm tip: This article is reproduced from serverfault.com, please click

其他-开发适用于Android的流服务器

(其他 - Developing A Streaming Server For Android)

发布于 2011-04-05 22:48:09

我正在尝试开发流式AV媒体服务器,以与Android手机作为客户端一起使用。这立即限制了我开发使用RTSP的服务器的限制。我精通Java编程,并且发现Netty(Java NIO)可用于填补Java Media Framework中该协议的其他空白。我玩过它,但没有真正的成功。我知道live555,但是我的时间表很紧,我真的不希望开始使用C ++,因为对此我知之甚少。我已经在这个问题上坚持了很多周,没有什么可证明的。由于Android市场上有许多专有应用程序,因此必须能够流式传输到android。可以请具有此主题经验和知识的人让我知道是否有一种简单的方法来实现RTSP AV媒体服务器,该服务器仅流.mp4或.3gp和.mp3以便与android一起使用,而无需使用live555库。如果没有,我将只需要快速掌握C ++。先感谢你。

Questioner
user673090
Viewed
11
Squonk 2011-04-06 08:43:26

好的,就这么简单,可以使用HTTP进行流式传输。

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

顺便说一句,当我最初开始使用Shoutcast流时,它称为SimpleNetRadio。

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使用更多的代码来执行此操作-它可以更好地处理错误情况,并且不需要进行更多工作。