Maison  >  Article  >  interface Web  >  Comment résoudre le problème de l'erreur de lecture du son dans Uniapp

Comment résoudre le problème de l'erreur de lecture du son dans Uniapp

藏色散人
藏色散人original
2021-02-03 11:47:436366parcourir

Solution à l'erreur de lecture du son uniapp : 1. Ouvrez le fichier de code correspondant, puis exécutez directement la méthode de lecture d'objet pour remplacer le chemin src d'origine ; 2. Mettez à jour la version de l'outil de développement.

Comment résoudre le problème de l'erreur de lecture du son dans Uniapp

L'environnement d'exploitation de ce tutoriel : système windows7, version uni-app2.5.1, ordinateur DELL G3.

Problème de lecture de fichier vocal uni-app, innerAudioContext ne peut pas être détruit ! ! !

L'objet uni-app voice createInnerAudioContext ne peut pas être détruit et plante ! ! !

J'ai constaté que la voix ne pouvait pas être jouée lors de l'emballage aujourd'hui, alors j'ai cherché la raison, je me suis souvenu que ce problème avait été résolu, j'ai donc rapidement trouvé le problème, j'ai utilisé le mauvais projet et j'ai utilisé. celui d'origine pour l'emballage. Cette erreur est vraiment impardonnable.

J'enregistre par la présente l'erreur selon laquelle la voix ne peut pas être jouée aujourd'hui. La lecture vocale est créée à l'aide du uni.createInnerAudioContext();. Lors de la lecture, une erreur est signalée et plante.

Publiez le code, c'est comme ça que je l'ai écrit. Lorsque la méthode actuelle est appelée, collez le code directement. C'est faux, ne le copiez pas directement, frère.

<script>
	const  innerAudioContext = uni.createInnerAudioContext();data() {
			return {```};
		},
		methods: {
		hechengAudio(audioPram) {
				// innerAudioContext.stop();
				var dd = audioPram.replace(/<\/?.+?>/g, "");
				audioPram = dd.replace(/ /g, ""); //dds为得到后的内容

				if (audioPram != this.startAudio) {
					this.startPage = false;
				}
				var url = this.getMp3 + &#39;cuid=&#39; + uni.getSystemInfoSync().version + &#39;&lan=zh&ctp=1&tok=&#39; + this.$token() +
					&#39;&tex=&#39; +
					audioPram + &#39;&vol=5&per=0&spd=6&pit=5&aue=3&#39;;
				// console.log(JSON.stringify(resSave));
				console.log(url);
				// #ifdef APP-PLUS


				// 下面这两句是重点, 拿本本记下..............
				 if (innerAudioContext != undefined) {
				 	innerAudioContext.stop();
				 }
				 innerAudioContext = uni.createInnerAudioContext();
				// 上面这两句是重点, 拿本本记下..............


			 this.pageValue = this.value; 
				console.log(&#39;src是空的吗 -----------&#39; + url)
				innerAudioContext.stop();
				innerAudioContext.src = url;
				innerAudioContext.play();// 				if (url != &#39;&#39;) {// 					innerAudioContext.play();// 				} else {// 					console.log(&#39;src是空的吗 -----------&#39; + url)// 					uni.showToast({// 						title: &#39;src是空的 不能执行&#39;,// 						mask: true,// 						duration: 2000,// 						icon: "none"// 					});// // 					return// 				}
				innerAudioContext.onPlay(() => {
					console.log(&#39;开始播放&#39;)
				})
				innerAudioContext.onStop(() => {
					console.log(&#39;i am onStop&#39;)
					//播放停止,销毁该实例
					// innerAudioContext.stop()
				})
				innerAudioContext.onEnded(() => {
					console.log(&#39;i am onEnded&#39;)
					//播放结束,销毁该实例
					// innerAudioContext.stop()
					console.log(&#39;已执行destory()&#39;)
				})
				innerAudioContext.onError((res) => {
					console.log(result.errMsg)
					console.log(result.errCode)
					// innerAudioContext.stop()
				})
				// #endif
				// #ifdef MP-WEIXIN
				var that = this;
				uni.downloadFile({
					url: url,
					success(res) {
						if (innerAudioContext != undefined) {
							innerAudioContext.stop();
						}
						innerAudioContext = uni.createInnerAudioContext();
						that.pageValue = that.value;
						innerAudioContext.src = res.tempFilePath;
						innerAudioContext.play();
						innerAudioContext.onPlay(() => {
							console.log(&#39;开始播放&#39;)
						})
						innerAudioContext.onStop(() => {
							console.log(&#39;i am onStop&#39;)
							innerAudioContext.stop()
							//播放停止,销毁该实例
							innerAudioContext.stop()


						})
						innerAudioContext.onEnded(() => {
							console.log(&#39;i am onEnded&#39;)
							//播放结束,销毁该实例
							innerAudioContext.stop()
							console.log(&#39;已执行destory()&#39;)
						})
						innerAudioContext.onError((res) => {
							console.log(result.errMsg)
							console.log(result.errCode)
							innerAudioContext.stop()
						})
					}
				})
				// #endif


			},

		},			}</script>

Lorsque vous voyez les deux lignes de code ci-dessus, n'oubliez pas de ne pas les détruire, exécutez simplement la méthode de lecture d'objet directement. Cette méthode utilise un objet, qui remplacera le chemin src d'origine par défaut et pourra être joué directement

Une autre raison est que la version de l'outil de développement est trop ancienne. Ma version actuelle est la 1.6.2, principalement. Cette version du processus présente moins de problèmes.

Le code suivant peut être copié

<script>
	const  innerAudioContext = uni.createInnerAudioContext();data() {
			return {```};
		},
		methods: {
		hechengAudio(audioPram) {
				// innerAudioContext.stop();
				var dd = audioPram.replace(/<\/?.+?>/g, "");
				audioPram = dd.replace(/ /g, ""); //dds为得到后的内容

				if (audioPram != this.startAudio) {
					this.startPage = false;
				}
				var url = this.getMp3 + &#39;cuid=&#39; + uni.getSystemInfoSync().version + &#39;&lan=zh&ctp=1&tok=&#39; + this.$token() +
					&#39;&tex=&#39; +
					audioPram + &#39;&vol=5&per=0&spd=6&pit=5&aue=3&#39;;
				// console.log(JSON.stringify(resSave));
				console.log(url);
				// #ifdef APP-PLUS
			 this.pageValue = this.value; 
				console.log(&#39;src是空的吗 -----------&#39; + url)
				innerAudioContext.stop();
				innerAudioContext.src = url;
				innerAudioContext.play();
				innerAudioContext.onPlay(() => {
					console.log(&#39;开始播放&#39;)
				})
				innerAudioContext.onStop(() => {
					console.log(&#39;i am onStop&#39;)
					//播放停止,销毁该实例
					// innerAudioContext.stop()
				})
				innerAudioContext.onEnded(() => {
					console.log(&#39;i am onEnded&#39;)
					//播放结束,销毁该实例
					// innerAudioContext.stop()
					console.log(&#39;已执行destory()&#39;)
				})
				innerAudioContext.onError((res) => {
					console.log(result.errMsg)
					console.log(result.errCode)
					// innerAudioContext.stop()
				})
				// #endif
				// #ifdef MP-WEIXIN
				var that = this;
				uni.downloadFile({
					url: url,
					success(res) {
						if (innerAudioContext != undefined) {
							innerAudioContext.stop();
						}
						innerAudioContext = uni.createInnerAudioContext();
						that.pageValue = that.value;
						innerAudioContext.src = res.tempFilePath;
						innerAudioContext.play();
						innerAudioContext.onPlay(() => {
							console.log(&#39;开始播放&#39;)
						})
						innerAudioContext.onStop(() => {
							console.log(&#39;i am onStop&#39;)
							innerAudioContext.stop()
							//播放停止,销毁该实例
							innerAudioContext.stop()


						})
						innerAudioContext.onEnded(() => {
							console.log(&#39;i am onEnded&#39;)
							//播放结束,销毁该实例
							innerAudioContext.stop()
							console.log(&#39;已执行destory()&#39;)
						})
						innerAudioContext.onError((res) => {
							console.log(result.errMsg)
							console.log(result.errCode)
							innerAudioContext.stop()
						})
					}
				})
				// #endif


			},

		},			}</script>

Recommandé : "tutoriel uniapp"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn