美文网首页
amr文件播放前端实现

amr文件播放前端实现

作者: Elliott_077d | 来源:发表于2022-11-30 15:22 被阅读0次

最近工作的时候发现了这样的一个问题,amr格式的文件audio标签不能解码播放。

查了下mdn相关资料,发现确实是不支持amr后缀的文件

一般情况下是不会有这样的需求的,问题是当后端不愿意去做这个事的时候,就得想办法了。

上网查资料发现了这么一个解码amr的库

那我们要做的就是在此基础上提供的api来封装一个audio播放器,忽略UI因素,要满足如下几个场景

  1. 支持播放暂停
  2. 支持进度条显示
  3. amr和普通文件可以使用同一套api

于是基于原生audio的一些特性和解码库,封装了一个工具库

这里放一个基于vue二次封装使用的例子,有同样需求的朋友可以使用,欢迎提建议和star

<template>
  <div class="player" v-loading="loading">
    <i
      :class="state==='pause'?'el-icon-video-play btn':'el-icon-video-pause btn'"
      @click="playOrPause"
    ></i>
    <el-progress :percentage="percentage" :show-text="false"></el-progress>
  </div>
</template>

<script >
import { AudioPlayer } from "audio-amr-player";

export default {
  data() {
    return {
      percentage: 0,
      state: "pause",
      loading: true
    };
  },
  props: {
    url: {
      type: String
    },
    file: {
      type: File,
      validator(val) {
        return val instanceof File;
      }
    }
  },

  watch: {
    url() {
      this.init();
    },
    file() {
      this.init();
    }
  },

  mounted() {
    this.init();
  },

  methods: {
    playOrPause() {
      if (this.state === "pause") {
        this.state = "play";
        this.player.play();
      } else {
        this.state = "pause";
        this.player.pause();
      }
    },
    init() {
      let _this = this;
      this.player = new AudioPlayer({
        url: this.url,
        file: this.file,
        afterInit() {
          _this.loading = false;
        }
      });
      this.player.onTimeUpdate(time => {
        let rate =
          time > this.player.duration ? 1 : time / this.player.duration;
        this.percentage = rate * 100;
      });
      this.player.onEnd(() => {
        this.state = "pause";
      });
    }
  },
  beforeDestroy() {
    this.player.destroy();
  }
};
</script>

相关文章

  • amr文件播放前端实现

    最近工作的时候发现了这样的一个问题,amr格式的文件audio标签不能解码播放。 查了下mdn相关资料[https...

  • vue.js实现audio播放amr格式音频

    纯前端解码、播放、录音、编码 AMR 音频,无须服务器支持,基于 [amr.js]注意:由于使用了 amr.js ...

  • benz-amr-recorder

    benz-amr-recorder 纯前端解码、播放、录音、编码AMP音频,无需服务器支持,基于amr.js和Re...

  • vue 播放.amr语音文件

    别人在体验人间的爱,而我在体验人间的冷暖 我的github: 李大玄[https://github.com/lid...

  • 关于iOS设备播放amr格式的音频文件

    在iOS 4.3之后,AVAudioPlayer是不支持播放amr文件格式的音频,AudioServicesPla...

  • 转码

    ios 不能播放amr格式。ios 录制的音频位wav格式。 wav转amr可以使用opencore框架

  • iOS 播放不了android的amr文件

    AMR AMR全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频(手机打电话),...

  • 基于ffmpeg转写amr到mp3

    背景 由于公司数据上传到阿里云,采用到音频格式是amr,在h5播放amr格式到时候,如果长度比较长,那么会出现播放...

  • AMR音频

    AMR文件格式分析 AMR音频编解码 AMR音频格式分析 音视频软件 Ubuntu下音/视频转换工具tra...

  • iOS 仿微信发送语音消息按钮 - 语音播放器(三)

    Part 3 :语音播放器 Part 2 中的录音机录制完成,并把amr文件的data通过服务器发送给对方,对方收...

网友评论

      本文标题:amr文件播放前端实现

      本文链接:https://www.haomeiwen.com/subject/ejpdfdtx.html