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

news2026/5/1 12:12:50
微信小程序媒体 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 静音策略、后台播放等做了适配保证多端体验一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2526020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…