1e41f4b71Sopenharmony_ci# video
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci>  **说明:**
5e41f4b71Sopenharmony_ci>
6e41f4b71Sopenharmony_ci>  - 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
7e41f4b71Sopenharmony_ci>
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci视频播放组件。
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci## 子组件
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci不支持。
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci## 属性
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci除支持[通用属性](js-components-common-attributes.md)外,还支持如下属性:
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci| 名称       | 类型      | 默认值   | 必填   | 描述                                       |
22e41f4b71Sopenharmony_ci| -------- | ------- | ----- | ---- | ---------------------------------------- |
23e41f4b71Sopenharmony_ci| muted    | boolean | false | 否    | 视频是否静音播放。                                |
24e41f4b71Sopenharmony_ci| src      | string  | -     | 否    | 播放视频内容的路径。                               |
25e41f4b71Sopenharmony_ci| autoplay | boolean | false | 否    | 视频是否自动播放。                                |
26e41f4b71Sopenharmony_ci| controls | boolean | true  | 否    | 控制视频播放的控制栏是否显示,如果设置为false,则不显示控制栏。默认为true,由系统决定显示或隐藏控制栏。 |
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci## 样式
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci除支持[通用样式](js-components-common-styles.md)外,还支持如下样式:
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci| 名称         | 类型     | 默认值     | 必填   | 描述                                       |
34e41f4b71Sopenharmony_ci| ---------- | ------ | ------- | ---- | ---------------------------------------- |
35e41f4b71Sopenharmony_ci| object-fit | string | contain | 否    | 视频源的缩放类型,如果poster设置了值,那么此配置还会影响视频海报的缩放类型,可选值参考表 object-fit 类型说明。 |
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**表1** object-fit 类型说明
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci| 类型   | 描述                        |
40e41f4b71Sopenharmony_ci| ---- | ------------------------- |
41e41f4b71Sopenharmony_ci| fill | 不保持宽高比进行放大缩小,使得图片填充满显示边界。 |
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci## 事件
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci除支持[通用事件](js-components-common-events.md)外,还支持如下事件:
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci| 名称         | 参数                                       | 描述                                    |
49e41f4b71Sopenharmony_ci| ---------- | ---------------------------------------- | ------------------------------------- |
50e41f4b71Sopenharmony_ci| prepared   | {&nbsp;duration:&nbsp;value&nbsp;}<sup>5+</sup> | 视频准备完成时触发该事件,通过duration可以获取视频时长,单位为s。 |
51e41f4b71Sopenharmony_ci| start      | -                                        | 播放时触发该事件。                             |
52e41f4b71Sopenharmony_ci| pause      | -                                        | 暂停时触发该事件。                             |
53e41f4b71Sopenharmony_ci| finish     | -                                        | 播放结束时触发该事件。                           |
54e41f4b71Sopenharmony_ci| error      | -                                        | 播放失败时触发该事件。                           |
55e41f4b71Sopenharmony_ci| seeking    | {&nbsp;currenttime:&nbsp;value&nbsp;}    | 操作进度条过程时上报时间信息,单位为s。                  |
56e41f4b71Sopenharmony_ci| seeked     | {&nbsp;currenttime:&nbsp;value&nbsp;}    | 操作进度条完成后,上报播放时间信息,单位为s。               |
57e41f4b71Sopenharmony_ci| timeupdate | {&nbsp;currenttime:&nbsp;value&nbsp;}    | 播放进度变化时触发该事件,单位为s,更新时间间隔为250ms。       |
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci## 方法
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci除支持[通用方法](js-components-common-methods.md)外,还支持如下方法:
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci| 名称             | 参数                                    | 描述                |
65e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | ----------------- |
66e41f4b71Sopenharmony_ci| start          | -                                     | 请求播放视频。           |
67e41f4b71Sopenharmony_ci| pause          | -                                     | 请求暂停播放视频。         |
68e41f4b71Sopenharmony_ci| setCurrentTime | {&nbsp;currenttime:&nbsp;value&nbsp;} | 指定视频播放的进度位置,单位为s。 |
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci>  **说明:**
71e41f4b71Sopenharmony_ci>  在attached组件生命周期回调后,可以调用上述组件方法。
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci## 示例
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci```html
76e41f4b71Sopenharmony_ci<!-- xxx.hml -->
77e41f4b71Sopenharmony_ci<div class="container">
78e41f4b71Sopenharmony_ci  <video id='videoId' src='/common/myDeram.mp4' muted='false' autoplay='false'
79e41f4b71Sopenharmony_ci         controls='true' onprepared='preparedCallback' onstart='startCallback'
80e41f4b71Sopenharmony_ci         onpause='pauseCallback' onfinish='finishCallback' onerror='errorCallback'
81e41f4b71Sopenharmony_ci         onseeking='seekingCallback' onseeked='seekedCallback' 
82e41f4b71Sopenharmony_ci         ontimeupdate='timeupdateCallback'
83e41f4b71Sopenharmony_ci         style="object-fit:fill; width:80%; height:400px;"
84e41f4b71Sopenharmony_ci         onclick="change_start_pause">
85e41f4b71Sopenharmony_ci   </video>
86e41f4b71Sopenharmony_ci</div>
87e41f4b71Sopenharmony_ci```
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci```css
90e41f4b71Sopenharmony_ci/* xxx.css */
91e41f4b71Sopenharmony_ci.container {
92e41f4b71Sopenharmony_ci  justify-content: center;
93e41f4b71Sopenharmony_ci  align-items: center;
94e41f4b71Sopenharmony_ci}
95e41f4b71Sopenharmony_ci```
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci```js
98e41f4b71Sopenharmony_ci// xxx.js
99e41f4b71Sopenharmony_ciexport default {
100e41f4b71Sopenharmony_ci  data: {
101e41f4b71Sopenharmony_ci    event:'',
102e41f4b71Sopenharmony_ci    seekingtime:'',
103e41f4b71Sopenharmony_ci    timeupdatetime:'',
104e41f4b71Sopenharmony_ci    seekedtime:'',
105e41f4b71Sopenharmony_ci    isStart: true,
106e41f4b71Sopenharmony_ci    duration: '',
107e41f4b71Sopenharmony_ci  },
108e41f4b71Sopenharmony_ci  preparedCallback:function(e){ this.event = '视频连接成功'; this.duration = e.duration;},
109e41f4b71Sopenharmony_ci  startCallback:function(){ this.event = '视频开始播放';},
110e41f4b71Sopenharmony_ci  pauseCallback:function(){ this.event = '视频暂停播放'; },
111e41f4b71Sopenharmony_ci  finishCallback:function(){ this.event = '视频播放结束';},
112e41f4b71Sopenharmony_ci  errorCallback:function(){ this.event = '视频播放错误';},
113e41f4b71Sopenharmony_ci  seekingCallback:function(e){ this.seekingtime = e.currenttime; },
114e41f4b71Sopenharmony_ci  timeupdateCallback:function(e){ this.timeupdatetime = e.currenttime;},
115e41f4b71Sopenharmony_ci  change_start_pause: function() {
116e41f4b71Sopenharmony_ci    if(this.isStart) {
117e41f4b71Sopenharmony_ci      this.$element('videoId').pause();
118e41f4b71Sopenharmony_ci      this.isStart = false;
119e41f4b71Sopenharmony_ci    } else {
120e41f4b71Sopenharmony_ci      this.$element('videoId').start();
121e41f4b71Sopenharmony_ci      this.isStart = true; 
122e41f4b71Sopenharmony_ci    }
123e41f4b71Sopenharmony_ci  },
124e41f4b71Sopenharmony_ci}
125e41f4b71Sopenharmony_ci```
126e41f4b71Sopenharmony_ci
127