1.视频播放
鸿蒙系统中,关于视频播放,可以使用上层视频组件Video。
参数如下
-
src
-
支持file:///data/storage路径前缀的字符串,用于读取应用沙箱路径内的资源。需要保证目录包路径下的文件有可读权限。 说明:视频支持的格式是:mp4、mkv、webm、TS。
-
视频播放源的路径,支持本地视频路径和网络路径。 支持在resources下面的video或rawfile文件夹里放置媒体资源。 支持dataability://的路径前缀,用于访问通过Data Ability提供的视频路径,具体路径信息详见 DataAbility说明。
-
-
currentProgressRate
-
视频播放倍速。 说明: number取值仅支持:0.75,1.0,1.25,1.75,2.0。 默认值:1.0 | PlaybackSpeed.Speed_Forward_1_00_X
-
-
previewUri
-
视频未播放时的预览图片路径,默认不显示图片。
-
-
controller
-
设置视频控制器,可以控制视频的播放状态。
-
2.视频资源
-
本地视频资源
-
存放在resources/rawfile目录下,例如:本文使用test.mp4文件,那本地视频文件路径可指定为
localVideo: Resource = $rawfile('test.mp4')
-
-
网络视频资源
-
提供url视频文件地址即可,本文不提供,读者自行选择即可
-
3.示例代码
- import router from '@ohos.router';
-
- @Entry
- @Component
- struct VideoPage {
- TAG = 'VideoPage'
- localVideoController: VideoController = new VideoController()
- netVideoController: VideoController = new VideoController()
- localVideo: Resource = $rawfile('test.mp4')
- videoUrl = 'https://cmsvideo4.pg0.cn/group4/M00/13/0B/CgoN4mDdkX6AUcEYAESOlJKkmcM401.mp4'
- @State currentTime: number = 0;
- @State durationTime: number = 0;
-
- @Builder
- navigationTitle() {
- Column() {
- Text('视频播放')
- .fontColor('#182431')
- .fontSize(30)
- .lineHeight(41)
- .fontWeight(700)
- }.alignItems(HorizontalAlign.Start)
- }
-
- @Builder
- buildPage() {
-
- List() {
- ListItem() {
- Column({ space: 10 }) {
- Video({
- src: this.localVideo,
- controller: this.localVideoController
- }).autoPlay(true)
- .width('90%')
- .height(200)
-
- Button('开始播放')
- .onClick((event) => {
- console.info(`${this.TAG} onClick `)
- this.localVideoController.start();
- })
- .width('80%')
-
- Video({
- src: this.videoUrl,
- controller: this.netVideoController
- })
- .muted(false)//设置是否静音
- .controls(true)//设置是否显示默认控制条
- .autoPlay(false)//设置是否自动播放
- .loop(false)//设置是否循环播放
- .objectFit(ImageFit.Contain)//设置视频适配模式
- .width('90%')
- .height(200)
- .onPrepared((event) => {
- if (event) {
- console.info(`${this.TAG} onSeeked duration:${event.duration}`)
- this.durationTime = event.duration
- }
- })
- .onStart(() => {
- console.info(`${this.TAG} onStart `)
- })
- .onSeeked((event) => {
- if (event) {
- console.info(`${this.TAG} onSeeked time:${event.time}`)
- }
- })
- .onUpdate((event) => {
- if (event) {
- console.info(`${this.TAG} onUpdate time:${event.time}`)
- this.currentTime = event.time
- }
- })
- .onPause(() => {
- console.info(`${this.TAG} onPause `)
- })
- .onFinish(() => {
- console.info(`${this.TAG} onFinish `)
- })
- .onError(() => {
- console.info(`${this.TAG} onError `)
- })
-
- Row() {
- Text(JSON.stringify(this.currentTime) + 's')
- Slider({
- value: this.currentTime,
- min: 0,
- max: this.durationTime
- })
- .onChange((value: number, mode: SliderChangeMode) => {
- this.netVideoController.setCurrentTime(value);
- }).width("80%")
- Text(JSON.stringify(this.durationTime) + 's')
- }.alignItems(VerticalAlign.Center)
- .justifyContent(FlexAlign.Center)
- .opacity(0.8)
- .width("90%")
-
- Button('开始播放')
- .onClick((event) => {
- console.info(`${this.TAG} onClick `)
- this.netVideoController.start();
- })
- .width('80%')
-
- Button('播放视频')
- .onClick((event) => {
- router.pushUrl({
- url: 'pages/CommonWidget/FullPage',
- params: { videoSrc: this.videoUrl, videoTime: this.currentTime }
- })
- })
- .width('80%')
-
- }.width('100%')
- .alignItems(HorizontalAlign.Center)
- .justifyContent(FlexAlign.Center)
- }
- }
- }
-
- build() {
- Column() {
- Navigation() {
- this.buildPage()
- }.title(this.navigationTitle())
- .titleMode(NavigationTitleMode.Full)
-
- }.width('100%')
- .height('100%')
- }
- }
4.效果
5.其它
5.1.应用权限问题
遗憾的是上述示例,并不能播放视频,问题出现在哪里呢?
本地视频播放,需要ohos.permission.MODIFY_AUDIO_SETTINGS
和ohos.permission.READ_MEDIA
两个权限
网络视频播放,需要ohos.permission.INTERNET
网络权限
在module.json5文件添加即可
- "requestPermissions": [
- {
- "name": "ohos.permission.INTERNET",
- "usedScene": {
- "when": "always"
- },
-
- },
- {
- "name": "ohos.permission.MODIFY_AUDIO_SETTINGS",
- "usedScene": {
- "when": "always"
- }
- },
- {
- "name": "ohos.permission.READ_MEDIA",
- "usedScene": {
- "when": "always"
- }
- }
- ]
最后
如果你想快速提升鸿蒙技术,那么可以直接领取这份包含了:【OpenHarmony多媒体技术、Stage模型、ArkUI多端部署、分布式应用开发、音频、视频、WebGL、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。
鸿蒙Next全套VIP学习资料←点击领取!(安全链接,放心点击)
评论记录:
回复评论: