Heim > Web-Frontend > uni-app > So lösen Sie das Problem eines Tonwiedergabefehlers in Uniapp

So lösen Sie das Problem eines Tonwiedergabefehlers in Uniapp

藏色散人
Freigeben: 2023-01-13 00:44:37
Original
6417 Leute haben es durchsucht

Lösung für den Uniapp-Soundwiedergabefehler: 1. Öffnen Sie die entsprechende Codedatei und führen Sie dann direkt die Objektwiedergabemethode aus, um den ursprünglichen Quellpfad zu ersetzen. 2. Aktualisieren Sie die Version des Entwicklungstools.

So lösen Sie das Problem eines Tonwiedergabefehlers in Uniapp

Die Betriebsumgebung dieses Tutorials: Windows7-System, Uni-App2.5.1-Version, DELL G3-Computer.

Uni-App-Sprachdatei-Wiedergabeproblem, innerAudioContext kann nicht zerstört werden! ! !

uni-app voice createInnerAudioContext-Objekt kann nicht zerstört werden und stürzt ab! ! !

Ich habe heute beim Packen festgestellt, dass die Stimme nicht abgespielt werden konnte, also habe ich nach dem Grund gesucht, dass dieses Problem behoben wurde, also habe ich das Problem schnell gefunden und das Original verwendet Verpackung. Dieser Fehler ist wirklich unmöglich.

Hiermit nehme ich den Fehler zur Kenntnis, dass die Stimme heute nicht abgespielt werden kann. Die Sprachwiedergabe wird mit dem integrierten uni.createInnerAudioContext(); erstellt. Beim Abspielen wird ein Fehler gemeldet und stürzt ab.

Posten Sie den Code, so habe ich ihn geschrieben. Wenn die aktuelle Methode aufgerufen wird, fügen Sie den Code direkt ein. Kopieren Sie ihn nicht direkt.

<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>
Nach dem Login kopieren

Wenn Sie die beiden Codezeilen oben sehen, denken Sie daran, sie nicht zu zerstören, sondern führen Sie einfach die Objektwiedergabemethode direkt aus. Diese Methode verwendet ein Objekt, das standardmäßig den ursprünglichen Quellpfad ersetzt und direkt abgespielt werden kann.

Ein weiterer Grund ist, dass die Version des Entwicklungstools zu alt ist, hauptsächlich aufgrund dieser Version Prozess, weniger Probleme.

Der folgende Code kann kopiert werden

<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>
Nach dem Login kopieren

Empfohlen: „uniapp-Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem eines Tonwiedergabefehlers in Uniapp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage