在尝试流式传输到自定义RTMP时,在DJI Mobile SDK中获取LiveStreamManager错误-3?

问题描述 投票:0回答:1

我正在尝试实现一个将实时视频从无人机发送到我的自定义rtmp服务器的应用程序。当我使用DJI Mobile SDK中的de LiveStreamManager时,它会给出错误代码-3,并且流不会启动。我该如何使用此API?

我的应用程序注册成功,我可以设置任务,并从无人机获取遥测。但是当我尝试使用LiveStreamManeger时,它无论如何都无法工作。即使完全按照它在Sample Code中实现的方式实现,它也不起作用。 DJI API参考中的文档似乎也缺少一些方法。

这是我的实施

    private void setupLiveStream() {
        DJISDKManager.getInstance().getLiveStreamManager().registerListener(listener);
        initListener();
        DJISDKManager.getInstance().getLiveStreamManager().setAudioStreamingEnabled(false);
        DJISDKManager.getInstance().getLiveStreamManager().setVideoSource(LiveStreamManager.LiveStreamVideoSource.Primary);
        liveURL = "rtmp://mycustomrtmp.com/drone/live_testDJI";
    }

    private void initListener() {
        listener = new LiveStreamManager.OnLiveChangeListener() {
            @Override
            public void onStatusChanged(int i) {
                setResultToToast("status changed : " + i);
            }
        };
    }
    private void StartStreaming(){
        if (!isLiveStreamManagerOn()) {
            return;
        }
        if (DJISDKManager.getInstance().getLiveStreamManager().isStreaming()) {
            setResultToToast("already started the Stream!");
            return;
        }
        new Thread() {
            @Override
            public void run() {
                DJISDKManager.getInstance().getLiveStreamManager().setLiveUrl(liveURL);// + vehicleID);
                int result = DJISDKManager.getInstance().getLiveStreamManager().startStream();
                DJISDKManager.getInstance().getLiveStreamManager().setStartTime();
                setResultToToast("LiveStream Start: " + result +
                        "\n isVideoStreamSpeedConfigurable:" + DJISDKManager.getInstance().getLiveStreamManager().isVideoStreamSpeedConfigurable() +
                        "\n isLiveAudioEnabled:" + DJISDKManager.getInstance().getLiveStreamManager().isLiveAudioEnabled());
            }
        }.start();
    }

我总是得到一个返回码-3。当我使用示例代码时,我可以让它工作。唯一不同的是我调用函数isVideoStreamSpeedConfigurable(),它在我的代码上返回true,在示例代码上返回false。但我没有看到我可以将这件事设置为假。我该如何实现LiveStreamingManager?

java android rtmp dji-sdk
1个回答
0
投票

回答我自己的问题......

我设法解决了这个问题。显然,为了能够使用LiveStreamManager,您必须首先在代码中的某处调用函数VideoFeeder.getPrimaryVideoFeed(),否则它将给出错误代码-3。

使用示例代码,internal.utils.VideoFeedView中有一个类可用于此目的

我先声明了一个私有属性VideoFeedView。

然后在我的类构造函数上,我调用initUI函数。

private VideoFeedView primaryVideoFeed;

private void initUI() {
   primaryVideoFeed.registerLiveVideo(VideoFeeder.getInstance().getPrimaryVideoFeed(),true);
   startStreaming();

}
© www.soinside.com 2019 - 2024. All rights reserved.