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