Получение ошибки LiveStreamManager -3 в DJI Mobile SDK при попытке потоковой передачи на пользовательский RTMP? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь реализовать приложение, которое отправляет живое видео с дрона на мой пользовательский сервер RTMP.Когда я использую de LiveStreamManager из DJI Mobile SDK, он выдает мне код ошибки -3, и поток не запускается.Как я могу использовать этот API?

Мое приложение успешно регистрируется, я могу настраивать миссии и получать телеметрию от дронов.Но когда я пытаюсь использовать LiveStreamManeger, он не работает, несмотря ни на что.Даже при реализации в точности так, как это реализовано в Пример кода , это не работает.Документация в справочнике по API DJI, похоже, также содержит несколько методов.

Вот моя реализация

    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?

1 Ответ

0 голосов
/ 25 апреля 2019

Отвечая на мой вопрос ...

Мне удалось решить проблему.По-видимому, чтобы иметь возможность использовать LiveStreamManager, вы должны сначала вызвать функцию VideoFeeder.getPrimaryVideoFeed () где-то в вашем коде, или она выдаст код ошибки -3.

Используя пример кода, во внутреннем классе есть класс.utils.VideoFeedView, который можно использовать для этой цели

Сначала я объявил частное свойство VideoFeedView.

Затем в конструкторе моего класса я вызываю функцию initUI.

private VideoFeedView primaryVideoFeed;

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

}
...