我见过很多使用安卓的RTSP从外部服务器向设备流式传输数据的例子( VideoVIew内部使用VideoView和RTSP栈来接收数据)。然而,很少有人讨论使用android内部的RTSP和RTP堆栈来实现服务器功能的可能性,即让android设备充当流媒体服务器和流媒体输出。有可能吗?在Android原生代码中,我可以从哪里开始挖掘以实现这样的功能?会喜欢细节的。
谢谢阿米特
发布于 2013-01-30 20:45:14
有点晚了,但是:
您可以将MediaRecorder输出格式设置为"7“。这在中有定义
/framework/base/media/java/android/media/MediaRecorder.java
请查看详细信息
作为:
/** @hide Stream over a socket, limited to a single stream */
public static final int OUTPUT_FORMAT_RTP_AVP = 7;
通过setprop streaming.ip和setprop streaming.port可以控制目的地
然后,AV数据将被流式传输到给定的目的地址。
RTP代码(本机)本身位于
/frameworks/base/media/libstagefright/rtsp directory.
愉快的代码挖掘
发布于 2016-11-02 23:21:06
也有可能使用库(https://github.com/fyhertz/libstreaming)
Github上的文档给出了如何设置服务器的示例,但基本上您需要将net.majorkernelpanic.streaming.gl.SurfaceView添加到布局中
<net.majorkernelpanic.streaming.gl.SurfaceView
android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
将此添加到您的清单中
<service android:name="net.majorkernelpanic.streaming.rtsp.RtspServer"/>
包括libstreaming库。如果您使用的是较新版本的Android Studio,则需要将libstreaming克隆为一个单独的项目并导入模块。之后,有必要在libstreaming中的build.gradle上运行build。然后你就可以使用这个库了。
最后一步是创建一个活动。最简单的可能如下所示:
public class RemoteStreamingActivity extends Activity {
private SurfaceView mSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_remote_streaming);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
handleGestures();
mSurfaceView = (SurfaceView) findViewById(R.id.surface);
SessionBuilder.getInstance()
.setSurfaceView(mSurfaceView)
.setPreviewOrientation(90)
.setContext(getApplicationContext())
.setAudioEncoder(SessionBuilder.AUDIO_NONE)
.setVideoEncoder(SessionBuilder.VIDEO_H264);
this.startService(new Intent(this,RtspServer.class));
}
@Override
public void onDestroy() {
super.onDestroy();
this.stopService(new Intent(this, RtspServer.class));
}
}
如果您想测试rstp服务器是否正在运行,可以尝试使用VLC并通过URL: rstp://{ipAddressOfYourDevice}:8086?h264=200-20-320-240进行连接
https://stackoverflow.com/questions/13754806
复制相似问题