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

推薦する

Vueリストレンダリングキーの原理と機能の詳細な説明

目次リストレンダリングキーの原理と機能主要原則の分析キーの役割要約するリストレンダリングキーの原理と...

MySQL クエリ キャッシュとバッファ プール

1. キャッシュ - クエリキャッシュ次の図は、MySQL 公式サイトから提供されています: MyS...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、シンプルなショッピングカートケースを実装するためのVueの具体的なコードを...

Vue における属性とプロパティの具体的な使用法と違い

目次Vue.jsにおける属性とプロパティ値および関連する処理として属性とプロパティの概念属性とプロパ...

MySQL関数の包括的な概要

目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...

W3C チュートリアル (3): W3C HTML アクティビティ

HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...

MySQL ページング中にオフセットが大きすぎる場合の SQL 最適化の経験の共有

問題を見つけるコンテンツをリストで表示すると、リスト内のコンテンツの数は多いかもしれませんが、ユーザ...

複数の X 軸を使用して 7 日間の天気予報を実現するための Echarts サンプル コード

目次UIデザインEcharts の例の効果序文サンプルコード最終結果UIデザイン Echarts の...

React のクラスからフックへの移行

目次リアクトフック序文なぜフックなのか?クラス関数クラスとフックの比較フックはコンポーネントの状態を...

IP アドレス経由で MySql にアクセスする方法

1. mysqlにログインします。 mysql -u ルート -h 127.0.0.1 -p 2. ...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

Dockerを使用してphabricatorをインストールする方法

ここでは Ubuntu 16.04 システムを使用しています。 dockerを使用したインストールh...

HTMLボタンを中央に配置する方法

HTML ボタン自体を中央に配置するにはどうすればよいでしょうか? このアイデアは簡単に見つかります...