src/widgets/AutoPlayer.js
author ymh <ymh.work@gmail.com>
Sun, 12 Nov 2017 22:07:33 +0100
changeset 1071 02c04d2c8fd8
parent 1042 a128e59ca2b1
child 1072 ac1eacb3aa33
permissions -rw-r--r--
Various changes from git version and make autoplayer determine video type on lowercase url

IriSP.Widgets.AutoPlayer = function(player, config) {
    IriSP.Widgets.Widget.call(this, player, config);
};

IriSP.Widgets.AutoPlayer.prototype = new IriSP.Widgets.Widget();

IriSP.Widgets.AutoPlayer.prototype.defaults = {
    default_type: "JwpPlayer"
};

IriSP.Widgets.AutoPlayer.prototype.draw = function() {

    if (typeof this.video === "undefined") {
        this.video = this.media.video;
    }

    var _props = [ "live", "provider", "autostart", "streamer", "video", "height", "width", "url_transform" ],
        _opts = {},
        _types = [
            {
                regexp: /^rtmp:\/\//,
                type: "JwpPlayer"
            },
            {
                regexp: /\.(mp4|m4v|mp3)$/,
                type: "AdaptivePlayer"
            },
            {
                regexp: /\.(ogg|ogv|webm)$/,
                type: "HtmlPlayer"
            },
            {
                regexp: /^(https?:\/\/)?(www\.)?youtube\.com/,
                type: "PopcornPlayer"
            },
            {
                regexp: /^(https?:\/\/)?(www\.)?vimeo\.com/,
                type: "PopcornPlayer"
            },
            {
                regexp: /^(https?:\/\/)?(www\.)?dailymotion\.com/,
                type: "DailymotionPlayer"
            }
        ],
        _rtmprgx = /^rtmp:\/\//;

    for (var i = 0; i < _types.length; i++) {
        if (this.video && _types[i].regexp.test(this.video.toLowerCase())) {
            _opts.type =  _types[i].type;
            break;
        }
    }

    if (typeof _opts.type === "undefined") {
        _opts.type = this.default_type;
    }

    if (_opts.type === "AdaptivePlayer") {
        var _canPlayType = document.createElement('video').canPlayType('video/mp4; codecs="avc1.42E01E"');
        _opts.type = (_canPlayType !== "no") ? "HtmlPlayer" : "JwpPlayer";
    }

    if (_rtmprgx.test(this.video)) {
        _opts.provider = "rtmp";
        _opts.live = true;
    }

    for (var i = 0; i < _props.length; i++) {
        if (typeof this[_props[i]] !== "undefined") {
            _opts[_props[i]] = this[_props[i]];
        }
    }

    this.insertSubwidget(this.$, _opts);

};