アプレットの声(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)
})
}