結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありません。 Vue部分: cnpm インストール recorderx --save または npm インストール recorderx --save 特定のコンポーネントに導入 <スクリプト> 「axios」からaxiosをインポートします。 輸入 { トースト } から "vant" へ; Recorderxをインポートします。{ エンコードタイプ } から "recorderx"; 定数rc = 新しいレコーダーx(); エクスポートデフォルト{ データ(){ 戻る { 開始時刻:null、 終了時間:null } }, 方法:{ //音声録音recordingVoice() { // that.news_img = !that.news_img rc.start() .then(() => { this.startime = 新しい Date(); }) .catch(エラー => { alert("マイクを取得できませんでした"); }); }, //音声を送信する async sendVoice() { rc.一時停止(); this.endtime = 新しい日付(); wav = rc.getRecord({ エンコード先: ENCODE_TYPE.WAV、 圧縮可能: true }); voiceTime = Math.ceil((this.endtime - this.starttime) / 1000); とします。 フォームデータを作成します。 formData.append("chatVoice", wav, Date.parse(new Date()) + ".wav"); formData.append("音声時間", 音声時間); ヘッダーを{ ヘッダー: { 「コンテンツタイプ」: 「マルチパート/フォームデータ」 } }; アクシオス .post("/api/uploadChatVoice", フォームデータ, ヘッダー) .then(res => { //コンソール.log(res) (res.data.status === 2)の場合{ rcをクリアします。 chatVoiceMsg を res.data.chatVoiceMsg とします。 } } }); }, //オーディオを再生する playChatVoice(audio) { audioUrl を audio とします。 if(オーディオURL){ audioExample を新しい Audio() に追加します。 audioExample.src = audioUrl; //再生したいオーディオアドレス audioExample.play(); }それ以外{ Toast('音声アドレスが破棄されました'); } }, } }; </スクリプト> ノード部分: cnpm マルチパーティをインストール --save 定数 express = require('express'); 定数ルーター = express.Router(); マルチパーティは必須です。 定数NET_URL = 'http://127.0.0.1:3000/'; router.post('/uploadChatVoice', (req, res, next) => { フォームを新しい multiparty.Form() にします。 フォーム.uploadDir = 'chatVoiceUpload'; form.parse(req, (err, フィールド, ファイル) => { console.log(ファイル、フィールド) chatVoiceUrl = NET_URL + files.chatVoice[0].path.replace(/\\/g, "/"); とします。 chatVoiceTime = fields.voiceTime[0]とします コンソールログ(チャットボイスURL) チャットボイスURLの場合 res.json({ ステータス: 2, チャットボイスメッセージ: { チャットボイスタイム、 チャットボイスURL、 } }) } それ以外 { res.json({ ステータス: 1, チャットボイスメッセージ: { チャットボイスタイム: "", チャットボイスURL: "" } }) } //console.log(ファイル) }) }) app.jsで音声ファイルのパスを定義する app.use('/chatVoiceUpload', express.static('chatVoiceUpload')); Vue+node によるオーディオ録音・再生機能の実現についての記事はこれで終わりです。Vue オーディオ録音・再生に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7.18 無料インストール版ウィンドウ設定方法
>>: Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード
この記事は51CTOブログの著者wjw555の作品を参照しています。スクリプトの内容: vim イン...
目次1. はじめに2. シナリオ3. 環境を整える3.1 環境変数の挿入4. 最後に1. はじめに一...
目次背景1. 思考分析2. ページ構成2.1 HTML レイヤー2.2 CSS レイヤー2.3 JS...
この記事では、Vueで複数の画像を追加、表示、削除するための具体的なコードを参考までに紹介します。具...
この記事では、MySQL の左結合における on 条件と where 条件の使用法の違いを例を使って...
目次序文:親切なヒント:変数1. 免責事項2. 譲渡3. 2つの小さな文法上の詳細変数の命名規則なぜ...
Docker を使用して MySQL イメージをプルしようとして 30 分経っても失敗したため、代わ...
CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...
管理者権限でcmdを実行する slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-...
UNIONの使用ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELEC...
HTML コメント。コードの横に HTML コメントを付ける必要があることがよくあります。そうするこ...
目次序文1. MySQLはSSL構成を有効にする1.1 SSLが有効になっているかどうかを確認する1...
1. まずcenterosに付属のJDKをアンインストールします rpm-qa|grepopenjd...
背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...
1. はじめにtable_cache は非常に重要な MySQL パフォーマンス パラメータであり、...