首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在android设备上使用RTSP服务器的可能性是什么?

在android设备上使用RTSP服务器的可能性是什么?
EN

Stack Overflow用户
提问于 2012-12-07 07:56:03
回答 2查看 1.6K关注 0票数 3

我见过很多使用安卓的RTSP从外部服务器向设备流式传输数据的例子( VideoVIew内部使用VideoView和RTSP栈来接收数据)。然而,很少有人讨论使用android内部的RTSP和RTP堆栈来实现服务器功能的可能性,即让android设备充当流媒体服务器和流媒体输出。有可能吗?在Android原生代码中,我可以从哪里开始挖掘以实现这样的功能?会喜欢细节的。

谢谢阿米特

EN

回答 2

Stack Overflow用户

发布于 2013-01-30 20:45:14

有点晚了,但是:

您可以将MediaRecorder输出格式设置为"7“。这在中有定义

/framework/base/media/java/android/media/MediaRecorder.java

请查看详细信息

作为:

代码语言:javascript
运行
复制
/** @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代码(本机)本身位于

代码语言:javascript
运行
复制
/frameworks/base/media/libstagefright/rtsp directory.

愉快的代码挖掘

票数 2
EN

Stack Overflow用户

发布于 2016-11-02 23:21:06

也有可能使用库(https://github.com/fyhertz/libstreaming)

Github上的文档给出了如何设置服务器的示例,但基本上您需要将net.majorkernelpanic.streaming.gl.SurfaceView添加到布局中

代码语言:javascript
运行
复制
<net.majorkernelpanic.streaming.gl.SurfaceView
    android:id="@+id/surface"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/> 

将此添加到您的清单中

代码语言:javascript
运行
复制
<service android:name="net.majorkernelpanic.streaming.rtsp.RtspServer"/>

包括libstreaming库。如果您使用的是较新版本的Android Studio,则需要将libstreaming克隆为一个单独的项目并导入模块。之后,有必要在libstreaming中的build.gradle上运行build。然后你就可以使用这个库了。

最后一步是创建一个活动。最简单的可能如下所示:

代码语言:javascript
运行
复制
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进行连接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13754806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档