如何使用 React JS 将 WEBA 或 Opus 音频文件转换为 Mp3?

Posted

技术标签:

【中文标题】如何使用 React JS 将 WEBA 或 Opus 音频文件转换为 Mp3?【英文标题】:How to convert WEBA or Opus audio file to Mp3 using React JS? 【发布时间】:2021-06-07 16:54:45 【问题描述】:

我想在客户端实现一个转换器。 有没有可能这样做?

Actual Format of the recorded file

【问题讨论】:

这 (***.com/questions/16881703/…) 能回答您的问题吗? 我正在使用 react-media-recorder npm 包进行录制。它以 wav 形式输出。我想将其转换为 MP3。 【参考方案1】:

这个使用webassemblyWEBM转换为audio/mp3

import React from "react";
import  render  from "react-dom";
import vmsg from "vmsg";

const recorder = new vmsg.Recorder(
  wasmURL: "https://unpkg.com/vmsg@0.3.0/vmsg.wasm"
);

class App extends React.Component 
  state = 
    isLoading: false,
    isRecording: false,
    recordings: []
  ;
  record = async () => 
    this.setState( isLoading: true );

    if (this.state.isRecording) 
      const blob = await recorder.stopRecording();
      this.setState(
        isLoading: false,
        isRecording: false,
        recordings: this.state.recordings.concat(URL.createObjectURL(blob))
      );
     else 
      try 
        await recorder.initAudio();
        await recorder.initWorker();
        recorder.startRecording();
        this.setState( isLoading: false, isRecording: true );
       catch (e) 
        console.error(e);
        this.setState( isLoading: false );
      
    
  ;
  render() 
    const  isLoading, isRecording, recordings  = this.state;
    return (
      <React.Fragment>
        <button disabled=isLoading onClick=this.record>
          isRecording ? "Stop" : "Record"
        </button>
        <ul style= listStyle: "none", padding: 0 >
          recordings.map(url => (
            <li key=url>
              <audio src=url controls />
            </li>
          ))
        </ul>
      </React.Fragment>
    );
  

代码沙箱 => https://codesandbox.io/s/patient-tree-9ub7x?file=/src/App.js

【讨论】:

非常感谢您的回答。同样的问题也发生在这里。即使它给出的格式为.mp3。实际的文件格式是 WebM。我想显示录制时间。我用几张截图编辑了我的问题。 @Thilanka,我已经更新了答案。现在它将 WebM 音频转换为 mp3 格式。验证后请将此标记为答案。谢谢!!

以上是关于如何使用 React JS 将 WEBA 或 Opus 音频文件转换为 Mp3?的主要内容,如果未能解决你的问题,请参考以下文章

CRUD op Express.js Node.js Mysql 无法使用 MVC 插入

如何在 react.js 中跨子组件持久化数据或状态?

将 Strophe.js 与 React Native 一起使用

如何在 keycloak 的 ftl 文件中包含 React js 文件?

如何使用 chart.js(react-chartjs-2) 实现类似此图像的效果?

我应该将我的 html 代码添加到我的 react 应用程序上的 index.html 或 App.js 吗?