91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11KB
    文件類型: .cs
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-04
  • 語言: C#
  • 標簽: unity錄音??

資源簡介

接到這個需求后先查看了網(wǎng)友們的教程,但大多數(shù)都是設(shè)定一個固定錄音時長,即使是錄音實際長度為幾秒鐘,但是生成文件的大小卻是按照最大錄音時長來生成,因此本人整理了一下代碼,實現(xiàn)自由錄音時長,并分段上傳到服務(wù)器.

資源截圖

代碼片段和文件信息

using?BestHTTP;
using?System;
using?System.Collections;
using?System.Collections.Generic;
using?System.IO;
using?System.Net;
using?System.Text;
using?System.Threading;
using?UnityEngine;

public?class?MicroPhoneManager?:?MonoBehaviour
{

????private?int?DeviceLength;
????///?
????///?錄音頻率(音質(zhì))
????///?

????private?int?Frequency?=?8000;
????///?
????///?最長錄音時長(半小時)
????///?

????private?int?MaxSecond?=?1800;
????///?
????///?實際錄音時長
????///?

????private?int?realTime?=?0;
????///?
????///?文件夾路徑
????///?

????private?string?filePath;
????private?string?currentName;
//開始時間
????private?string?starttime;
//結(jié)束時間
????private?string?endtime;
//需要綁定在一個AudioSource
????AudioSource?_curAudioSource;
????public?Action?Finished;
????AudioSource?CurAudioSource
????{
????????get
????????{
????????????if?(_curAudioSource?==?null)
????????????{
????????????????_curAudioSource?=?gameobject.AddComponent();
????????????}
????????????return?_curAudioSource;
????????}
????}

????#region?[public?Way]
????public?static?MicroPhoneManager?instance;
????private?void?Awake()
????{
????????if?(instance?==?null)
????????????instance?=?this;
//此處是保存的路徑根據(jù)項目需求設(shè)定
????????filePath?=?Application.streamingAssetsPath+“/Audio“;
????????if?(Directory.Exists(filePath)?==?false)//如果不存在就創(chuàng)建file文件夾
????????{
????????????Directory.CreateDirectory(filePath);
????????}
????}
????///?
????///?獲取麥克風(fēng)設(shè)備
????///?

????private?void?GetMicrophoneDevice()
????{
????????string[]?mDevice?=?Microphone.devices;
????????DeviceLength?=?mDevice.Length;
????????if?(DeviceLength?==?0)
????????????ShowInfoLog(“找不到麥克風(fēng)設(shè)備!“);
????}
????private?void?OnDestroy()
????{
????????Directory.Delete(filePath?true);
????????instance?=?null;
????}

????///?
????///?開始錄音
????///?

????public?void?StartRecordAudio()
????{
????????ShowInfoLog(“開始錄音........“);
????????CurAudioSource.Stop();
????????CurAudioSource.loop?=?false;
????????CurAudioSource.mute?=?true;
????????CurAudioSource.clip?=?Microphone.Start(null?true?MaxSecond?Frequency);
????????while?(!(Microphone.GetPosition(null)?>?0))
????????{

????????}
????????CurAudioSource.Play();
????????starttime?=?GetCurrentTime();
????????realTime?=?0;
????????//開始計時半小時后生成一次錄音文件
????????if?(IsInvoking(“startTime“))
????????????CancelInvoke(“startTime“);
????????InvokeRepeating(“startTime“?1?1);
????}

????///?
????///?停止錄音
????///?

????public?void?StopRecordAudio()
????{
????????ShowInfoLog(“停止錄音........“);
????????if?(!Microphone.IsRecording(null))
????????????return;
????????Microphone.End(null);
????????CurAudioSource.Stop();
????????if?(IsInvoking(“startTime“))
????????????CancelInvoke(“startTime“);
????????ShowInfoLog(realTime?+?“s“);
????????endtime?=?GetCurrentTime();
????????StartCoroutine(SendData());
????}
?

評論

共有 條評論