网页中插入视频的方案葡京在线开户

葡京在线开户 1

汇总上述2个代码,我们可以对浏览器举行判定,在PC点使用embed标签,移动端采纳iframe。具体见之下代码:

前一步中,线程的start()方法,线程运行的时候执行run()方法,而Worker继承Runnable并再一次run()方法,run()方法又调用外部的runWorker()方法,所以,在线程池中新成立的线程运行时调用的是runWorker()方法

运动端效果为:

当第1个任务交给过来,线程池中的线程数为0,于是,新建一个线程,并履行任务,此时,线程池中有1个线程;

 

第二处,即便当前有效线程数超越主题线程数,并且将新职责放到队列中,此时有效线程数是0,则开创一个新线程

葡京在线开户 2

所以,COUNT_BITS = 29

效果:

葡京在线开户 3

 1 <video width="800" height="">
 2         <source src="myvideo.mp4" type="video/mp4"></source>
 3         <source src="myvideo.ogv" type="video/ogg"></source>
 4         <source src="myvideo.webm" type="video/webm"></source>
 5         <object width="" height="" type="application/x-shockwave-flash" data="myvideo.swf">
 6             <param name="movie" value="myvideo.swf" />
 7             <param name="flashvars" value="autostart=true&amp;file=myvideo.swf" />
 8         </object>
 9         当前浏览器不支持 video直接播放,点击这里下载视频: <a href="myvideo.webm">下载视频</a>
10     </video>

接下去看最复杂的老大构造方法

唯独一般不及其一个视频生成MP4、ogg、webm和swf(flash)四种格式的视频,原因是太占用时间了。

 

PC效果为:

 

 

参数详解

官网上有在线配置效应,依照自己的急需开展布置,其中一个相比较好测试代码为ckplayer调用html5播放器,

Integer.SIZE – 3 = 29

 

其三处,假设当前有效线程数超过要旨线程数,并且队列已经放满了,并且有效线程数小于最大线程数,此时调用以创设新线程,

更新(2017-07-10):

runState的值有这样两种:

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 
 4     <head>
 5         <meta charset="UTF-8" />
 6         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 7         <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 8         <title>网页中插入视频的方法</title>
 9         <style type="text/css">
10             * {
11                 margin: 0;
12                 padding: 0;
13             }
14             
15             body {
16                 text-align: center;
17             }
18         </style>
19     </head>
20 
21     <body>
22         <iframe frameborder="0" width="600" height="498" src="https://v.qq.com/iframe/player.html?vid=t0523oagtrj&tiny=0&auto=0" allowfullscreen></iframe>
23         <!--<embed src="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=r03996hk7rg&auto=0" allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>-->
24 
25     </body>
26 
27 </html>

当第n个任务交给过来,仍然放入工作行列

 

当第2个任务交给过来,由于不可以放手队列中,于是再创立一个线程,此时线程池中有2个线程;

其次使用ckplayer插件在网页中插入本地视频。**

(RUNNING or SHUTDOWN) -> STOP

行使情势:

TIDYING -> TERMINATED

总结:

  调用shoutdownNow()方法

2017-08-08更新:

当第1个任务交给过来,新创立一个线程并履行任务,此时线程池中有1个线程;

葡京在线开户 4

高3位存储runState

商量的第二种方案是:使用ckplayer插件。

葡京在线开户 5

葡京在线开户 6

 

  调用shutdown()方法,或者隐式的调用finalize()方法

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 
 4     <head>
 5         <meta charset="UTF-8" />
 6         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 7         <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 8         <title>网页中插入视频的方法</title>
 9         <style type="text/css">
10             * {
11                 margin: 0;
12                 padding: 0;
13             }
14             
15             body {
16                 text-align: center;
17             }
18         </style>
19     </head>
20 
21     <body>
22         <!--<iframe frameborder="0" width="600" height="498" src="https://v.qq.com/iframe/player.html?vid=t0523oagtrj&tiny=0&auto=0" allowfullscreen></iframe>-->
23         <embed src="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=r03996hk7rg&auto=0" allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>
24 
25     </body>
26 
27 </html>

当第3个任务交给过来,放入工作行列中,然后由线程池中的四个线程轮询队列处理

抑或利用embed标签,见实例代码:

 

ckplayer插件的api地址为:http://www.ckplayer.com/manual/13/54.htm

RUNNING -> SHUTDOWN

网页突显效果为:

  当terminated()方法调用完成时

 

1、假设正在周转的线程数少于要旨线程数,则新建一个线程去运作这一个任务

亟需表明的是:在第三方视频网站上分享代码中甄选通用的代码,这样可以使得PC端和移动端均能心满意足的变现视频。

葡京在线开户 7

 

  • workerCount:有效的线程数量
  • runState:线程池的情状
 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 
 4     <head>
 5         <meta charset="UTF-8" />
 6         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 7         <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 8         <title>网页中插入视频的方法</title>
 9         <style type="text/css">
10             * {
11                 margin: 0;
12                 padding: 0;
13             }
14             
15             body {
16                 text-align: center;
17             }
18             
19             div {
20                 font-size: 18px;
21                 color: #2E8DED;
22                 margin-top: 20px;
23             }
24         </style>
25     </head>
26 
27     <body>
28         <!--爱奇艺视频(无通用代码) 只支持PC端 IE8以上都可以-->
29         <div>
30             爱奇艺视频(无通用代码) 只支持PC端 IE8以上都可以
31         </div>
32         <embed src="http://player.video.qiyi.com/8b89d9c3ec3535c93ceaded663cc91c2/0/0/v_19rr7zq9xw.swf-albumId=715375800-tvId=715375800-isPurchase=0-cnId=25" allowFullScreen="true" quality="high" width="480" height="350" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>
33         <div>
34             腾讯视频 全部支持 IE8以上都可以
35         </div>
36         <!--腾讯视频 全部支持 IE8以上都可以-->
37         <iframe frameborder="0" width="640" height="498" src="https://v.qq.com/iframe/player.html?vid=p0521h3uu1a&tiny=0&auto=0" allowfullscreen></iframe>
38         <div>
39             优酷视频 全部支持 IE8以上都可以
40         </div>
41         <!--优酷视频 全部支持 IE8以上都可以-->
42         <iframe height=498 width=510 src='http://player.youku.com/embed/XMjg2OTA1NDc5Mg==' frameborder=0 'allowfullscreen'></iframe>
43     </body>
44 
45 </html>

  当池是空的时候

CKobject.getObjectById('ckplayer_a1').videoPlay();//播放视频

葡京在线开户 8

表明:录像只需要使用近来浏览器匡助最多的MP4格式即可,需要处理的录像格式少。其次是行使ckplayer插件可以相比较健全的匹配PC和移动端浏览器(经测试IE8
视频播放不了)。

一经,newFixedThreadPool的时候一定线程是2,所有,最大线程和骨干线程都是2,而它的工作队列用的是LinkedBlockingQueue。

议论的首先种方案是:将视频上流传爱奇艺、优酷和腾讯等第三方录像网站上,在使用第三方网站提供的代码(在视频下方的“分享”按钮中即可找到),具体测试代码为:

情状之间的更换时这样的:

 

3、假若工作行列已满(PS:workQueue.offer(command)重临false),则再新建线程

葡京在线开户 9

 

 

上边这段代码一贯在用,面试的时候也日常被问到,却从没深究过,不知道线程池到底是怎么回事,前几天探视源代码,一探其到底

 

 

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 
 4     <head>
 5         <meta charset="UTF-8" />
 6         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 7         <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 8         <title>网页中插入视频的方法</title>
 9         <style type="text/css">
10             * {
11                 margin: 0;
12                 padding: 0;
13             }
14             
15             body {
16                 text-align: center;
17             }
18         </style>
19     </head>
20 
21     <body>
22         <iframe frameborder="0" width="600" height="498" src="https://v.qq.com/iframe/player.html?vid=t0523oagtrj&tiny=0&auto=0" allowfullscreen id="iframe"></iframe>
23         <embed src="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=r03996hk7rg&auto=0" allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" id="embed"></embed>
24         <script type="text/javascript">
25             var iframe = document.getElementById('iframe'),
26                 embed = document.getElementById('embed');
27             iframe.style.display = 'none';
28             embed.style.display = 'none';
29             var userAgentInfo = navigator.userAgent;
30             var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
31             var flag = false;
32             var v = 0
33             for(v = 0; v < Agents.length; v++) {
34                 if(userAgentInfo.indexOf(Agents[v]) > 0) {
35                     flag = true;
36                     break;
37                 }
38             }
39             //检测浏览器为移动端浏览器
40             if(flag) {
41                 
42                 iframe.style.display = '';
43                 embed.style.display = 'none';
44             } else {
45                 iframe.style.display = 'none';
46                 embed.style.display = '';
47             }
48         </script>
49     </body>
50 
51 </html>

当第3个任务交给过来,若前五个线程有一个甩卖完了,这一个时候由于是循环从队列中取,所有可以放置工作行列中

葡京在线开户 10

STOP -> TIDYING

葡京在线开户 11

栗子1

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 
 4     <head>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <title>ckplayer调用html5播放器</title>
 7     </head>
 8 
 9     <body>
10         <div id="a1"></div>
11         <!--引入ckplayer.js-->
12         <script type="text/javascript" src="ckplayer/ckplayer.js" charset="utf-8"></script>
13         <script type="text/javascript">
14             var flashvars = {
15                 //p参数为是否自动播放,可以为 1 或 0,默认为 1,参数不为 1 时播放器加载完成后均为暂停状态。
16                 p: 0,
17                 //e为视频结束后的动作,0 停止播放并发送js,1 是不发送 js 且重新循环播放,2 停止播放,默认为2。
18                 e: 1,
19                 //i为视频播放器初始图片地址,即封面图片,默认为空。
20                 i: 'http://www.ckplayer.com/staticqdw.jpg'
21             };
22             //http://img.ksbbs.com/asset/Mon_1605/0ec8cc80112a2d6.mp4 为视频地址
23             var video = ['http://img.ksbbs.com/asset/Mon_1605/0ec8cc80112a2d6.mp4->video/mp4'];
24             var support = ['all'];
25             //第一个100% 为宽度同样可以设置为像素,第二个100% 为高度同样可以设置为像素
26             CKobject.embedHTML5('a1', 'ckplayer_a1', '100%', '100%', video, flashvars, support);
27         </script>
28     </body>
29 
30 </html>

SHUTDOWN -> TIDYING

事先指出将视频上传到第三方视频网站,兼容性好,同时视频加载快,不会占用网站服务器的带宽资源。

举例表明

 

 

明日议论网页中插入视频的方案,咱不探讨video标签的运用办法,video标签相比较配合的写法为:

为了在一个整型值里面富含这两个字段,我们限制workerCount最多2的29次方减1

ckplayer插件的官网为:http://www.ckplayer.com/

newFixedThreadPool:主旨线程数和最大线程数相等,超过主旨线程数的空闲线程生存时间是0,队列是LinkedBlockingQueue

 

 

 

newSingleThreadExecutor:核心线程数和最大线程数都是1,队列是LinkedBlockingQueue

可是使用embed标签在移动端不能显示录像。

线程池首要决定的意况是ctl,它是一个原子的平头,其含有多少个概念字段:

方案一的实例代码:

Integer.SIZE=31

效果如下图所示:

葡京在线开户 12

葡京在线开户 13

能够见见

要是,newCachedThreadPool,需要专注的是,它的劳作行列是SynchronousQueue,这种队列的特色是一个线程向队列中放元素的时候必须同时另一个线程从队列中取出元素,否则是放不进来的

4、若线程数已经达成最大线程数则reject(command)

葡京在线开户 14

runWorker()方法循环的从队列中取出任务并履行它。也就是说,池中具备的线程都是在成立的时候尽管传进来新职责,则先举行新职责,然后循环从队列中取出任务并实施

先是处,假设当前有效线程数少于大旨线程数,则调用之,此时线程数的边际是主旨线程数

  当队列和池都是空的时候

栗子2

  • corePoolSize:保持在池中的线程数(PS:尽管它们处于空闲状态)
  • maximumPoolSize:池中允许的最大线程数
  • keepAlive提姆(Tim)e:当线程数超越要旨线程数的时候,超出的线程的最大生存时间
  • unit:keepAliveTime的单位
  • workQueue:维护待处理的任务的系列
  • threadFactory:创立线程的工厂

葡京在线开户 15

葡京在线开户 16

葡京在线开户 17

  • RUNNING:  接受新的职责,并拍卖队列中的任务
  • SHUTDOWN:不接受新的任务,继续处理队列中的任务
  • STOP:          
    不收受新的职责,也不处理队列中的任务,并且中断正在处理的天职
  • TIDYING:    
     所有任务都终止了,workerCount是0,通过调用terminated()方法转换状态
  • TERMINATED:terminated()方法已经完结

当第2个任务交给过来,再新建一下线程并施行任务,此时线程池中有2个线程;

接下去,看Executors中常见的二种线程池的界别

在前面execute方法中,有3处调用了addWork()方法

 

现阶段的有用线程都在works里面,而works里面放的是Worker对象,接下去看Worker

2、如若工作行列没有满,则停放工作行列中

葡京在线开户 18

newCachedThreadPool:主题线程数是0,最大线程数是Integer.MAX_VALUE,空闲线程生存时间是1min,队列是SynchronousQueue