Как настроить видеопроигрыватель dash.js-2.6.1 для воспроизведения только с определенным битрейтом без использования соответствующего флажка на панели управления проигрывателем?

Я хочу управлять dash.js-2.6.1 видеоплеером удаленно, чтобы я мог заставить его воспроизводить видео с определенным битрейтом из списка битрейтов, который он получает из файла манифеста (*.mpd). Очевидно, что это можно сделать с помощью флажка битрейта плеера, расположенного на панели управления окна плеера, но я хочу сделать это в фоновом режиме, удаленно и несколько раз во время воспроизведения видео. Другими словами, я хочу узнать, какая функция в исходном коде плеера перехватывает значение битрейта, выбранное пользователем на флажке, и передает эту функцию вручную и удаленно.

Я буду признателен любому, кто направит меня, как достичь моей цели, даже с помощью другого метода.


person Maher    schedule 18.10.2017    source источник


Ответы (1)


Посмотрите на источник MediaPlayer.js:

Функция, которую вы хотите посмотреть, это setQualityFor:

/**
     * Sets the current quality for media type instead of letting the ABR Heuristics automatically selecting it.
     * This value will be overwritten by the ABR rules unless setAutoSwitchQualityFor(type, false) is called.
     *
     * @param {string} type - 'video' or 'audio'
     * @param {number} value - the quality index, 0 corresponding to the lowest bitrate
     * @memberof module:MediaPlayer
     * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}
     * @see {@link module:MediaPlayer#getQualityFor getQualityFor()}
     * @instance
     */
    function setQualityFor(type, value) {
        if (!playbackInitialized) {
            throw PLAYBACK_NOT_INITIALIZED_ERROR;
        }
        abrController.setPlaybackQuality(type, streamController.getActiveStreamInfo(), value);
    }
person Mick    schedule 20.10.2017
comment
Спасибо, дорогой Мик - person Maher; 21.10.2017
comment
Не могли бы вы проинструктировать меня, как использовать эту функцию? Я добавил эти две строки‹‹ player.setAutoSwitchQuality(false); player.setQualityFor(видео, 0); ›› хотел заставить плеер играть с наименьшим битрейтом, но ничего не вышло! - person Maher; 22.10.2017
comment
Взгляните на onFragmentLoadProgress в AbrController.js. Это вызывает setPlaybackQuality, который вызывает changeQuality, который затем вызывает setQualityFor. Это должно дать вам представление об использовании, параметрах и т. д. - person Mick; 23.10.2017