使用MediaElement.js从任意位置播放HTML5视频

时间:2015-01-28 22:25:09

标签: javascript jquery html5 video mediaelement.js

我需要能够从任意位置播放HTML5视频(mp4格式)。

<script src="{{ STATIC_URL }}mediaelementjs/jquery.js"></script>
<script src="{{ STATIC_URL }}mediaelementjs/mediaelement-and-player.min.js"></script>
<link rel="stylesheet" href="{{ STATIC_URL }}mediaelementjs/mediaelementplayer.min.css" />

<script>
    $(document).ready(function(){$('video, audio').mediaelementplayer({
        // if the <video width> is not specified, this is the default
        defaultVideoWidth: 480,
        // if the <video height> is not specified, this is the default
        defaultVideoHeight: 270,
        // if set, overrides <video width>
        videoWidth: -1,
        // if set, overrides <video height>
        videoHeight: -1,
        // width of audio player
        audioWidth: 400,
        // height of audio player
        audioHeight: 30,
        // initial volume when the player starts
        startVolume: 0.8,
        // useful for <audio> player loops
        loop: false,
        // enables Flash and Silverlight to resize to content size
        enableAutosize: true,
        // the order of controls you want on the control bar (and other plugins below)
        features: ['playpause','progress','current','duration','tracks','volume','fullscreen'],
        // Hide controls when playing and mouse is not over the video
        alwaysShowControls: false,
        // force iPad's native controls
        iPadUseNativeControls: false,
        // force iPhone's native controls
        iPhoneUseNativeControls: false,
        // force Android's native controls
        AndroidUseNativeControls: false,
        // forces the hour marker (##:00:00)
        alwaysShowHours: false,
        // show framecount in timecode (##:00:00:00)
        showTimecodeFrameCount: false,
        // used when showTimecodeFrameCount is set to true
        framesPerSecond: 25,
        // turns keyboard support on and off for this instance
        enableKeyboard: true,
        // when this player starts, it will pause other players
        pauseOtherPlayers: true,
        // array of keyboard commands
        keyActions: [],
        // start with English automatically turned on
        startLanguage: 'en'
        }
    );});

<video id="demo" width="720" height="600" controls="controls" preload="auto">
    <!-- MP4 for Safari, IE9, iPhone, iPad, Android, and Windows Phone 7 -->
    <source type="video/mp4" src="{{ STATIC_URL }}/video/sample.m4v" />
    <!-- Optional: Add subtitles for each language -->
    <track label="English" srclang="en" kind="subtitles" type="text/vtt" src="{{ STATIC_URL }}video/sample.vtt" />
</video>

假设我想要添加包含时间信息的链接(例如,从开头起10秒),当我点击它时,视频应该从头开始播放,而不是从10秒开始播放。在下面的成绩单中。时间00:00:10是可以单击的链接。谁能给我一些关于如何做到这一点的指示?

...

第148行:这是一个好词。 00:00:10

...

2 个答案:

答案 0 :(得分:2)

之前的回答建议使用currentTime(),这是HTML5中的get/set方法,但MEJS中只有get方法。您应该使用(MEJS')setCurrentTime()set 开始时间,这样,有一个按钮,如

<button class="button" id="play">play : starts at 8 seconds</button>

...你可以使用这个jQuery代码:

var media; // we need this global variable
jQuery(document).ready(function ($) {
    $("video").mediaelementplayer({
        success: function (mediaElement, domObject) {
            media = mediaElement; // make it available for other functions
        }
    });
    $(".button").on("click", function () {
        media.setCurrentTime(8); // set starting time
        media.play(); 
    });
}); // ready

...或者您可以使用更多按钮(使用不同的ID s)来设置更多操作,例如

$("#parentContainer").on("click", ".button", function (event) {
    if (event.target.id == "play") {
        media.setCurrentTime(8);
        media.play();
    }
    if (event.target.id == "pause") {
        media.pause();
    }
});

注意preloaded 属性的视频应为set

JSFIDDLE

答案 1 :(得分:0)

使用html5播放器play()currentTime

HTML:

<button id="time" onClick="playVideo()">00:00:16</button>
<video id="demo" width="30%" height="auto" controls="controls" preload="auto">
    <source type="video/mp4" src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4" />
</video>

JS:

<script type="text/javascript">
var time = document.getElementById("time").innerHTML;
var parts = time.split(':');
var seconds = (+parts[0]) * 60 * 60 + (+parts[1]) * 60 + (+parts[2]);

function playVideo() {
    var video = document.getElementById("demo");
    video.currentTime = seconds;
    video.play();
}

</script>