问题描述:

一、fs.saveFile 报错:saveFile:fail it is not a tempFilePath

出错信息

调用 FileSystemManager.saveFile 时,提示 “不是临时文件路径”,无法保存文件。

原因分析
  • fs.saveFile 要求传入的 tempFilePath 必须是 系统 API 生成的临时文件路径(如 wx.downloadFilewx.chooseImage 等返回的路径,通常以 wxfile://tmp/ 开头)。
  • 若传入的路径是开发者通过 fs.writeFile 手动写入 wx.env.USER_DATA_PATH 的文件路径,会被判定为 “非临时文件”,导致校验失败。
  • 微信小程序限制:wxfile://tmp/ 目录仅允许系统 API 写入,开发者无法通过 fs.writeFile 手动生成临时文件路径。
解决方法
  1. 直接写入用户目录:无需依赖 fs.saveFile,通过 fs.writeFile 将文件直接写入 wx.env.USER_DATA_PATH(用户目录),该目录文件会永久保存。

    javascript

    const fs = wx.getFileSystemManager();
    const filePath = `${wx.env.USER_DATA_PATH}/file.mp3`; // 用户目录路径
    fs.writeFile({
      filePath: filePath,
      data: arrayBuffer, // 二进制数据
      encoding: 'binary',
      success: () => console.log('文件永久保存成功')
    });
    

  2. 仅对系统临时文件使用 saveFile:若文件来自 wx.downloadFile 等系统 API,直接使用其返回的 tempFilePath 调用 fs.saveFile。   具体来说,只有当临时文件的路径是 系统自动生成(且位于 wxfile://tmp/ 目录下)时,saveFile 才有实际意义。这些临时文件的来源包括但不限于:
    1. wx.downloadFile:下载网络资源后返回的 tempFilePath
    2. wx.chooseImage/wx.chooseVideo:用户选择本地媒体后返回的 tempFilePaths
    3. wx.canvasToTempFilePath:画布生成的临时图片路径
    4. wx.getRecorderManager().stop():录音结束后返回的临时音频路径

二、uni.createInnerAudioContext 播放无声音(iOS 微信小程序)

出错信息

音频可正常播放,但无声音,volume = 1 且 obeyMuteSwitch = false 仍无效。

原因分析
  • iOS 音频策略限制:iOS 要求音频必须在用户主动交互(如点击按钮)的回调中播放,否则会被系统静音。
  • 全局音频配置缺失:未通过 wx.setInnerAudioOption 配置全局音频参数,导致 obeyMuteSwitch 等设置不生效。
  • 音频格式不兼容:iOS 仅支持 AAC、MP3 等少数格式,其他格式可能无声。
解决方法
  1. 在用户交互中播放:确保 play() 调用在按钮点击等用户主动操作的回调中,避免异步延迟。

    javascript

    // 正确:用户点击直接播放
    const handlePlay = () => {
      innerAudioContext.play();
    };
    

  2. 配置全局音频参数:通过 wx.setInnerAudioOption 绕过 iOS 限制:

    javascript

    wx.setInnerAudioOption({
      obeyMuteSwitch: false, // 忽略系统静音开关
      mixWithOther: true // 允许与其他音频混音
    });
    

  3. 检查音频格式:使用 AAC 或 MP3 格式,避免使用 iOS 不支持的格式(如 WAV 可能部分设备无声)。

 示例代码:以下代码为uniapp页面代码

<template>
	<div class="container">
		<textarea v-model="AudioSrc" placeholder="base64数据" :maxlength="-1"></textarea>
		<div class="btns">
			<button @tap="AudioSrc=''">清空</button>
			<button @tap="audioPlay()">{{!IsPlay?"开始":"停止"}}朗读</button>
			<button @tap="save()">保存</button>
		</div>
	</div>
</template>

<script setup>
	import {ref} from 'vue';
	const IsPlay = ref(false)
    // base64音频文件字符 
	const AudioSrc = ref('')
	const innerAudioContext = ref(uni.createInnerAudioContext({
		useWebAudioImplement: false,
	}))
	innerAudioContext.value.onError((err) => {
		console.log('播放失败', err);
		uni.showToast({title: err.errMsg,icon: 'none'});
		IsPlay.value = false
	})
	innerAudioContext.value.onEnded((res) => {
		console.log('播放结束', res);
		IsPlay.value = false
	});
	const PlayText = ref('')
	const audioPlay = async () => {
		IsPlay.value = !IsPlay.value;
		if (IsPlay.value) {
			if (AudioSrc.value) {
				if(!AudioSrc.value.includes('data:audio/mp3;base64,')){
					AudioSrc.value='data:audio/mp3;base64,'+AudioSrc.value
				}
				// #ifdef H5
				innerAudioContext.value.src = AudioSrc.value
				// #endif
				// #ifdef MP-WEIXIN
				const arrayBuffer = uni.base64ToArrayBuffer(AudioSrc.value.replace('data:audio/mp3;base64,',''));
				const fs = wx.getFileSystemManager();
				const tempFilePath = `${wx.env.USER_DATA_PATH}/` + new Date().getTime() + '.mp3';
				fs.writeFileSync(tempFilePath,arrayBuffer, 'binary');
				innerAudioContext.value.src = tempFilePath
				// iOS 额外配置(微信7.0.9+支持) 需要预览到真机测试  去除ios可能会静音播放
				wx.setInnerAudioOption({
					obeyMuteSwitch: false,
					mixWithOther: true, // 与其他音频混音
					success: () => {
						console.log('音频选项设置成功');
					},
					fail: (err) => {
						console.error('音频选项设置失败:', err);
					}
				});
				// #endif
				if (IsPlay.value) {
					// 设置临时文件路径为音频源
					innerAudioContext.value.play();
				}
			} else {
				uni.showToast({title:'未传入音频源',icon: 'none'});
				IsPlay.value = false;
			}
		} else {
			innerAudioContext.value.pause();
			innerAudioContext.value.stop();
		}
	};
	const save = () => {
		if (AudioSrc.value) {
			// #ifdef MP-WEIXIN
			saveBase64Audio(AudioSrc.value, 'Aspan' + new Date().getTime() + '.mp3')
			// #endif
			// #ifdef H5
			uni.showToast({title: '浏览器环境未开发',icon: 'none'});
			// #endif
		} else {
			uni.showToast({title: '朗读后方可保存',icon: 'none'});
		}
	}
	// 权限申请
	const saveBase64Audio = (base64Data, fileName) => {
		// 1. 检查权限
		wx.getSetting({
			success: (res) => {
				console.log(res, '权限 ');
				if (!res.authSetting['scope.writePhotosAlbum']) {
					// 未授权,主动申请
					wx.authorize({
						scope: 'scope.writePhotosAlbum',
						success: () => {
							// 权限申请成功,继续保存文件
							_saveAudioFile(base64Data, fileName);
						},
						fail: (err) => {
							// 用户拒绝授权
							wx.showModal({
								title: '权限申请',
								content: '需要保存文件到本地的权限',
								confirmText: '去授权',
								success: (res) => {
									if (res.confirm) {
										wx.openSetting(); // 打开设置页面让用户手动授权
									}
								}
							});
						}
					});
				} else {
					// 已有权限,直接保存
					_saveAudioFile(base64Data, fileName);
				}
			}
		});
	};

	// 内部保存文件函数
	const _saveAudioFile = (base64Data, fileName) => {
		const arrayBuffer = wx.base64ToArrayBuffer(base64Data.replace('data:audio/mp3;base64,',''));
		const fs = wx.getFileSystemManager();
		// 直接写入用户目录 永久保存
		const tempFilePath = `${wx.env.USER_DATA_PATH}/${fileName}`;
		console.log(tempFilePath);
		fs.writeFile({
			filePath: tempFilePath,
			data: arrayBuffer,
			encoding: 'binary',
			success: (wr) => {
				console.log('写入成功:', wr);
				wx.showToast({title: '已保存到微信文件管理',icon: 'none'});
			},
			fail: (err) => {
				console.error('保存失败:', err);
				wx.showToast({title: '保存失败',icon: 'none'});
			}
		});
	};
</script>

<style lang="less" scoped>
	.container {
		width: 100vw;
		background: #FFF;
		background-position: top left;
		background-size: 100%;
		background-repeat: no-repeat;

		textarea {
			margin:12vh 13px;
			background-color: #F2F3F5;
			width:auto;
			padding: 13px;
			box-sizing: border-box;
			border-radius: 15px;
			height: 150px;
			font-size: 15px;
			line-height: 15px;
		}
		.btns{
			display: flex;align-items: center;justify-content: space-between;
			button{
				width: fit-content;
			}
		}
		
	}
</style>

Base64数据

SUQzAwAAAABPKVBSSVYAAB+fAABYTVAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYjBmOGJlOSwgMjAyMS8xMi8wOC0xOToxMToyMiAgICAgICAgIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wRE09Imh0dHA6Ly9ucy5hZG9iZS5jb20veG1wLzEuMC9EeW5hbWljTWVkaWEvIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTA0LTA2VDEwOjM0OjI3KzA4OjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0wNC0wNlQxMDozNDoyNyswODowMCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpjNWI4NzAxOS02NWYyLTcwNGUtYjIxYi1hNjkyOTQ5MTJmYjgiCiAgIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDJhYTI5MmItZTVjOC0zYTQ3LTg5ZDQtYjU1MjlkZDk3YzliIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZDE0YTBjY2QtNWE1MC01YTQ5LWFkNjEtNDg2MmI3OWFlMTQ2IgogICBkYzpmb3JtYXQ9ImF1ZGlvL21wZWciCiAgIHhtcERNOnBhcnRPZkNvbXBpbGF0aW9uPSJmYWxzZSI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmQxNGEwY2NkLTVhNTAtNWE0OS1hZDYxLTQ4NjJiNzlhZTE0NiIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNS0wMy0yN1QxOTo1ODo1OSswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjMuMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMjFmMjMyMC0wMWEzLTcyNDAtOGYyYS1hZDg4OWMxN2Q2NzEiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDMtMjdUMjA6MDc6NTMrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjAgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Zjk5ODFlMDktOWRiNy0wNDRhLWExZjMtOTllMWY2ZGM1ZGVkIgogICAgICBzdEV2dDp3aGVuPSIyMDI1LTAzLTI3VDIwOjA3OjUzKzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4wIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MTc3NTJlMy1jNTdhLWQ1NDQtYTdmMy0yYzA0YjEwNTgwNmYiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDMtMjdUMjA6MDg6MDkrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjAgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDBiOGFhMDQtMDUwMS0wZDQ0LTliZjEtYmU0YTI3Nzc4NjgwIgogICAgICBzdEV2dDp3aGVuPSIyMDI1LTAzLTI3VDIwOjQxOjEwKzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4wIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iL21ldGFkYXRhIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjhjNzVjYTI2LTgwYTktMDI0Zi04NWNjLWU3ZjRmOGI3YmU2NSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNS0wMy0yN1QyMDo0MToxMCswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjMuMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzZhMTU4YzgtM2FkOS1lZjQ5LWEwNzgtMzEzZWNiNTQwNzAyIgogICAgICBzdEV2dDp3aGVuPSIyMDI1LTAzLTI3VDIwOjQxOjIxKzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4wIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iL21ldGFkYXRhIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmY0MDE0ODhlLWJhMTgtYjA0My04Y2E2LTA5MTVjNTZiZmQzMyIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNS0wMy0yN1QyMjozMzowMiswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjMuMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxNTUyYzQ2NS1lM2U5LWE3NDctOTA4MS0wMTA5MjhhYzU0NWEiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDMtMjdUMjI6MzM6MDIrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjAgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzMTRkOGNhLTVjNjMtY2Y0My1hOWEwLWE0N2I1NjM1OWI4ZiIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNS0wMy0yOFQwOTo0MDoyMiswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjMuMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowNDc2N2UzNS0xMzAwLWQ1NDctODU2Yi1jZWRmYzFiNDFhMTMiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDMtMjhUMDk6NDE6MTIrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjAgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDJhYTI5MmItZTVjOC0zYTQ3LTg5ZDQtYjU1MjlkZDk3YzliIgogICAgICBzdEV2dDp3aGVuPSIyMDI1LTAzLTI4VDA5OjQxOjEyKzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4wIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphMDQ2OWU4MC0wODMzLTcwNDktOTBjMy03ZWZjMjk5YjI3ZDkiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDQtMDZUMTA6MzE6NTMrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjAgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZGEwNjk2Y2YtM2NjOC02NjQyLWIyYWQtZWQ0NDU2OGMxMGJmIgogICAgICBzdEV2dDp3aGVuPSIyMDI1LTA0LTA2VDEwOjM0OjI3KzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4wIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iL21ldGFkYXRhIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmM1Yjg3MDE5LTY1ZjItNzA0ZS1iMjFiLWE2OTI5NDkxMmZiOCIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNS0wNC0wNlQxMDozNDoyNyswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjMuMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogICA8eG1wTU06RGVyaXZlZEZyb20KICAgIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDQ3NjdlMzUtMTMwMC1kNTQ3LTg1NmItY2VkZmMxYjQxYTEzIgogICAgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpkMTRhMGNjZC01YTUwLTVhNDktYWQ2MS00ODYyYjc5YWUxNDYiCiAgICBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZDE0YTBjY2QtNWE1MC01YTQ5LWFkNjEtNDg2MmI3OWFlMTQ2Ii8+CiAgIDx4bXBETTpUcmFja3M+CiAgICA8cmRmOkJhZz4KICAgICA8cmRmOmxpPgogICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICB4bXBETTp0cmFja05hbWU9IkN1ZVBvaW50IE1hcmtlcnMiCiAgICAgICB4bXBETTp0cmFja1R5cGU9IkN1ZSIKICAgICAgIHhtcERNOmZyYW1lUmF0ZT0iZjQ4MDAwIj4KICAgICAgPHhtcERNOm1hcmtlcnM+CiAgICAgICA8cmRmOlNlcT4KICAgICAgICA8cmRmOmxpPgogICAgICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICAgICB4bXBETTpzdGFydFRpbWU9IjAiCiAgICAgICAgICB4bXBETTpkdXJhdGlvbj0iNDgwIgogICAgICAgICAgeG1wRE06bmFtZT0i5qCH6K6wIDc0IgogICAgICAgICAgeG1wRE06Z3VpZD0ieG1wOmlkOjVjMDQxODFhLTE1NWQtMGU0Ny1iZDU0LTczOTlhNTdlNTE3ZiI+CiAgICAgICAgIDx4bXBETTpjdWVQb2ludFBhcmFtcz4KICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgIDxyZGY6bGkKICAgICAgICAgICAgeG1wRE06a2V5PSJtYXJrZXJfZ3VpZCIKICAgICAgICAgICAgeG1wRE06dmFsdWU9InhtcDppZDo1YzA0MTgxYS0xNTVkLTBlNDctYmQ1NC03Mzk5YTU3ZTUxN2YiLz4KICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBETTpjdWVQb2ludFBhcmFtcz4KICAgICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgICAgPC9yZGY6bGk+CiAgICAgICA8L3JkZjpTZXE+CiAgICAgIDwveG1wRE06bWFya2Vycz4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgPC9yZGY6bGk+CiAgICAgPHJkZjpsaQogICAgICB4bXBETTp0cmFja05hbWU9IkNEIFRyYWNrIE1hcmtlcnMiCiAgICAgIHhtcERNOnRyYWNrVHlwZT0iVHJhY2siCiAgICAgIHhtcERNOmZyYW1lUmF0ZT0iZjQ4MDAwIi8+CiAgICAgPHJkZjpsaQogICAgICB4bXBETTp0cmFja05hbWU9IlN1YmNsaXAgTWFya2VycyIKICAgICAgeG1wRE06dHJhY2tUeXBlPSJJbk91dCIKICAgICAgeG1wRE06ZnJhbWVSYXRlPSJmNDgwMDAiLz4KICAgIDwvcmRmOkJhZz4KICAgPC94bXBETTpUcmFja3M+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+7TAAAAUIAEuAAAAIAAAJcAAAAT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7QEsQAAAeAAAOD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7TAwAA/8AEuAAAAIK4AJcAAAAT/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7TAwAA/8AEuAAAAIK4AJcAAAAT///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUQUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐