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 プロジェクトをデプロイするためのサンプル コード

推薦する

HTML ウェブページ作成のための 8 つの強力なテクニック

<br />作業を簡単に完了できる Web ページ作成ツールは数多くありますが、HTML...

ハイパーリンクに関するいくつかの質問

<br />ポテトチップスパーティーのこのエピソードに参加して、何人かの友達に会えてとて...

AES_ENCRYPT() と AES_DECRYPT() を使用して MySQL を暗号化および復号化する正しい方法の例

序文最近、仕事でAES_ENCRYPT()関数を使用してプレーンテキストを暗号化し、MySQL に保...

mysql と oracle のデフォルトのトランザクション分離レベルの説明

1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...

MySQL シリーズ 11 ログ

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

mysql での rpm インストールの詳細な説明

インストールとアンインストールの表示 # rpm -qa | grep mysql を表示 # アン...

Webフォーム作成スキル

実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...

emとは?emとpxの紹介と変換方法

それは何ですか? em はフォントの高さを指し、どのブラウザでもデフォルトのフォントの高さは 16 ...

Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明

現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...

DockerコンテナのライフサイクルアーキテクチャとVMとの違いについて詳しく説明します。

コンテナのライフサイクルコンテナランタイムのライフサイクルコンテナは、分離特性を持つプロセスのセット...

MySQL スロークエリログの有効化と設定

導入MySQL スロー クエリ ログは、問題のある SQL ステートメントのトラブルシューティングや...

Vue における $router と $route の違いの詳細な説明

通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...

CSS で隠し要素を実現する 7 つの興味深い方法

序文非表示要素の 3 つの属性である表示、可視性、不透明度の類似点と相違点は、フロントエンドの就職面...

ウェブサイトのパフォーマンスを向上させるためのウェブサーバーの改善

<br />このシリーズの最初のセクションでは、Web サイトのパフォーマンスを向上させ...