録音と再生に AVFoundation フレームワークを使用する IOS (AVAudioSession、AVAudioRecorder、AVAudioPlayer)
2022-02-28 05:10:25
最近、WeChatのような音声送信、押すと録音、離すと録音終了のシンプルな機能を実装し、再生も可能です。
<スパン エフェクト
<スパン デモのダウンロードはこちら
http://download.csdn.net/download/rhljiayou/6535125
<スパン インポートが必要
#インポート <AVFoundation/AVFoundation.h>
このフレームワークの
AVAudioRecorder と AVAudioPlayer で録音と再生を行います。
以下は AVAudioRecorderの録音は、次のような場合に使用されます。
- (IBAction)downAction:(id)sender {
//Press to record
if ([self canRecord]) {
NSError *error = nil;
//must be tested on real machine, may crash on emulator
recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:playName] settings:recorderSettingsDict error:&error];
if (recorder) {
//whether to allow level meter refreshing, default is off
recorder.meteringEnabled = YES;
//create the file and prepare to record
[recorder prepareToRecord];
//Start recording
[recorder record];
//start the timer, in order to update the level
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);
}
}
}
- (IBAction)upAction:(id)sender {
//release End recording
//recording stops
[recorder stop];
recorder = nil;
//end the timer
[timer invalidate];
timer = nil;
//image reset
soundLodingImageView.image = [UIImage imageNamed:[volumImages objectAtIndex:0]];
}
以下は AVAudioPlayerプレーヤーが使用されています。
- (IBAction)playAction:(id)sender {
NSError *playerError;
//play
player = nil;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:playName] error:&playerError];
if (player == nil)
{
NSLog(@"ERror creating player: %@", [playerError description]);
}else{
[player play];
}
}
7.0であれば 初回実行時に、マイクを許可するかどうかを確認する画面が表示されます。
7.0では、以下の設定が必要です。
if ([[UIDevice currentDevice] systemVersion] compare:@"7.0"] ! = NSOrderedAscending)
{
//7.0 will prompt for the first run, whether to allow the microphone
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *sessionError;
//AVAudioSessionCategoryPlayAndRecord is used for recording and playback
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];
if(session == nil)
NSLog(@"Error creating session: %@", [sessionError description]);
else
[session setActive:YES error:nil];
}
OK! 完璧、PERFECT!
転載元 灰谷廉のブログ
関連
-
[解決済み] コードサインエラーです。プロビジョニングプロファイル 'XX-YY-ZZ' が見つかりませんでした。
-
[解決済み] キャッチできない例外 'NSUnknownKeyException' によりアプリが終了する [重複] 。
-
[解決済み] GLSL(OpenGL ES 2.0)で定数配列を定義する方法を教えてください。
-
[解決済み] Xcodeにコードの自動整形機能はありますか?
-
[解決済み] KERN_INVALID_ADDRESSとKERN_PROTECTION_FAILUREの違いは何ですか?
-
[解決済み] 地名から座標へ 最短距離
-
[解決済み] kern_invalid_address
-
[解決済み] lPods 用のライブラリが見つかりません。
-
[解決済み] クロストラック誤差の計算方法(GPS/コアロケーション)
-
mallocです。オブジェクトxxの***エラー:解放されるポインタが割り当てられていない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] iphoneで「コマンド /bin/sh failed with exit code 1」の問題を修正する方法
-
[解決済み】スレッド1:EXC_BAD_ACCESS (code=1, address=0xf00000c)
-
[解決済み] ストーリーボードの警告:プロトタイプのテーブルセルは再利用可能な識別子を持つ必要がある
-
[解決済み] /usr/bin/codesign は終了コード 1 で失敗しました。
-
[解決済み] ReadStreamから読み込もうとすると、エラーDomain=kCFErrorDomainCFNetwork Code=2を受信する。
-
[解決済み] UITableViewの背景画像付きセル
-
[解決済み] iPhone UITableView PlainStyleでカスタム背景画像 - "完全に "コードで実行されます。
-
[解決済み] Objective-Cの定数キーの命名
-
[解決済み] NSComparisonResultとNSComparator - これらは何ですか?
-
[解決済み] プライベート・フレームワークとは何か、どのように活用するのか。