[文章]HarmonyOS应用开发-ets-video组件案例

阅读量0
0
1

说明:
该组件从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
接口
Video(value: {src?: string, currentProgressRate?: number | string, previewUri?: string, controller?: VideoController})


示例代码:
  1. // @ts-nocheck
  2. @Entry
  3. @Component
  4. struct VideoExample {
  5.   @State src: Resource = $rawfile('video1.mp4')
  6.   @State currentProgressRate: number = 1
  7.   @State muted: boolean = false
  8.   @State autoPlay: boolean = false
  9.   @State controls: boolean = true
  10.   @State startStaus: boolean = true
  11.   myVideoController: VideoController = new VideoController()

  12.   build() {
  13.     Column({ space: 10 }) {
  14.       Video({
  15.         src: this.src,
  16.         previewUri: '../../../../resources/rawfile/video1.mp4',
  17.         currentProgressRate: this.currentProgressRate,
  18.         controller: this.myVideoController
  19.       })
  20.         .muted(this.muted)
  21.         .autoPlay(this.autoPlay)
  22.         .controls(this.controls)
  23.         .objectFit(ImageFit.Contain)
  24.         .loop(true)
  25.         .width(320)
  26.         .height(200)
  27.         .onStart(() => {
  28.           console.info('onStart')
  29.         })
  30.         .onPause(() => {
  31.           console.info('onPause')
  32.         })
  33.         .onFinish(() => {
  34.           console.info('onFinish')
  35.         })
  36.         .onError(() => {
  37.           console.info('onError')
  38.         })
  39.         .onFullscreenChange((e) => {
  40.           console.info('onFullscreenChange:' + e.fullscreen)
  41.         })
  42.         .onPrepared((e) => {
  43.           console.info('onPrepared:' + e.duration)
  44.         })
  45.         .onSeeking((e) => {
  46.           console.info('onSeeking' + e.time)
  47.         })
  48.         .onSeeked((e) => {
  49.           console.info('onSeeked' + e.time)
  50.         })
  51.         .onUpdate((e) => {
  52.           console.info('onUpdate' + e.time)
  53.         })

  54.       Row() {
  55.         Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.SpaceAround, alignItems:ItemAlign.Start }) {
  56.           Button("src")
  57.             .onClick(() => {
  58.               if (this.src == $rawfile('video1.mp4')) {
  59.                 this.src = $rawfile('video2.mp4')
  60.               } else {
  61.                 this.src = $rawfile('video1.mp4')
  62.               }
  63.             })
  64.             .margin({bottom:10})
  65.           Button("controls")
  66.             .onClick(() => {
  67.               this.controls = !this.controls
  68.             })
  69.           Button("play")
  70.             .onClick(() => {
  71.               this.myVideoController.start()
  72.             })
  73.           Button("pause")
  74.             .onClick(() => {
  75.               this.myVideoController.pause()
  76.             })
  77.           Button("stop")
  78.             .onClick(() => {
  79.               this.myVideoController.stop()
  80.             })
  81.             .margin({bottom:10})
  82.           Button("requestFullscreen")
  83.             .onClick(() => {
  84.               this.myVideoController.requestFullscreen(true)
  85.             })
  86.           Button("exitFullscreen")
  87.             .onClick(() => {
  88.               this.myVideoController.exitFullscreen()
  89.             })
  90.           Button("setCurrentTime")
  91.             .onClick(() => {
  92.               this.myVideoController.setCurrentTime(9)
  93.             })
  94.         }.padding(15)
  95.       }
  96.     }.width('100%')
  97.   }
  98. }
复制代码
效果展示:
图片1.png

附件:

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友