保亭黎族苗族自治县网站建设_网站建设公司_原型设计_seo优化
2025/12/23 20:45:47 网站建设 项目流程

HarmonyOS 5开发从入门到精通(十):多媒体开发

多媒体功能让应用能处理图片、音频、视频等内容。本章介绍HarmonyOS的多媒体开发。

一、图片处理

1.1 加载和显示图片

// 加载本地图片
Image($r('app.media.icon')).width(100).height(100)// 加载网络图片
Image('https://example.com/image.jpg').width(200).height(200)

1.2 图片选择器

import picker from '@ohos.file.picker';async function pickImage() {let photoPicker = new picker.PhotoViewPicker();let result = await photoPicker.select();return result.photoUris[0];
}

二、相机功能

2.1 权限配置

{"requestPermissions": [{"name": "ohos.permission.CAMERA"}]
}

2.2 拍照功能

import camera from '@ohos.multimedia.camera';async function takePhoto() {let cameraManager = camera.getCameraManager(getContext());let cameras = await cameraManager.getSupportedCameras();let cameraDevice = await cameraManager.createCamera(cameras[0]);// 创建拍照会话let session = await cameraDevice.createCaptureSession();// 拍照逻辑...
}

三、音频播放

3.1 播放本地音频

import media from '@ohos.multimedia.media';async function playAudio() {let audioPlayer = await media.createAudioPlayer();audioPlayer.src = 'file:///data/storage/audio.mp3';await audioPlayer.prepare();audioPlayer.play();
}

3.2 控制播放

// 暂停播放
audioPlayer.pause();// 继续播放
audioPlayer.play();// 停止播放
audioPlayer.stop();// 跳转到指定位置
audioPlayer.seek(30000); // 30秒

四、音频录制

4.1 录制音频

import media from '@ohos.multimedia.media';async function startRecording() {let audioRecorder = await media.createAudioRecorder();let config = {audioEncoder: media.AudioEncoder.AAC,audioSampleRate: 44100,numberOfChannels: 2};await audioRecorder.prepare(config);audioRecorder.start();
}

五、视频播放

5.1 播放视频

async function playVideo() {let videoPlayer = await media.createVideoPlayer();videoPlayer.src = 'file:///data/storage/video.mp4';await videoPlayer.prepare();videoPlayer.play();
}

5.2 视频控制器

// 获取视频时长
let duration = videoPlayer.duration;// 获取当前播放位置
let currentTime = videoPlayer.currentTime;// 设置循环播放
videoPlayer.loop = true;

六、视频录制

6.1 录制视频

async function startVideoRecording() {let videoRecorder = await media.createVideoRecorder();let config = {audioSourceType: media.AudioSource.AUDIO_SOURCE_MIC,videoSourceType: media.VideoSource.VIDEO_SOURCE_SURFACE,profile: {audioBitrate: 128000,videoFrameRate: 30}};await videoRecorder.prepare(config);videoRecorder.start();
}

七、图片编辑

7.1 图片缩放

import image from '@ohos.multimedia.image';async function resizeImage(uri: string) {let imageSource = image.createImageSource(uri);let pixelMap = await imageSource.createPixelMap();let resized = await pixelMap.scale(0.5, 0.5);return resized;
}

7.2 图片旋转

async function rotateImage(uri: string) {let imageSource = image.createImageSource(uri);let pixelMap = await imageSource.createPixelMap();let rotated = await pixelMap.rotate(90);return rotated;
}

八、音频特效

8.1 音频均衡器

import audio from '@ohos.multimedia.audio';async function setupEqualizer() {let audioManager = audio.getAudioManager();let equalizer = await audioManager.getEqualizer();// 设置低音增强await equalizer.setBandLevel(0, 10);// 设置高音增强await equalizer.setBandLevel(4, 8);
}

九、音量控制

9.1 获取音量

let audioManager = audio.getAudioManager();
// 获取媒体音量
let mediaVolume = audioManager.getVolume(audio.AudioVolumeType.MEDIA);
// 获取铃声音量
let ringVolume = audioManager.getVolume(audio.AudioVolumeType.RINGTONE);

9.2 设置音量

// 设置媒体音量
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 50);// 静音
audioManager.mute(audio.AudioVolumeType.MEDIA, true);

十、实战案例:简易音乐播放器

@Component
struct MusicPlayer {@State isPlaying: boolean = false@State currentTime: number = 0@State totalTime: number = 0private audioPlayer: media.AudioPlayer | null = nullasync playMusic() {if (!this.audioPlayer) {this.audioPlayer = await media.createAudioPlayer();this.audioPlayer.src = 'file:///data/music.mp3';await this.audioPlayer.prepare();this.totalTime = this.audioPlayer.duration;}if (this.isPlaying) {this.audioPlayer.pause();} else {this.audioPlayer.play();this.startTimeUpdate();}this.isPlaying = !this.isPlaying;}startTimeUpdate() {setInterval(() => {if (this.audioPlayer) {this.currentTime = this.audioPlayer.currentTime;}}, 1000);}formatTime(seconds: number): string {let mins = Math.floor(seconds / 60);let secs = Math.floor(seconds % 60);return `${mins}:${secs.toString().padStart(2, '0')}`;}build() {Column({ space: 20 }) {Text('音乐播放器').fontSize(20).fontWeight(FontWeight.Bold)Text(`进度: ${this.formatTime(this.currentTime)} / ${this.formatTime(this.totalTime)}`)Button(this.isPlaying ? '暂停' : '播放').onClick(() => this.playMusic()).width(150)}}
}

总结

本章学习了HarmonyOS的多媒体开发:

图片处理 - 加载、选择、编辑图片

相机功能 - 拍照、录像、预览

音频播放 - 播放、暂停、控制音频

音频录制 - 录制和保存音频

视频播放 - 播放和控制视频

视频录制 - 录制和保存视频

音量控制 - 管理系统音量

音频特效 - 添加均衡器效果

使用建议

  1. 及时释放多媒体资源
  2. 处理权限申请
  3. 考虑不同格式兼容性
  4. 优化大文件处理性能

这样多媒体功能就能让你的应用更加丰富和有趣了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询