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