【问题标题】:Media Element Js video player doesn't play correctlyMedia Element Js 视频播放器无法正确播放
【发布时间】:2012-02-10 13:12:41
【问题描述】:

早上好,

我尝试使用 mediaelementjs 视频播放器。 我的html:

<video id="player" width="758px" height="400px"  controls="controls" autoplay preload="auto">
     <source type="video/flv" src="media/demo.flv" />
</video>

Javascript:

var player = new MediaElementPlayer("#player",{
     success: function (mediaElement, domObject) {

                        // call the play method
                        mediaElement.play();

                    }
             });

我收到此错误:

Uncaught TypeError: Object #<HTMLEmbedElement> has no method 'pauseMedia'
mejs.PluginMediaElement.pausemediaelement-and-player.min.js:28
mejs.MediaElementPlayer.pausemediaelement-and-player.min.js:94
mejs.MediaElementPlayer.meReadymediaelement-and-player.min.js:85
mejs.PluginMediaElement.dispatchEventmediaelement-and-player.min.js:32
mejs.MediaPluginBridge.fireEventmediaelement-and-player.min.js:34
(anonymous function)

怎么了?

你能帮帮我吗?

好像是这样称呼的:

pause: function () {
    if (this.pluginApi != null) {
        if (this.pluginType == 'youtube') {
            this.pluginApi.pauseVideo();
        } else {
            this.pluginApi.pauseMedia();
        }           


        this.paused = true;
    }
},

更新 我试试:

var player = new MediaElementPlayer("#player");
player.play(); 

我没有收到错误但它不播放。

【问题讨论】:

  • 能否提供pauseMedia所在的脚本
  • 暂停:function () { if (this.pluginApi != null) { if (this.pluginType == 'youtube') { this.pluginApi.pauseVideo(); } 其他 { this.pluginApi.pauseMedia(); } this.paused = true; } },

标签: jquery mediaelement.js


【解决方案1】:

我正在使用这个:

//Global player
var Player = {};

    var videoDiv = document.getElementById('videoDiv');

    if(url.search("youtube") >= 0){
        videoDiv.innerHTML = '<video width="480" height="270" id="videoPlayer"><source type="video/youtube" src="'+url+'" /></video>';

    }else{
        videoDiv.innerHTML = '<video width="480" height="270" id="videoPlayer" src="'+url+'" />';

    }

    $('video').mediaelementplayer({
        success: function(media, node, playerElement) {

            Player = playerElement.media;

            //console.log('mode: ' + media.pluginType);

            Player.addEventListener("timeupdate", function( event ) {

                if(Player.paused) return;

                Editor.setTime(Math.round(Player.currentTime));

            });
            Player.addEventListener("seeked", function( event ) {

                Editor.setTime(Math.round(Player.currentTime));

            }); 
            Player.addEventListener("progress", function( event ) {

                if(Player.paused) return;

                console.log('currentTime '+Player.currentTime);
                console.log('progress '+Player.buffered.length);
                var count = Player.buffered.length;
                for(i=0;i<count;i++){

                    console.log('start ',Player.buffered.start(i),'end ',Player.buffered.end(i));

                }

            }); 
            Player.addEventListener("load", function( event ) {

                console.log(event);

            }); 
            Player.addEventListener("error", function( event ) {

                console.log(event);

            }); 
            Player.addEventListener("playing", function( event ) {

                console.log(event);

            }); 
            Player.addEventListener("canplay", function( event ) {

                console.log(event);

            }); 
            Player.addEventListener("loadeddata", function( event ) {

                console.log(event);

            }); 
        }
    });


// You can access the Player obj outside the function scope, because it is global
// But only after the player has been loaded!

HTML:

<div id="videoDiv" style="width: 360px; height: 300px;" ></div>

【讨论】:

    【解决方案2】:

    至于我能说的很远,我认为 MediaElementPlayer 需要一个 mediaElement.pause();

    我是从 mediaElementjs.com 找到的:

    <script>
    // JavaScript object for later use
    var player = new MediaElementPlayer('#player',/* Options */);
    // ... more code ...
    player.pause();
    player.setSrc('mynewfile.mp4');
    player.play();
    </script>
    

    也许尝试设置 pause();看看它给出了什么错误。

    【讨论】:

      【解决方案3】:

      试试这个:

      var player = new MediaElementPlayer("#player");
      player.play();
      

      或者这个:

      new MediaElement('player', {
        success: function (mediaElement, domObject) {
      
        },false);
       mediaElement.play();
      });
      

      【讨论】:

      • 我尝试了您描述的第二种模式,但我收到此错误:未捕获类型错误:无法读取 null mejs.HtmlMediaElementShim.createmediaelement-and-player.js:795 mejs.MediaElementmediaelement 的属性“tagName” -and-player.js:786
      • 添加#new MediaElement('#player', {
      • 我试过 var player = new MediaElementPlayer("#player");播放器.play();我没有收到错误,但它不播放。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      相关资源
      最近更新 更多