Vue+nodeはオーディオ録音・再生機能を実現

Vue+nodeはオーディオ録音・再生機能を実現

結果:

ここに画像の説明を挿入

コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありません。

Vue部分:
recorderxをインストールする

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('音声アドレスが破棄されました');
				}
				
			},
	    }
	};
</スクリプト>

ノード部分:
ここでは、Expressフレームワークを使用して背景を構築します。フロントエンドを取得するための特定のリクエストコードは次のとおりです。 multipartyをインストールします。

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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue カルーセル コンポーネントは $children と $parent を実装し、便利な GIF 録画ツールが付属しています。
  • ビデオを録画し、ビデオファイルを圧縮するVue方式
  • Vue で Chrome ブラウザのオンライン自動オーディオ再生と MP3 音声パッケージ化の問題を解決する方法
  • Vueプロジェクトコンポーネントを切り替えてiOS WeChatでオーディオを自動的に再生する問題を解決する

<<:  MySQL 5.7.18 無料インストール版ウィンドウ設定方法

>>:  Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード

推薦する

MySQL での SQL モードの表示と設定の詳細な説明

MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...

MySQL で固定されていない位置から文字列要素を抽出する方法

序文注: テストデータベースのバージョンはMySQL 8.0ですテストデータ: テーブルzqs(id...

MySQL 起動エラー 1067 および文字セットを変更して再起動した後の無効な回復

公式サイトからmysql-5.6.37-winx64.zipの解凍バージョンをダウンロードし、構成フ...

MySQLデータベースのリアルタイムバックアップの知識ポイントを詳しく解説

序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...

docker を使用して minio と java sdk を構築するプロセスの詳細な説明

目次1minioはシンプル2 Dockerビルド minio 2.1 単一ノード2.2 マルチノード...

Amap を使用した React 実装例 (react-amap)

React の PC 版は Amap を使用するようにリファクタリングされました。情報を検索したと...

Vue のスロットとフィルターの詳細な説明

目次スロットスロットとは何ですか?スロットの内容コンパイルスコープフォールバックコンテンツ名前付きス...

MySQL複合インデックスの概要

目次1. 背景2. 複合インデックスを理解する3. 左端一致原則4. フィールド順序の影響5. 単一...

CSS3 カテゴリメニュー効果

CSS3 カテゴリ メニューの効果は次のとおりです。 html <html> <ヘ...

MySQL内部一時テーブルの具体的な使用法

目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...

MySQL 5.7 インストール MySQL サービスを開始できませんが、サービスはエラーを報告しません

MySQL 5.7 をインストールするには 2 つの方法があります。1 つはインストーラをダウンロー...

Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明

vim の動作モードを設定する (一時的) :set (モード情報) :set nu — 行番号を表...

Vue は小数点付きの星評価を実装します

この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...

MySQL エラー「すべての派生テーブルには独自のエイリアスが必要です」の解決方法

MySQL は、マルチテーブルクエリを実行するときにエラーを報告します。 [SQL] SELECT ...