HarmonyOS 鸿蒙Next video 控件无法播放网络视频

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next video 控件无法播放网络视频

https://media.w3.org/2010/05/sintel/trailer.mp4

video 控件无法播放网络视频

视频下载放在 resources/base/media 文件夹中却可以播放  

网络权限已添加

```json
{
  "requestPermissions": [
    {
      "name": "ohos.permission.INTERNET",
      "usedScene": {
        "when": "always"
      }
    }
  ]
}

代码如下

[@Entry](/user/Entry)
[@Component](/user/Component)
struct VideoCreateComponent {
  [@State](/user/State) videoSrc: string = "http://vfx.mtime.cn/Video/2017/03/31/mp4/170331093811717750.mp4"
  [@State](/user/State) previewUri: Resource = $r('app.media.butterfly1')
  [@State](/user/State) curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
  [@State](/user/State) isAutoPlay: boolean = true
  [@State](/user/State) showControls: boolean = true
  controller: VideoController = new VideoController()

  build() {
    Column() {
      Video({
        src: this.videoSrc,
        previewUri: this.previewUri,
        currentProgressRate: this.curRate,
        controller: this.controller
      }).width('100%').height(600)
        .autoPlay(this.isAutoPlay)
        .controls(this.showControls)
        .onStart(() => {
          Log.debug('onStart')
          this.videoSrc = 'https://media.w3.org/2010/05/sintel/trailer.mp4'
        })
        .onPause(() => {
          Log.debug('onPause')
        })
        .onFinish(() => {
          Log.debug('onFinish')
        })
        .onError(() => {
          Log.error('onError')
        })
        .onPrepared((e) => {
          Log.debug('onPrepared is ' + e.duration)
        })
        .onSeeking((e) => {
          Log.debug('onSeeking is ' + e.time)
        })
        .onSeeked((e) => {
          Log.debug('onSeeked is ' + e.time)
        })
        .onUpdate((e) => {
          Log.debug('onUpdate is ' + e.time)
        })

      Row() {
        Button('src').onClick(() => {
          this.videoSrc = "https://media.w3.org/2010/05/sintel/trailer.mp4" // 切换视频源
        }).margin(5)
        Button('previewUri').onClick(() => {
          this.previewUri = $r('app.media.butterfly2') // 切换视频预览海报
        }).margin(5)
        Button('controls').onClick(() => {
          this.showControls = !this.showControls // 切换是否显示视频控制栏
        }).margin(5)
      }

      Row() {
        Button('start').onClick(() => {
          this.controller.start() // 开始播放
        }).margin(5)
        Button('pause').onClick(() => {
          this.controller.pause() // 暂停播放
        }).margin(5)
        Button('stop').onClick(() => {
          this.controller.stop() // 结束播放
        }).margin(5)
        Button('setTime').onClick(() => {
          this.controller.setCurrentTime(10, SeekMode.Accurate) // 精准跳转到视频的10s位置
        }).margin(5)
      }

      Row() {
        Button('rate 0.75').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
        }).margin(5)
        Button('rate 1').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
        }).margin(5)
        Button('rate 2').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
        }).margin(5)
      }
    }
  }
}

更多关于HarmonyOS 鸿蒙Next video 控件无法播放网络视频的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

视频能播放了吗 我也遇到了同样的问题  跟网络无关 不论数据流量还是wifi  都播放不了

更多关于HarmonyOS 鸿蒙Next video 控件无法播放网络视频的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我这边可以播放你这个网络视频,代码没问题,应该是网络限制了,看看是不是你们公司屏蔽了相关域名?

换个网络试试。

@Entry
@Component
struct VideoCreateComponent {
  @State videoSrc: string = "http://vfx.mtime.cn/Video/2017/03/31/mp4/170331093811717750.mp4"
  @State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
  @State isAutoPlay: boolean = true
  @State showControls: boolean = true
  controller: VideoController = new VideoController()

  build() {
    Column() {
      Video({
        src: this.videoSrc,
        currentProgressRate: this.curRate,
        controller: this.controller
      }).width('100%').height(600)
        .autoPlay(this.isAutoPlay)
        .controls(this.showControls)
        .onStart(() => {
          this.videoSrc = 'https://media.w3.org/2010/05/sintel/trailer.mp4'
        })
        .onPause(() => {})
        .onFinish(() => {})
        .onError(() => {})
        .onPrepared((e) => {})
        .onSeeking((e) => {})
        .onSeeked((e) => {})
        .onUpdate((e) => {})

      Row() {
        Button('src').onClick(() => {
          this.videoSrc = "https://media.w3.org/2010/05/sintel/trailer.mp4" // 切换视频源
        }).margin(5)
        Button('previewUri').onClick(() => {})
          .margin(5)
        Button('controls').onClick(() => {
          this.showControls = !this.showControls // 切换是否显示视频控制栏
        }).margin(5)
      }

      Row() {
        Button('start').onClick(() => {
          this.controller.start() // 开始播放
        }).margin(5)
        Button('pause').onClick(() => {
          this.controller.pause() // 暂停播放
        }).margin(5)
        Button('stop').onClick(() => {
          this.controller.stop() // 结束播放
        }).margin(5)
        Button('setTime').onClick(() => {
          this.controller.setCurrentTime(10, SeekMode.Accurate) // 精准跳转到视频的10s位置
        }).margin(5)
      }

      Row() {
        Button('rate 0.75').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
        }).margin(5)
        Button('rate 1').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
        }).margin(5)
        Button('rate 2').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
        }).margin(5)
      }
    }
  }
}

您好,我写了一个从别的页面跳转到该页面,为啥跳转不过去,会报错。但是单独可以打开这个页面。

main_pages.json有配置页面名称吗?

配置了,但是报错:Error message: ObservedPropertySimple value must not be an object
Stacktrace:
at ObservedPropertySimplePU (/mnt/disk/jenkins/ci/workspace/chipset_pipeline_release/china_compile/component_code/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:3043:3043)
at VideoCreateComponent (entry/src/main/ets/pages/testPage.ets:8:26)
@State videoSrc: string = "[http://vfx.mtime.cn/Video/2017/03/31/mp4/170331093811717750.mp4](http://vfx.mtime.cn/Video/2017/03/31/mp4/170331093811717750.mp4)"
at func_main_0 (entry/src/main/ets/pages/testPage.ets:334:14)

针对“HarmonyOS 鸿蒙Next video 控件无法播放网络视频”的问题,可能的原因及解决方法如下:

  1. 网络权限问题

    • 确保应用已正确申请并获得了网络访问权限,包括Wi-Fi和移动数据网络权限。
  2. 视频地址问题

    • 检查视频URL是否正确,确保URL指向的视频资源是可访问的。
    • 验证视频服务器是否支持CORS(跨源资源共享),如果不支持,可能导致鸿蒙视频控件无法加载视频。
  3. 视频格式支持

    • 确认视频格式是否被鸿蒙视频控件支持。如果视频格式不被支持,控件可能无法正确播放。
  4. 控件配置问题

    • 检查视频控件的配置,确保已正确设置视频源、播放模式等参数。
  5. 系统或应用版本问题

    • 确保鸿蒙系统版本和应用的版本兼容,且均为最新版本。旧版本可能存在已知bug,影响视频播放功能。
  6. 日志分析

    • 查看应用日志,分析是否有关于视频播放的错误信息,以便进一步定位问题。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。客服人员将为您提供更专业的帮助。

回到顶部