当前位置: 首页 > article >正文

微信小程序开发-媒体 API学习笔记

微信小程序媒体 API 案例讲解零基础吃透微信小程序媒体 API涵盖图片、录音、音频、视频、相机五大核心模块每个知识点都以案例进行讲解。笔记中的案例资源已放在顶部大家可自行下载学习。本章核心概述图片管理选择、预览、获取信息、保存到相册录音管理录音管理器实现录制、暂停、停止音频管理背景音频后台播放 内部音频前台播放视频管理选择视频、保存视频、控制视频组件相机管理调用相机拍照、录像一、首页index导航页功能定位作为所有媒体 API 案例的入口通过navigator组件跳转到各个子功能页面无业务逻辑仅承担路由导航作用。页面显示效果核心代码 知识点navigator url/pages/demo01/image/image图片管理综合应用/navigatornavigator小程序内置导航组件通过url指定跳转路径实现页面间跳转布局复用通过include引入公共的head.wxml标题和foot.wxml版权实现页面布局复用。二、图片管理demo01/image功能清单实现「选择图片」「预览图片」「获取图片信息」「保存图片到相册」四大核心功能。页面显示效果核心知识点 代码解析1. 选择图片chooseImagechooseImage:function(){ wx.chooseImage({ count: 1, // 最多选择1张 sizeType: [original, compressed], // 原图/压缩图 sourceType: [album, camera], // 相册/相机选择 success: function (res) { that.setData({ src: res.tempFilePaths[0]}) // 临时路径渲染图片 } }) }wx.chooseImage小程序图片选择 API返回临时文件路径tempFilePaths临时路径仅在当前会话有效数据绑定通过setData更新src实现image组件的图片渲染。2. 预览图片previewImagepreviewImage:function(){ wx.previewImage({ urls: [this.data.src] }) }wx.previewImage图片预览 API接收数组格式的图片路径支持缩放、保存等原生预览交互。3. 获取图片信息getImageInfogetImageInfo: function () { wx.getImageInfo({ src: this.data.src, success:function(res){ wx.showToast({ title: 宽:res.width,高:res.height }) } }) }wx.getImageInfo获取图片宽高、路径、类型等元信息常用于图片尺寸适配。4. 保存图片到相册saveImageToPhotosAlbumsaveImage: function () { wx.saveImageToPhotosAlbum({ filePath: that.data.src, success:function(){ wx.showToast({ title: 保存成功 }) } }) }wx.saveImageToPhotosAlbum将图片保存到系统相册需用户授权小程序自动触发授权弹窗交互反馈通过wx.showToast给出操作结果提示。布局说明image组件通过modewidthFix实现「宽度固定、高度自适应」保证图片比例不拉伸。三、录音管理demo02/recorder功能清单实现「开始录音」「停止录音」「自动播放录音」功能基于小程序录音管理器实现。页面显示效果核心知识点 代码解析1. 初始化录音管理器onLoad: function (options) { this.rm wx.getRecorderManager() // 获取录音管理器实例 this.rm.onStop((res) { // 停止录音后自动播放 const audioCtx wx.createInnerAudioContext() audioCtx.srcres.tempFilePath audioCtx.play() }) }wx.getRecorderManager()获取全局唯一的录音管理器替代旧版wx.startRecord监听停止事件onStop回调接收录音结果返回临时音频路径tempFilePath。2. 开始 / 停止录音start:function(){ const options { duration: 10000, // 最长录音10秒 sampleRate: 44100, // 采样率 format: aac // 音频格式 } this.rm.start(options) }, stop:function(){ this.rm.stop() // 停止录音触发onStop回调 }录音配置支持采样率、声道数、编码码率等精细配置满足不同音质需求播放录音通过wx.createInnerAudioContext()创建音频上下文播放录音临时文件。四、音频管理demo03分「背景音频bgAudio」和「内部音频audioCtx」两个子页面覆盖不同音频播放场景。4.1 背景音频管理bgAudio功能清单实现「后台音频播放」小程序退到后台仍能播放支持播放 / 暂停控制。页面显示效果核心知识点 代码解析onLoad: function (options) { this.bgAudioManager wx.getBackgroundAudioManager() // 背景音频管理器 this.initialAudio() }, initialAudio:function(){ this.bgAudioManager.title 小夜曲 // 必传音频标题后台播放必填 this.bgAudioManager.src https://xxx.mp3 // 设置后自动播放 }wx.getBackgroundAudioManager()背景音频管理器支持小程序退到后台继续播放配置要求title为必填项系统后台音频栏显示src设置后自动播放全局配置需在app.json中声明requiredBackgroundModes: [audio]申请后台音频权限。4.2 内部音频控制audioCtx功能清单实现音频「播放」「暂停」「停止」支持静音状态下播放iOS监听播放状态。页面显示效果核心知识点 代码解析onLoad: function (options) { this.audioCtx wx.createInnerAudioContext() // 创建内部音频上下文 this.initialAudio() }, initialAudio: function () { this.audioCtx.src https://xxx.mp3 // 音频地址网络/本地 this.audioCtx.autoplay true // 自动播放 // iOS静音下播放 wx.setInnerAudioOption({ obeyMuteSwitch: false }) // 监听播放事件 this.audioCtx.onPlay(() { console.log(开始播放) }) }wx.createInnerAudioContext()创建内部音频上下文控制音频播放 / 暂停 / 停止静音策略wx.setInnerAudioOption设置obeyMuteSwitch: false实现 iOS 静音模式下仍播放事件监听支持onPlay/onPause/onStop/onError等事件监听音频生命周期。五、视频管理demo04/videoCtx功能清单实现「选择视频」「播放 / 暂停视频」「保存视频到相册」「发送彩色弹幕」全流程。页面显示效果核心知识点 代码解析1. 选择视频chooseVideochooseVideo: function () { wx.chooseVideo({ sourceType: [album, camera], // 相册/相机拍摄 maxDuration: 60, // 最长60秒 success: function (res) { that.setData({ src: res.tempFilePath }) // 渲染视频 } }) }wx.chooseVideo选择 / 拍摄视频返回临时路径、时长、尺寸等信息。2. 视频上下文控制onLoad: function (options) { this.videoContext wx.createVideoContext(myVideo) // 绑定视频ID }, play: function () { this.videoContext.play() }, // 播放 pause: function () { this.videoContext.pause() } // 暂停wx.createVideoContext(myVideo)通过视频组件 ID 创建上下文控制视频播放状态视频组件配置video idmyVideo enable-danmu danmu-btn controls开启弹幕、弹幕按钮、原生控制栏。3. 发送彩色弹幕// 生成随机十六进制颜色 function getRandomColor() { let rgb [] for (let i 0; i 3; i) { let color Math.floor(Math.random() * 256).toString(16) color color.length 1 ? 0 color : color rgb.push(color) } return # rgb.join() } // 发送弹幕 bindSendDanmu: function () { this.videoContext.sendDanmu({ text: this.inputValue, // 输入的弹幕文本 color: getRandomColor() // 随机颜色 }) }sendDanmu视频上下文的弹幕发送 API支持自定义文本和颜色输入框交互通过bindblur监听输入框失焦获取弹幕文本。4. 保存视频到相册saveVideo: function () { wx.saveVideoToPhotosAlbum({ filePath: this.data.src, success: function () { wx.showToast({ title: 保存成功 }) } }) }wx.saveVideoToPhotosAlbum视频保存到相册需用户授权。六、相机管理demo05/camera功能清单实现「相机录像」开始 / 停止、「超时自动停止录像」、「播放录制的视频」。页面显示效果核心知识点 代码解析1. 初始化相机上下文onLoad: function (options) { this.ctx wx.createCameraContext() // 创建相机上下文 }wx.createCameraContext()获取相机上下文控制录像、拍照等操作。2. 开始 / 停止录像// 开始录像 startRecord: function () { this.ctx.startRecord({ // 超时默认10秒自动结束 timeoutCallback(res) { that.setData({ isRecording: false, src: res.tempVideoPath, // 录制的视频临时路径 isHidden: false // 显示视频组件 }) } }) }, // 手动停止录像 stopRecord: function () { this.ctx.stopRecord({ success: function (res) { that.setData({ src: res.tempVideoPath, isHidden: false }) } }) }startRecord/stopRecord相机上下文的录像控制 API超时回调timeoutCallback处理录像超时自动停止的场景条件渲染通过wx:if/hidden控制「开始 / 停止按钮」「视频组件」的显示 / 隐藏。3. 相机组件布局camera device-positionback flashoff stylewidth: 100%; height: 300px;/camera video hidden{{isHidden}} src{{src}} controls/video七、公共样式与全局配置1. 全局样式app.wxss定义通用布局类container/page-head/demo-box等统一所有页面的样式风格containerflex 布局垂直排列占满屏幕高度demo-box统一的卡片样式边框、内边距提升页面一致性。2. 全局配置app.json{ pages: [...], // 注册所有页面路径 window: { navigationBarBackgroundColor: #4169E1 }, // 导航栏样式 requiredBackgroundModes: [audio] // 后台音频权限 }页面注册所有页面需在pages数组中声明否则无法跳转后台权限requiredBackgroundModes声明audio允许背景音频播放。总结这份案例完整覆盖了微信小程序媒体 API 的核心能力每个页面聚焦一个媒体场景核心特点「临时路径」所有媒体文件图片 / 音频 / 视频操作均返回临时路径仅当前会话有效「上下文管理」通过createXXXContext创建音频 / 视频 / 相机上下文实现精细控制「授权机制」保存到相册、相机等操作需用户授权小程序自动触发授权流程「跨端兼容」针对 iOS 静音策略、后台播放等做了适配保证多端体验一致。

相关文章:

微信小程序开发-媒体 API学习笔记

微信小程序媒体 API 案例讲解零基础吃透微信小程序媒体 API,涵盖图片、录音、音频、视频、相机五大核心模块,每个知识点都以案例进行讲解。笔记中的案例资源已放在顶部,大家可自行下载学习。本章核心概述:图片管理:选择…...

如何在5分钟内解决中文文献管理三大痛点:Jasminum插件终极完整指南

如何在5分钟内解决中文文献管理三大痛点:Jasminum插件终极完整指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 你…...

MyBatis 批量插入优化:百万数据秒级导入

作为一名奋战在一线的后端开发工程师,数据库批量操作是我们几乎每天都会遇到的场景。无论是数据迁移、定时报表计算,还是日志存档,我们都免不了要和“插入大量数据”打交道。不知道你是否曾有过这样的经历:系统上线初期&#xff0…...

vConTACT3: 机器学习实现可扩展和系统的病毒层级分类

https://www.nature.com/articles/s41587-025-02946-9 https://bitbucket.org/MAVERICLab/vcontact3/src/master/ 安装 mamba create --name vcontact3 python3.10 mamba activate vcontact3 #Or 最新版 cd Software git clone https://bitbucket.org/MAVERICLab/vcontact3.…...

VL6180X不止能测距!手把手教你在STM32上读取环境光强度(ALS)

VL6180X环境光传感实战:从寄存器配置到Lux值转换的完整指南 在智能设备开发中,环境光传感(ALS)功能正变得越来越重要。无论是自动调节屏幕亮度,还是根据光照条件优化设备功耗,精确的光强检测都是实现这些功能的基础。VL6180X作为一…...

告别Arduino IDE!用VSCode+PlatformIO搭建ESP32开发环境(2024保姆级教程,含Python配置避坑)

从Arduino到VSCode:2024年ESP32高效开发环境全指南 当你在Arduino IDE中频繁切换标签页、手动管理第三方库、忍受着简陋的代码补全时,是否想过开发工具本可以更智能?2024年的嵌入式开发早已进入现代化工具链时代,而VSCodePlatfor…...

iPhone充电慢怎么办?6个方法大幅缩短充电时间!

iPhone充电慢问题由来已久 这是个由来已久的问题(至少从2007年就开始了):你买了一部新iPhone来享受最新、最棒的功能,但随着时间推移,突然有一天你会觉得手机电量怎么都充不满,电池老是没电。另外&#xff…...

如何快速上手ComfyUI-Florence2视觉语言模型:新手完整配置指南

如何快速上手ComfyUI-Florence2视觉语言模型:新手完整配置指南 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 你是否想在ComfyUI中体验强大的视觉语言模型Florence…...

告别 pip install 失败:手把手教你为 Jetson 的特定 Python 环境源码安装 PyCUDA

告别 pip install 失败:手把手教你为 Jetson 的特定 Python 环境源码安装 PyCUDA 在 Jetson 开发板上配置深度学习环境时,PyCUDA 是一个绕不开的关键组件。然而,许多开发者都遇到过这样的尴尬场景:满怀信心地输入 pip install pyc…...

人工智能(九)- Spring AI MCP客户端开发

人工智能(八)- Spring AI 开发MCP Server(Streamable HTTP)完整开发与测试 一、MCP 客户端 上一篇我们开发了MCP Server,现在来开发MCP Client。 通过 MCP Client 向服务器请求工具列表,服务器返回所有工…...

小身材,大能耐!RT-Thread BK7252 麻雀一号开发板全功能实战解析

1. 麻雀一号开发板:小身材藏着大能量 第一次拿到RT-Thread麻雀一号开发板时,我差点以为这是个玩具——它的尺寸只有信用卡的三分之二大小。但当我翻开规格书,才发现这个"小不点"竟然集成了BK7252主控芯片、WiFi/BLE双模模块、30万像…...

Vivado比特流压缩:一个Tcl命令让你的FPGA配置文件缩小一半(附完整脚本)

Vivado比特流压缩实战:从原理到脚本的完整优化方案 在嵌入式FPGA开发中,存储空间往往是稀缺资源。想象一下,当你精心设计的逻辑即将部署到现场,却因为比特流文件过大而不得不更换更大容量的Flash芯片——这不仅增加成本&#xff…...

ESP32接PS2手柄总失败?手把手教你修改Arduino库并上传GitHub(附完整代码)

ESP32与PS2手柄深度适配指南:从源码修改到开源贡献全流程 1. 项目背景与问题定位 去年在开发一个机器人遥控项目时,我遇到了一个棘手的问题:ESP32开发板始终无法稳定识别PS2手柄。经过72小时的反复测试,最终发现问题的根源在于一个…...

ParsecVDisplay:如何用虚拟显示器打破物理屏幕的限制?

ParsecVDisplay:如何用虚拟显示器打破物理屏幕的限制? 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否曾经因为电脑屏幕不够用而感到困扰&#xff1…...

【Python】bisect 模块实战:从原理到高效应用

1. 二分查找原理与bisect模块的诞生 二分查找算法就像我们小时候玩的"猜数字"游戏:对方心里想一个1-100的数字,你每次猜中间值,根据"大了"或"小了"的提示缩小范围。bisect模块正是将这个经典算法封装成了Pytho…...

从零电流钳位到精准补偿:深入解析电机死区补偿的两种核心算法

1. 电机死区现象的本质剖析 第一次调试无刷电机驱动器时,我盯着示波器上那些扭曲的电流波形整整三天没想明白——明明PWM占空比计算完全正确,为什么电机低速运转时总会出现规律性的抖动?直到把电流探头挂在相线上,才在过零点附近捕…...

本地AI字幕提取器:一键将视频硬字幕转为可编辑SRT文件

本地AI字幕提取器:一键将视频硬字幕转为可编辑SRT文件 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容…...

大麦网抢票终极指南:Python自动化脚本让你告别抢票焦虑

大麦网抢票终极指南:Python自动化脚本让你告别抢票焦虑 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到心仪演唱会门票而烦恼吗?每次热门演出开票时&#xff…...

单网线搞定供电与传输——POE温湿度变送器集成应用解析

以太网POE供电温湿度变送器在系统集成中的应用摘要:以太网 POE 供电温湿度变送器,凭借 “单网线供电 数据传输” 的一体化优势,完美解决传统温湿度监测设备布线复杂、供电不稳、集成困难等痛点,已成为数据中心、智慧楼宇、工业自…...

3个关键步骤快速上手Fiji:科研图像分析的完整解决方案

3个关键步骤快速上手Fiji:科研图像分析的完整解决方案 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji科学图像处理平台是ImageJ的增强版本,专…...

Joy-Con Toolkit技术架构深度解析:开源手柄控制与传感器校准实现

Joy-Con Toolkit技术架构深度解析:开源手柄控制与传感器校准实现 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款专为任天堂Joy-Con和Pro手柄设计的开源控制工具,通…...

5分钟搞定B站视频转文字:bili2text完整指南

5分钟搞定B站视频转文字:bili2text完整指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为B站精彩视频的内容整理而烦恼吗?每次…...

终极Windows清理指南:快速解决C盘爆红问题

终极Windows清理指南:快速解决C盘爆红问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你的Windows电脑是否经常出现C盘空间不足的警告&#xff1f…...

第22篇:AI配音实战——用ElevenLabs克隆你的声音,制作有声内容(操作教程)

文章目录前言环境准备:注册与“氪金”策略分步操作:从克隆到生成第一步:创建你的声音克隆第二步:使用克隆声音生成语音第三步:下载与后期处理完整代码示例:API调用实战踩坑提示:我走过的弯路&am…...

优化Vscode终端缓冲区设置:突破历史记录限制的实用技巧

1. 为什么你的Vscode终端总是丢失历史记录? 每次在Vscode终端里调试代码时,最让人抓狂的就是向上翻看历史记录时突然卡住,发现前面的输出内容全都消失了。这个问题我遇到过无数次,特别是在跑长时间任务或者输出大量日志时。其实这…...

如何用AlienFX Tools完全掌控你的Alienware灯光与风扇:5分钟快速入门指南

如何用AlienFX Tools完全掌控你的Alienware灯光与风扇:5分钟快速入门指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 厌倦了Alienware …...

第21篇:Midjourney进阶咒语库——精准控制风格、构图与细节的秘籍(操作教程)

文章目录前言环境准备:理解Midjourney的“语言规则”分步操作:构建你的三维度咒语库第一步:风格控制——决定画面的“基因”1. 艺术风格与流派2. 媒介与材质3. 时代与地区风格第二步:构图控制——成为画面的“导演”1. 镜头与景别…...

Labelme AI-Polygon闪退别慌!手把手教你用修改版5.3.1一键搞定(附模型下载)

Labelme AI-Polygon闪退终极解决方案:修改版5.3.1实战指南 当你第一次尝试用Labelme的AI-Polygon功能标注图像时,那种期待感可能很快会被闪退提示框击碎。别担心,这几乎是每个数据标注新手的必经之路——环境配置、模型路径、依赖版本&#x…...

正规机构开锁电话

生活中,门锁故障、钥匙丢失等突发状况时有发生,找到正规开锁机构才能避免安全隐患与不必要的纠纷。惠州市惠城区罗记开锁中心是经公安备案、工商注册的专业开锁单位,具备完善的资质与丰富的实操经验,为惠州地区的居民和商户提供可…...

OpenVAS_gsm_4.3.14在VirtualBox中的部署与配置指南

1. OpenVAS_gsm_4.3.14简介与准备工作 OpenVAS(开放式漏洞评估系统)是目前最受欢迎的开源漏洞扫描工具之一,它的核心价值在于能够帮助安全测试人员快速发现网络系统中的安全隐患。我最早接触OpenVAS是在2015年的一次企业内网渗透测试项目中&a…...