使用jQuery播放/暂停 HTML5视频

来源:http://blog.okbase.net/jquery2000/archive/4485.html

我尝试用jQuery控制HTML5视频,两个视频分别在两个tab中,我希望点中tab后,该tab里的视频可以立即播放,而另外tab里的视频能够停止。
我的代码是这样的:

`$(``'#playMovie1'``).click(function(){`
`$(``'#movie1'``).play();`
`});`

但发现这样不行,而用以下的js是可以的:

document.getElementById(``'movie1'``).play();

解决方法:
play并不是jQuery的函数,而是DOM元素的函数,所以我们需要通过DOM来调用play,代码如下:
$('#videoId').get(0).play();`

最简单的方法实现Play和Pause:

`$(``'video'``).trigger(``'play'``);`

`$(``'video'``).trigger(``'pause'``);`

点击视频就能播放和暂停

`$(``"video"``).trigger(``"play"``);``//for auto play`

`$(``"video"``).addClass(``'pause'``);``//for check pause or play add a class`

`$(``'video'``).click(function() {`

`if` `($(``this``).hasClass(``'pause'``)) {`

`$(``"video"``).trigger(``"play"``);`

`$(``this``).removeClass(``'pause'``);`

`$(``this``).addClass(``'play'``);`

`}` `else` `{`

`$(``"video"``).trigger(``"pause"``);`

`$(``this``).removeClass(``'play'``);`

`$(``this``).addClass(``'pause'``);`

`}`

`})`

静音和取消静音

`$(``'body'``).find(``"video"``).attr(``'id'``,` `'video'``)`

`var myVid = document.getElementById(``"video"``);`

`$(``'.sound-icon'``).click(function() {`

`//here "sound-icon" is a anchor class.`

`var sta = myVid.muted;`

`if` `(sta ==` `true``) {`

`myVid.muted =` `false``;`

`}` `else` `{`

`myVid.muted =` `true``;`

`}`

`})`

HTML 5中播放视频的方法:

`<video width=``"640"` `height=``"360"` `src=``"[http://www.youtube.com/demo/google_main.mp4](http://www.youtube.com/demo/google_main.mp4)"` `controls autobuffer>`

`<p> Try` `this` `page in Safari` `4``! Or you can`

`<a href=``"[http://www.youtube.com/demo/google_main.mp4](http://www.youtube.com/demo/google_main.mp4)"``>download the video</a> instead.</p>`

`</video>`

自动播放:

`<video src=``"abc.mov"` `autoplay>`

`</video>`

使用poster在视频无法加载时显示图片:

`<video width=``"640"` `height=``"360"` `src=``"[http://www.youtube.com/demo/google_main.mp](http://www.youtube.com/demo/google_main.mp)"` `autobuffer controls poster=``"whale.png"``>`

`<p>Try` `this` `page in Safari` `4``! Or you can <a href=``"[http://www.youtube.com/demo/google_main.mp4](http://www.youtube.com/demo/google_main.mp4)"``>download the video</a> instead.</p>`

`</video>`

一个比较简洁的例子:

`<script type=``"text/javascript"``>`

`function vidplay() {`

`var video = document.getElementById(``"Video1"``);`

`var button = document.getElementById(``"play"``);`

`if` `(video.paused) {`

`video.play();`

`button.textContent =` `"||"``;`

`}` `else` `{`

`video.pause();`

`button.textContent =` `">"``;`

`}`

`}`

`function restart() {`

`var video = document.getElementById(``"Video1"``);`

`video.currentTime =` `0``;`

`}`

`function skip(value) {`

`var video = document.getElementById(``"Video1"``);`

`video.currentTime += value;`

`}`

`</script>`

`</head>`

`<body>`

`<video id=``"Video1"` `>`

`// Replace these with your own video files.`

`<source src=``"demo.mp4"` `type=``"video/mp4"` `/>`

`<source src=``"demo.ogv"` `type=``"video/ogg"` `/>`

`HTML5 Video is required` `for` `this` `example.`

`<a href=``"demo.mp4"``>Download the video</a> file.`

`</video>`

`<div id=``"buttonbar"``>`

`<button id=``"restart"` `onclick=``"restart();"``>[]</button>`

`<button id=``"rew"` `onclick=``"skip(-10)"``>&lt;&lt;</button>`

`<button id=``"play"` `onclick=``"vidplay()"``>&gt;</button>`

`<button id=``"fastFwd"` `onclick=``"skip(10)"``>&gt;&gt;</button>`

`</div>`

下面是一个比较完整的例子:

`<html >`

`<head>`

`<title>Full player example</title>`

`<!-- Uncomment the following meta tag` `if` `you have issues rendering` `this` `page on an intranet or local site. -->`

`<!-- <meta http-equiv=``"X-UA-Compatible"` `content=``"IE=edge"``/> -->`

`<script type=``"text/javascript"``>`

`function init() {` `// Master function, encapsulates all functions`

`var video = document.getElementById(``"Video1"``);`

`if` `(video.canPlayType) {` `// tests that we have HTML5 video support`

`// if successful, display buttons and set up events`

`document.getElementById(``"buttonbar"``).style.display =` `"block"``;`

`document.getElementById(``"inputField"``).style.display =` `"block"``;`

`// helper functions`

`// play video`

`function vidplay(evt) {`

`if` `(video.src ==` `""``) {` `// inital source load`

`getVideo();`

`}`

`button = evt.target;` `// get the button id to swap the text based on the state`

`if` `(video.paused) {` `// play the file, and display pause symbol`

`video.play();`

`button.textContent =` `"||"``;`

`}` `else` `{` `// pause the file, and display play symbol`

`video.pause();`

`button.textContent =` `">"``;`

`}`

`}`

`// load video file from input field`

`function getVideo() {`

`var fileURL = document.getElementById(``"videoFile"``).value;` `// get input field`

`if` `(fileURL !=` `""``) {`

`video.src = fileURL;`

`video.load();` `// if HTML source element is used`

`document.getElementById(``"play"``).click();` `// start play`

`}` `else` `{`

`errMessage(``"Enter a valid video URL"``);` `// fail silently`

`}`

`}`

`// button helper functions`

`// skip forward, backward, or restart`

`function setTime(tValue) {`

`// if no video is loaded, this throws an exception`

`try` `{`

`if` `(tValue ==` `0``) {`

`video.currentTime = tValue;`

`}`

`else` `{`

`video.currentTime += tValue;`

`}`

`}` `catch` `(err) {`

`// errMessage(err) // show exception`

`errMessage(``"Video content might not be loaded"``);`

`}`

`}`

`// display an error message`

`function errMessage(msg) {`

`// displays an error message for 5 seconds then clears it`

`document.getElementById(``"errorMsg"``).textContent = msg;`

`setTimeout(``"document.getElementById('errorMsg').textContent=''"``,` `5000``);`

`}`

`// change volume based on incoming value`

`function setVol(value) {`

`var vol = video.volume;`

`vol += value;`

`// test for range 0 - 1 to avoid exceptions`

`if` `(vol >=` `0` `&& vol <=` `1``) {`

`// if valid value, use it`

`video.volume = vol;`

`}` `else` `{`

`// otherwise substitute a 0 or 1`

`video.volume = (vol <` `0``) ?` `0` `:` `1``;`

`}`

`}`

`// button events`

`// Play`

`document.getElementById(``"play"``).addEventListener(``"click"``, vidplay,` `false``);`

`// Restart`

`document.getElementById(``"restart"``).addEventListener(``"click"``, function () {`

`setTime(``0``);`

`},` `false``);`

`// Skip backward 10 seconds`

`document.getElementById(``"rew"``).addEventListener(``"click"``, function () {`

`setTime(-``10``);`

`},` `false``);`

`// Skip forward 10 seconds`

`document.getElementById(``"fwd"``).addEventListener(``"click"``, function () {`

`setTime(``10``);`

`},` `false``);`

`// set src == latest video file URL`

`document.getElementById(``"loadVideo"``).addEventListener(``"click"``, getVideo,` `false``);`

`// fail with message`

`video.addEventListener(``"error"``, function (err) {`

`errMessage(err);`

`},` `true``);`

`// volume buttons`

`document.getElementById(``"volDn"``).addEventListener(``"click"``, function () {`

`setVol(-.``1``);` `// down by 10%`

`},` `false``);`

`document.getElementById(``"volUp"``).addEventListener(``"click"``, function () {`

`setVol(.``1``);` `// up by 10%`

`},` `false``);`

`// playback speed buttons`

`document.getElementById(``"slower"``).addEventListener(``"click"``, function () {`

`video.playbackRate -= .``25``;`

`},` `false``);`

`document.getElementById(``"faster"``).addEventListener(``"click"``, function () {`

`video.playbackRate += .``25``;`

`},` `false``);`

`document.getElementById(``"normal"``).addEventListener(``"click"``, function () {`

`video.playbackRate =` `1``;`

`},` `false``);`

`document.getElementById(``"mute"``).addEventListener(``"click"``, function (evt) {`

`if` `(video.muted) {`

`video.muted =` `false``;`

`evt.target.innerHTML =` `"<img alt='volume on button' src='vol2.png' />"`

`}` `else` `{`

`video.muted =` `true``;`

`evt.target.innerHTML =` `"<img alt='volume off button' src='mute2.png' />"`

`}`

`},` `false``);`

`}` `// end of runtime`

`}``// end of master`

`</script>`

`</head>`

`<body onload=``"init();"` `>`

`<video id=``"Video1"` `controls style=``"border: 1px solid blue;"` `height=``"240"` `width=``"320"` `title=``"video element"``>`

`HTML5 Video is required` `for` `this` `example`

`</video>`

`<div id=``"buttonbar"` `style=``"display: none;"``)>`

`<button id=``"restart"` `title=``"Restart button"``>[]</button>`

`<button id=``"slower"` `title=``"Slower playback button"``>-</button>`

`<button id=``"rew"` `title=``"Rewind button"` `>&lt;&lt;</button>`

`<button id=``"play"` `title=``"Play button"``>&gt;</button>`

`<button id=``"fwd"` `title=``"Forward button"` `>&gt;&gt;</button>`

`<button id=``"faster"` `title=``"Faster playback button"``>+</button>`

`<button id=``"Button2"` `title=``"Mute button"` `><img alt=``"Volume on button"` `src=``"vol2.png"` `/></button>`

`<br />`

`<label>Playback </label>`

`<label>Reset playback rate: </label><button id=``"normal"` `title=``"Reset playback rate button"``>=</button>`

`<label> Volume </label>`

`<button id=``"volDn"` `title=``"Volume down button"``>-</button>`

`<button id=``"volUp"` `title=``"Volume up button"``>+</button>`

`<button id=``"mute"` `title=``"Mute button"` `><img alt=``"Volume on button"` `src=``"vol2.png"` `/></button>`

`</div>`

`<br/>`

`<div id=` `"inputField"` `style=``"display:none;"` `>`

`<label>Type or paste a video URL: <br/>`

`<input type=``"text"` `id=``"videoFile"` `style=``"width: 300px;"` `title=``"video file input field"` `value=``"[http://ie.microsoft.com/testdrive/ieblog/2011/nov/pp4_blog_demo.mp4](http://ie.microsoft.com/testdrive/ieblog/2011/nov/pp4_blog_demo.mp4)"` `/>`

`<button id=``"loadVideo"` `title=``"Load video button"` `>Load</button>`

`</label>`

`</div>`

`<div title=``"Error message area"` `id=``"errorMsg"` `style=``"color:Red;"``></div>`

`</body>`

`</html>`

 


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容