java - 尝试流式传输到自定义 RTMP 时,DJI Mobile SDK 中出现 LiveStreamManager 错误 -3?

标签 java android rtmp dji-sdk

我正在尝试实现一个将实时视频从无人机发送到我的自定义 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?

最佳答案

回答我自己的问题...

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

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

我首先声明了一个私有(private)属性 VideoFeedView。

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

private VideoFeedView primaryVideoFeed;

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

}

关于java - 尝试流式传输到自定义 RTMP 时,DJI Mobile SDK 中出现 LiveStreamManager 错误 -3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55731431/

相关文章:

java - 我的简单程序显示了我的位置,但没有显示在微调器中选择的位置的多段线

apache - 如何为流音频文件创建简单的RTMP Apache服务器

java - 接受对象数组然后添加到 ArrayList 的类

java - 单例、枚举和匿名内部类

android - AIDE 和 Eclipse 项目错误

TCP/RTMP 握手

video - nginx-rtmp + ffmpeg 动态移动 mp4 的 moov

java - 获取 map 的最小值(键,双)

java - 我应该使用什么 xml 解析器?

java - 如何使用 ReplaySubject 重新运行 CompositeSubscription?