再生することができ、他の誰か(B)に発行されたアプレットの声マイクロ文字(A)は、独自の音声サーバへの最初のアップロードする必要ができています

アプレットの声(A)を再生することができ、他の誰か(B)に発行され、独自の音声サーバへの最初のアップロードする必要がありますすることができます。

https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.html

 

A端:

Wxml:

 

<ボタンWX:もし= "{{選択}}" バインド:touchstart =バインドを "開始":touchend = "ストップ" データ・インデックス= "{{索引}}" データMEMBERID = "{{item.memberid}} 「>

          答えを長押しすると

        </ button>の

JS:

         公共の音声パケットアセンブリを定義します。

         CONST recorderManager = wx.getRecorderManager()。

CONST innerAudioContext = wx.createInnerAudioContext()。

 

 

  //ときに録音を開始

  開始:関数(){

    CONSTオプション= {

      期間:10000、//はミリ秒で記録長さを指定します。

      sampleRate:16000、//サンプル・レート

      numberOfChannels:1、//記録チャンネル数

      encodeBitRate:96000、//符号化率

      フォーマット: 'mp3'、//オーディオフォーマット、有効な値のAAC / MP3

      フレームサイズ:50、//はKBで、フレームサイズを指定します

    }

    //録画開始

    recorderManager.start(オプション)。

    recorderManager.onStart(()=> {

      console.log(「録画を開始」)

    });

    //エラーコールバック

    recorderManager.onError((RES)=> {

      console.log(RES)。

    })

  }、

 

  //ストップ記録

  STOP:関数(E){

    この= VAR。

    VAR MEMBERID = e.currentTarget.dataset.memberid。

 

    recorderManager.stop();

    recorderManager.onStop((RES)=> {

      VARリスト= that.data.vediolist。

      VAR開始= this.data.start。

      VaRの終わり= e.timeStamp。

      VAR秒=(エンド%(1000年* 60))/ 1000;

      VaRのshijian =秒 - スタート。

      //ここであなたも一時的にしませんでした、時刻表示の幅に応じてメッセージを残すことができます

      VARのSRC = res.tempFilePath; //音声の一時ファイル

//独自のサーバーへの最初の音声のアップロードは、フィールドで一緒にデータベースに最終的にはストレージアレイに声に戻って、とすることができます

    wx.uploadFile({

        URL:hcxcx.apiUrl.getuploadvedio、

        filePathに:SRC、

        ヘッダ:{

          「コンテンツタイプ」:「マルチパート/フォームデータ」

        }、

        名前:「ファイル」、

        {にformdat

          ユーザー: 'tesdt'

        }、

        成功:機能(RES){

          IF(res.statusCodeの== 200){

            VaRのAA = {

              SRC:res.data、

              MEMBERID:MEMBERID

            }

            list.push(AA)。

            that.setData({

              vediolist:リスト

            })

          }他{

 

            wx.showToast({

              タイトル:res.body、

              アイコン:「なし」、

              期間:2000年

            });

          }

        }、

        失敗:機能(RES){

 

          wx.showToast({

            タイトル:res.body、

            アイコン:「なし」、

            期間:2000年

          });

        }

      });

 

    })

  }、

 

 

C#の終わり

  #region記録アップロードアプレット

        /// <要約>

        ///記録アップロードアプレット 

        /// </要約>

        ///ます。<param name = "_"> </ param>の

        /// <リターン> </リターン>

        [HttpPost]

        公共のActionResult GetUploadVedio()

        {

            文字列ImgId = String.Emptyを。

            文字列webRootPath = _hostingEnvironment.WebRootPath。

            VaRのHPは= _accessor.HttpContext.Request.Form.Files [0]; //これで決定された前回の入力パラメータの名前

 

            文字列filemd5key = Guid.NewGuid()のToString( "N");

            試します

            {

                VaRのdatetimename = DateTime.Now.ToString( "YYYYMMDD");

                VaRのfiledic = "ResourceTemp / Vedioの/" + datetimename。

                文字列filePathに= webRootPath + "\\ ResourceTemp \\ Vedioの\\" + datetimename。

                写真は//デフォルトでは、パスを保存し、ファイルパスは同じではありません

                //ディレクトリ階層にファイルを保存します

                (もし!Directory.Exists(filePathに))

                {

                    Directory.CreateDirectory(filePathに)。

                }

                filePathに= filePathに+ "\\" + filemd5key + Path.GetExtension(hp.FileName)。

                (FileStreamをFS = System.IO.File.Create(除いたファイルパスを指定して))を使用して

                {

                    hp.CopyTo(FS)。

                    fs.Flush();

                }

                バイト[]バッファ= NULL;

                使用して(FileStreamをFS =新しいFileStreamを(filePathに、FileMode.Open))

                {

                    バッファ=新しいバイト[fs.Length]。

                    fs.Read(バッファ、0、buffer.Length)。

                }

 

                VaRのURL = ConfigUtil.GetStr( "ApiDomain");

                (もし!url.Contains( "HTTP"))

                {

                    URL = "のhttp://" + URL。

                }

                URL = URL + "/";

                ImgId = URL + filedic + "/" + filemd5key + Path.GetExtension(hp.FileName)。

            }

            キャッチ(例外の例)

            {

                NlogUtil.wlog(「GetUploadVedio」、「小さなプログラムはエラーメッセージを記録アップロード:」+ ex.Message)を、

            }

            コンテンツ(ImgId)を返します。

        }

        #endregion

B側

Wxml:

         <ビュークラス= "yuyin" bindtap = "vedioplay" データvediosrc = '{{vediosrc}}'>

              <画像SRC = '/ .. / .. / .. / centent / IMG / yuyinshuru.png' クラス= "yuyin_img"> </画像>

     </ビュー>

JS

CONST innerAudioContext = wx.createInnerAudioContext()。

 

vedioplay:関数(E){

その=このましょう。

    VARのSRC = e.currentTarget.dataset.vediosrc。

innerAudioContext.autoplay =はtrue。

    innerAudioContext.src = SRC;

    innerAudioContext.onPlay(()=> {

      console.log( '歴史劇');

    })

    innerAudioContext.obeyMuteSwitch =偽

    innerAudioContext.onError((RES)=> {

      console.log(res.errMsg)

      console.log(res.errCode)

    })

}

おすすめ

転載: www.cnblogs.com/randy619/p/11687835.html