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 5.7.29 をインストールする方法

この記事は51CTOブログの著者wjw555の作品を参照しています。スクリプトの内容: vim イン...

nuxt.js 複数の環境変数の設定

目次1. はじめに2. シナリオ3. 環境を整える3.1 環境変数の挿入4. 最後に1. はじめに一...

ホワイトボードを踏まないようにするゲームを実装するための HTML+CSS+JS

目次背景1. 思考分析2. ページ構成2.1 HTML レイヤー2.2 CSS レイヤー2.3 JS...

Vueは複数の画像の追加、表示、削除を実装します

この記事では、Vueで複数の画像を追加、表示、削除するための具体的なコードを参考までに紹介します。具...

MySQL の on と where における左結合設定条件の使用法の違いの分析

この記事では、MySQL の左結合における on 条件と where 条件の使用法の違いを例を使って...

この記事はJavaScriptの変数とデータ型を理解するのに役立ちます

目次序文:親切なヒント:変数1. 免責事項2. 譲渡3. 2つの小さな文法上の詳細変数の命名規則なぜ...

Docker が MySQL イメージをプルするのが遅すぎる問題を解決する

Docker を使用して MySQL イメージをプルしようとして 30 分経っても失敗したため、代わ...

CSS で text-align と margin: 0 auto を使用して中央に配置する例コード

CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...

Windows サービス 2016 Datacenter\Stand\Embedded アクティベーション方法 (2021)

管理者権限でcmdを実行する slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-...

MySQL複合クエリの詳細な説明

UNIONの使用ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELEC...

HTML コメント HTML 内のテキストコメントをマークするための記号

HTML コメント。コードの横に HTML コメントを付ける必要があることがよくあります。そうするこ...

MySQL構成SSL証明書ログインの実装

目次序文1. MySQLはSSL構成を有効にする1.1 SSLが有効になっているかどうかを確認する1...

CenterOS7 インストールおよび構成環境 jdk1.8 チュートリアル

1. まずcenterosに付属のJDKをアンインストールします rpm-qa|grepopenjd...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...

MySQL 5.6 での table_open_cache パラメータの最適化と適切な構成の詳細な説明

1. はじめにtable_cache は非常に重要な MySQL パフォーマンス パラメータであり、...