Vue实现动态src实现播放音频(audio标签)本地

项目场景:

技术场景:Vue2,iview

需求场景:公司项目要实现一个扫码枪录入条码,并在录入条码后动态播放一段音频。


问题描述

使用原生audio标签无法成功播放音频。

<div>
    <audio controls ref="audio">
        <source src="./扫描成功.mp3" />
     </audio>
</div> 

报错信息:

Uncaught (in promise) DOMException: Failed to load because no supported source was found.


原因分析:

无法读取音频文件;

音频文件需要import 或require()导入本地;


解决方案:

直接上代码咯!!

<div>
      <audio controls ref="audio">
        <source src="./扫描成功.mp3" />
      </audio>
    </div>
    <z-button @click="play('扫描成功.mp3')">播放1</z-button>
    <z-button @click="play('未命名文本3.mp3')">播放2</z-button>
<div>
<script>
    play(val) {
      let music = new Audio()
      // 这里获取播放路径
      music = require(`./${val}`)
      this.$refs.audio.src = music
      this.$nextTick(res => {
        const { audio } = this.$refs
        audio.load()
        audio.play()
      })
    }
</script>

例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Vue实现播放视频同时收听音频,你可以按照以下步骤进行操作: 1. 在 Vue 组件中引入 video.js 或其他视频播放库,并在模板中添加 video 标签,例如: ``` <template> <div> <video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="MY_VIDEO_POSTER.jpg" data-setup="{}"> <source src="MY_VIDEO.mp4" type='video/mp4'> <source src="MY_VIDEO.webm" type='video/webm'> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a> </p> </video> </div> </template> ``` 2. 在 video 标签中添加 `<audio>` 标签,用于播放音频: ``` <template> <div> <video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="MY_VIDEO_POSTER.jpg" data-setup="{}"> <source src="MY_VIDEO.mp4" type='video/mp4'> <source src="MY_VIDEO.webm" type='video/webm'> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a> </p> <audio id="my-audio" src="MY_AUDIO.mp3"></audio> </video> </div> </template> ``` 3. 在 Vue 组件的方法中,添加事件监听器,用于在视频播放时同时播放音频: ``` <template> <div> <video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="MY_VIDEO_POSTER.jpg" data-setup="{}" @play="playAudio"> <source src="MY_VIDEO.mp4" type='video/mp4'> <source src="MY_VIDEO.webm" type='video/webm'> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a> </p> <audio id="my-audio" src="MY_AUDIO.mp3"></audio> </video> </div> </template> <script> import videojs from 'video.js'; export default { methods: { playAudio() { const audio = document.getElementById('my-audio'); audio.currentTime = 0; audio.play(); } }, mounted() { // 初始化视频播放器 videojs('my-video'); } }; </script> ``` 在上面的代码中,我们在 video 标签上添加了 `@play` 事件监听器,当视频播放时会触发 `playAudio` 方法,该方法会获取到音频元素并将其播放。需要注意的是,我们在播放音频前将音频的 `currentTime` 设置为 0,以确保每次播放都是从音频的开头开始。 以上就是在 Vue实现播放视频同时收听音频的简单示例。实际应用中,你可能还需要考虑音视频的加载、播放控制等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值