uniapp 微信小程序 使用video 播放mp3、wav、flac等音频文件 报错 MEDIA_ERR_DECODE(-11103,11010001)

这篇具有很好参考价值的文章主要介绍了uniapp 微信小程序 使用video 播放mp3、wav、flac等音频文件 报错 MEDIA_ERR_DECODE(-11103,11010001)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 官方解释是解码发生了错误,当是我对音频文件进行转码后并未解决这个问题,但是我想到解决方案是使用audio 标签,但是样式又非常丑自能选择自己写,然后又出现个问题audio标签获取不了播放音频总时长,差点没缓过气来。。。最后苦思冥想到了解决方案,使用video标签获取播放音频时长audio标签播放音频,最终还是解决了。
uniapp使用vedio.js转换音视频格式,uni-app,vue.js,前端

代码实现

    HTML

        这里使用ui组件是uview组件库

                进度条组件 u-slider 操作播放进度

	<view class="audio_box" v-for="(item,index) in detail.audio" :key="index">
						<view class="title_top">
							<view>景区指南</view>
							<view style="font-size: 24rpx;font-weight: 400;">
								<text style="font-size: 24rpx;font-weight: 400;">真人讲解</text>
								<text style="color: #EBEBEB;margin: 0 16rpx;">|</text>
								<text>随用随听</text>
							</view>
						</view>
						<view style="margin-top: 40rpx;">
							<video class="hidden" :src="item.url" :id="`myVideo${index}`"
								@loadedmetadata="(evet)=>loadedmetadata(evet,index)"
								></video> 
							<audio :id="`myAudio${index}`" @timeupdate="(evet)=>timeupdate(evet,index)" class="hidden" :src="item.url"></audio>
							
							<u-slider v-model="audioArray[index].sliderValue" active-color="#00CCB1"
								@start="onSlide('start',index)" @end="onSlide('end',index)"></u-slider>
							<view class="progress_time_box">
								<text>{{audioArray[index].payTime || '00:00'}}</text>
								<text v-if="audioArray[index].finalTime">{{audioArray[index].finalTime}}</text>
								<u-loadmore v-else :icon="true" :loadText="{loading:'加载中',loadmore:'加载中'}" />
							</view>
							<view style="text-align: center;" @click="()=> onPlayAudio(index)">
								<image v-if="audioArray[index].playSwitchIcon" class="pay_button"
									src="../../static/images/annualCard_img/start_icon@2x.png" />
								<image v-else class="pay_button"
									src="../../static/images/annualCard_img/end_icon@2x.png" />
							</view>
						</view>
					</view>
JS

转换播放时间为秒

function calcTimer(timer) { // 将毫秒转换为时间格式
		if (timer === 0 || typeof timer !== 'number') return '00:00';
		let mm = Math.floor(timer / 60);
		let ss = Math.floor(timer % 60);
		if (mm < 10) mm = '0' + mm;
		if (ss < 10) ss = '0' + ss;
		return mm + ':' + ss;
	}

1.获取文件播放总时长

loadedmetadata(evet, index) { // 立即获取音频时间
				const str = calcTimer(evet.detail.duration);
				this.audioArray[index] = {
					duration: evet.detail.duration,//播放时间总时长
					finalTime: str,//播放时间总时长(展示时间)
					playSwitchIcon: false,//切换播放音频图片
					sliderValue: 0//播放音频进度条
				};
				console.log(this.audioArray,'this.audioArray')
				this.$forceUpdate();
			}

2.点击播放

onPlayAudio(index) { // 点击开始播放
                //由于我这个是遍历出来需要获取下标来确认每个标签 可以仔细查看HTML片段
				const { pause, play } = uni.createAudioContext(`myAudio${index}`)
				this.audioArray[index].playSwitchIcon ? pause() : play(); //开始播放 和 暂停播放
				this.audioArray[index].playSwitchIcon = !this.audioArray[index].playSwitchIcon; //切换播放图标
				this.$forceUpdate()
			},

3.开始播放音频

timeupdate(evet, index) { // 播放开始了
				const current = evet.detail.currentTime,
					str = calcTimer(current),
					result = (Math.round(Math.floor(current) / Math.floor(evet.detail.duration) * 10000) / 100);//转换播放时间为秒
				this.audioArray[index].sliderValue = Number(result) || 0;//更新当前进度条时间
				this.audioArray[index].payTime = str; //更新当前播放音频时间
				this.$forceUpdate();
				if (str === this.audioArray[index].finalTime) {
					// 播放时间和获取的时间相等了就自动关闭
					this.audioArray[index].playSwitchIcon = false;
				}
			}

4.滑动进度条组件,调整播放进度

onSlide(type, index) { // 滑动调整播放时间
				const { pause, play, seek } = uni.createAudioContext(`myAudio${index}`);
				if (type === 'start') {
					pause(); //滑动开始暂停
					this.audioArray[index].playSwitchIcon = false;
				} else {
					seek(this.audioArray[index].sliderValue / 100 * this.audioArray[index].duration); // 总时长除以现在的进度
					play(); //滑动结束后播放
					this.audioArray[index].playSwitchIcon = true;
				}
			}

写的一般还请有大佬指点一二文章来源地址https://www.toymoban.com/news/detail-768830.html

到了这里,关于uniapp 微信小程序 使用video 播放mp3、wav、flac等音频文件 报错 MEDIA_ERR_DECODE(-11103,11010001)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用ffmpeg将m4a及wav等文件转换为MP3格式

    要使用ffmpeg将m4a及wav等文件转换为MP3格式,您可以按照以下步骤进行操作: 确保您已经安装了ffmpeg软件。如果没有安装,请访问ffmpeg的官方网站https://ffmpeg.org/ 并按照说明进行安装。 Win10 / Win11 可以通过 winget 命令安装 注意前提已经在微软应用商店安装了 应用安装程序 安装

    2024年02月13日
    浏览(24)
  • ffmpeg批量转换wav为mp3

    1、新建一个txt文件,并复制如下代码进入,然后保存。 2、把文件后缀修改为bat 。 3、把后缀为bat的文件放到要批量处理的视频文件夹里面。 4、在确保安装了ffmpeg的情况下,双击bat文件执行即可。 5、参数说明: -i          输入文件,这里指的就是视频文件。 -y       

    2024年01月20日
    浏览(34)
  • 微信小程序video 点击自动全屏播放

    2024年02月19日
    浏览(34)
  • 已解决 微信小程序uniapp使用video的时候全屏方法@fullscreenchange会执行两次

    原因: fullscreenchange事件会在进入全屏和退出全屏时各触发一次。所以全屏切换期间会触发两次该事件。 解决方案: js Copy code 在监听fullscreenchange事件时,使用变量进行防抖处理。比如设置一个变量来记录上一次的全屏状态,只有当状态真正发生改变时才执行处理逻辑。 使用

    2024年02月07日
    浏览(35)
  • uniapp小程序中使用video视频播放卡顿

    问题:在使用uniapp小程序的video视频播放,视频已经在播放了,但是进度条没走,还是卡顿的状态(测试ios能正常使用,安卓手机会出现此问题) 在网上找了很多方法,最多的说是用:custom-cache=\\\"false\\\",试了并没有效果,看来和我问题不一样,后来用了个简单粗暴的方法,发现是有效果的,以下是

    2024年04月11日
    浏览(29)
  • 微信小程序 video 组件[播新视频旧视频暂停,再次播放延续上次播放时长]

    1、引言 微信官方文档网址:媒体组件 / video (qq.com) 2、播新视频旧视频暂停   问题: 多个视频同时播放的问题 需求:         1. 在点击播放的事件中需要找到上一个播放的视频         2. 在播放新的视频之前关闭上一个正在播放的视频 关键:         1. 如何

    2024年02月19日
    浏览(28)
  • 基于FFMpeg实现音频mp3/aac/wav解码

    编译环境:Ubuntu16.04 64位 交叉编译工具:arm-himix200-linux-gcc 我这里使用的是ffmpeg-5.1.2.tar.gz,下载地址点击下载地址。 这样,/root/ffmpeg-5.1.2/output下面就是咱们要的程序,bin目录下ffmpeg可以在开发板上运行,include下是需要的头文件,lib下是需要的静态库,share/ffmpeg/examples是一些

    2024年02月11日
    浏览(39)
  • 音频文件PCM、WAV、MP3的区别以及文件合并

    采样率即采样频率,指的一秒内的采样次数,它反映了采样点之间的间隔大小。常说的 44.1KHz 采样率,也即 1 秒采集了 44100 个样本。间隔越小,丢失的信息越少,数字声音就越逼真细腻,要求的存储量也就越大。由于计算机的工作速度和存储容量有限,而且人耳的听觉上限为

    2024年02月15日
    浏览(29)
  • Java pcm/wav文件转mp3(流的方式)

    pcm与wav文件是无损音质,几分钟的文件就高达20几M,要求将pcm/wav文件转mp3文件,既完成文件的压缩,又不影响使用。 网上找了很多例子,大都是Lame与FFmpeg,但前者的例子总是DOS命令控制lame.exe,后者好些,但是需要使用音频文件的绝对路径,这就需要频繁创建临时文件,不

    2024年02月14日
    浏览(29)
  • uniapp微信小程序使用视频组件video时提示[渲染层网络层错误] Failed to load media错误

    在进行微信小程序开发的时候,使用到的video组件,在成功把视频渲染出来之后,控制台会报这样的错 [渲染层网络层错误] Failed to load media https://temp.mp4#devtools_no_referrer net::ERR_FAILED  From server 222.76.205.74(env: Windows,mp,1.06.2301160; lib: 3.2.4)  通过百度之后尝试过两种方式 一:添加

    2024年02月03日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包