呼叫麥克風錄音及播放
匯入AVFoundation.framework
引入#import <AVFoundation/AVFoundation.h>
//定義屬性
{
//錄音器
AVAudioRecorder *recorder;
//播放器
AVAudioPlayer *player;
NSDictionary *recorderSettingsDict;
//錄音名字
NSString *playName;
}
在 viewDidLoad 裡面初始化
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; playName = [NSString stringWithFormat:@"%@/play.aac",docDir]; //錄音設定 recorderSettingsDict =[[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatMPEG4AAC],AVFormatIDKey, [NSNumber numberWithInt:1000.0],AVSampleRateKey, [NSNumber numberWithInt:2],AVNumberOfChannelsKey, [NSNumber numberWithInt:8],AVLinearPCMBitDepthKey, [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey, nil];
錄音按鈕的UIControlEventTouchUpInside方法響應:
//鬆開 結束錄音
//錄音停止
[recorder stop];
recorder = nil;
錄音按鈕的UIControlEventTouchDown方法響應:
//按下錄音 if ([self canRecord]) { NSError *error = nil; //必須真機上測試,模擬器上可能會崩潰 recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:playName] settings:recorderSettingsDict error:&error]; if (recorder) { recorder.meteringEnabled = YES; [recorder prepareToRecord]; [recorder record]; //啟動定時器 timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(levelTimer:) userInfo:nil repeats:YES]; } else { int errorCode = CFSwapInt32HostToBig ([error code]); NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode); } }
//判斷是否允許使用麥克風7.0新增的方法requestRecordPermission -(BOOL)canRecord { __block BOOL bCanRecord = YES; if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending) { AVAudioSession *audioSession = [AVAudioSession sharedInstance]; if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) { [audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) { if (granted) { bCanRecord = YES; } else { bCanRecord = NO; dispatch_async(dispatch_get_main_queue(), ^{ [[[UIAlertView alloc] initWithTitle:nil message:@"app需要訪問您的麥克風。\n請啟用麥克風-設定/隱私/麥克風" delegate:nil cancelButtonTitle:@"關閉" otherButtonTitles:nil] show]; }); } }]; } } return bCanRecord; }
播放按鈕響應方法
NSError *playerError;
//播放
player = nil;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:playName] error:&playerError];
if (player == nil)
{
NSLog(@"ERror creating player: %@", [playerError description]);
}else{
[player play];
}
相關推薦
呼叫麥克風錄音及播放
匯入AVFoundation.framework 引入#import <AVFoundation/AVFoundation.h> //定義屬性 { //錄音器 AVAudioRecorder *recorder; //播放器 AV
Android使用MediaRecorder實現錄音及播放
現在專案中有使用到音視訊相關技術,在參考了網上各種大牛的資料及根據自己專案實際情況(相容安卓6.0以上版本動態許可權管理等), 把聲音錄製及播放相關程式碼做個記錄。 public class MediaRecorderActivity exten
iOS錄音,呼叫麥克風話筒
AVAudioSession.sharedInstance().requestRecordPermission({ [weak self] (granted) in g
Android實現錄音功能及播放語音功能
Android中實現錄音功能其實很簡單,直接呼叫的系統的就ok了,這裡就不寫實現的原理了,直接部署程式碼:所謂的實現就是用的MediaRecorder。 錄音功能程式碼: //開始錄製 pr
AudioManager 錄音 然後儲存在本地及播放
呼叫系統的AudioManager 錄音 然後儲存在本地,點選播放錄音 一個類搞定所有 需要許可權: package com.example.savesound; import java.io.IOException; import android.app.Activ
C#麥克風錄音元件與播放原始碼
public partial class Form1 : Form { private IAudioPlayer audioPlayer; private IMicrophoneCapturer microphoneCapturer; publ
Unity調取移動端的麥克風進行錄音並播放
1.對MicroPhone類的理解 對麥克風的呼叫在Unity裡主要是用到了MicroPhone這個類,此類裡面有幾個方法可以方便我們實現功能2.程式碼演示#region 模組資訊 // *******************************************
stm32聲音程序 錄音和播放 wav
技術 com rate info stm32 sam 分享 img sd卡 推薦文檔:http://www.sohu.com/a/115830046_119709 通過調整計時器,,每25us控制ADC進行一次采集,,,,采集的數據交給DMA,,,,然後DMA給一個數組
AudioUnit錄音和播放同時進行的一些註意點
unit 問題 同時 recording 功能 回調 ack color sound 錄音(播放)和暫停 -(void)start { self.soundTotalLength = 0.0f; if (!self.unitHaveStart) {
Android系統自帶的MediaRecorder結合Camera實現視訊錄製及播放功能。
近期,公司專案新增了需求,需要視訊錄製,然後儲存到本地,再播放...。 看了很多其他的框架,說不出好壞,應該說各有千秋吧。但我覺得還是原生的靠譜,就是谷歌系統自帶的MediaRecorder。 不多說上程式碼吧(已經測試,沒問題)。 程式碼沒什麼複雜的,都是些
HLS 架構簡介及播放加密的HLS
HLS 概述 HLS 全稱是 HTTP Live Streaming, 是一個由 Apple 公司實現的基於 HTTP 的媒體流傳輸協議. 他跟 DASH 協議的原理非常類似. 通過將整條流切割成一個小的可以通過 HTTP 下載的媒體檔案, 然後提供一個配套的媒體列表檔案, 提供給客戶端, 讓客
opencv+vs2017實現視訊的讀取及播放,同時將每一幀圖片儲存在指定檔案
#include "highgui.h" #include <iostream> using namespace std; int main(int argc, char** argv) { cvNamedWindow("視訊播放器", CV_WINDOW_A
機器學習weka,java api呼叫隨機森林及儲存模型
工作需要,瞭解了一下weka的java api,主要是隨機森林這一塊,剛開始學習,記錄下。 瞭解不多,直接上demo,裡面有一些註釋說明: package weka; import java.io.File; import weka.classifiers.Classifier; i
dedecms呼叫子欄目及文章列表
使用DEDECMS程式建網站時,有些欄目下面有子欄目,我們需要在網站前臺調用出子欄目以及子欄目下的文章列表。 dedecms呼叫子欄目及文章列表可以使用以下的程式碼進行呼叫: <div class="list"> {dede:channelartlist} &l
Sqlserver呼叫api 方法及示例
雖然使用sqlserver去呼叫服務介面的情況比較少,但也可以去了解下對應的使用情況 一、首先要開啟元件的配置 按 Ctrl+C 複製程式碼 按 Ctrl+C 複製程式碼 二、呼叫webservice 1、介面資訊獲取 呼叫webservi
Android呼叫sharesdk過程及問題
具體配置方法詳見官網,我這邊使用的離線配置,即沒有使用gradle進行配置,這裡偷偷懶,不詳細記錄 詳細步驟 步驟為粗略步驟,詳細步驟參照此處 1. 在官網根據自己要分享的平臺下載相關的jar包 2. 將下載的jar包放在自己目錄的lib資料夾下並在
C# 反射詳解:定義、建立物件、呼叫例項方法及靜態方法
1、反射的定義及功能介紹:審查元資料並收集關於它的型別資訊的能力。元資料(編譯以後的最基本資料單元)就是一大堆的表,當編譯程式集或者模組時,編譯器會建立一個類定義表,一個欄位定義表,和一個方法定義表等。可能這些說的比較抽象。我再從另一個角度來說:反射是.Net中
基於 Hessian 輕量級遠端呼叫的原理及示例
1 簡介 Hessian 是 Caucho 公司開發的一種基於二進位制 RPC 協議(Remote Procedure Call protocol)的輕量級遠端呼叫框架,其使用簡單的方法提供了 RMI 的功能。 相比 WebService,Hessian
[原始碼和文件分享]程式設計實現錄音及儲存為WAV音訊檔案
背景 之前自己錄製視訊教程的時候,從網上找過一些破解版錄屏軟體來使用。後來,我細想了一下,其實我自己就可以下一個簡單的錄屏小軟體。於是,後來我也自己慢慢摸索著,從網上搜索資料,慢慢地開發了一個有基本的錄音錄屏功能的小程式。 其中,本文的錄音小程式是當時為了熟悉錄音流程而特意開發來練手的。當然
樹莓派做wifi熱點+opencv安裝和呼叫CSI攝像頭及遇到的問題
wifi AP 讓樹莓派作為wifi熱點,按照https://blog.csdn.net/qq_21768483/article/details/82944874配置下來可以用,其中wifi的密碼長度為4會跳出一個error,最好密碼長一點。網速還挺好。裡面install的幾個軟體是很強大的,可