标签: audio-recording

通过SDK在iPhone上录制mp3

我想知道是否可以用Xcode以编程方式录制mp3格式的音频文件.

我已经阅读了大量的文件,我已经用Google搜索了,但没有结果.

请帮忙,如果有人知道这是怎么回事?

iphone audio xcode mp3 audio-recording

5
推荐指数
1
解决办法
4498
查看次数

同时播放和录制音频

我需要同时播放和录制.问题是播放和录制的声音应该不同.播放的sound_1通过耳机插孔连续发送到连接的设备,设备分析此声音_1并通过耳机插孔发回另一个声音_2.我收到了这个声音_2,但是当我尝试录制它时,我混合了sound_1和sound_2.有没有办法单独播放/录制,或者我需要某种过滤器来传入声音2?我尝试用AVAudioPlayer播放声音并用AudioQueue录音,会话是PlayAndRecord.

发现了一些类似的主题:在iOS中播放和录制音频同时使用耳机插孔引脚?

但也没有建设性的答案.

audio audio-recording avaudioplayer audioqueue ios

5
推荐指数
1
解决办法
1439
查看次数

应用程序到达前台后SpeakHere录音机崩溃

我根据Apple的SpeakHere音频应用示例编写了一个小型录音机/播放器,可以在我的iPad上使用.当用户要求显示录像机时,UIView将打开并显示录制/停止按钮和仪表.

当我从头开始加载应用程序时,我可以记录,停止记录,再次记录我想要的任何时间.停止录制后,我将应用程序放在后台,例如阅读我的邮件.再次将录音机置于前台时,无法录制任何声音.我在日志中收到错误消息,仪表不显示任何数据,也没有创建声音文件.我注意到与iPhone和iPad上的SpeakHere示例应用程序相同的行为.唯一的解决方案是退出并重新启动应用程序.

为了解决这个问题,我决定在用户​​完成录像机的使用后取消分配视图控制器.我为记录视图控制器禁用了ARC,并编写了dealloc方法.在这个控制器的viewDidDisappear中,我进行了[self dealloc]调用.

但程序崩溃,发送[RecorderViewController childViewControllersCount]:消息发送到解除分配的实例.我想这样的自我dealloc是不允许的......

我需要找到一个解决方案,或者......

  1. 找到一种在应用程序进入后台时正确管理音频会话的方法(因为录制停止,我不明白为什么会出现这样的问题).

  2. 或者在视图关闭时正确释放录像机视图控制器,以确保在视图必须出现的任何时候,它都会从控制器的XIB文件中再次加载.

[更新]在查看aurioTouch应用程序的代码(Apple dev网站的另一个音频示例)后,我在我的应用程序委托中获得了以下代码:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    AudioSessionSetActive(true);

}
Run Code Online (Sandbox Code Playgroud)

它可以在我的应用程序或SpeakHere应用程序中运行...花了很多时间找到一个解决方法,这是一行代码!

audio-recording background-foreground ios

5
推荐指数
0
解决办法
956
查看次数

在浏览器上录制音频

我有基本的网站,我在Django和SQL lite中开发.我想为它添加此功能.

用户应该能够单击按钮并记录不超过10秒的消息并保存.

它可以作为音频文件保存在服务器上,或者可以保存在数据库中,如果它更有效和可能的话.

如果Django已经有任何组件或插件或者我可以使用的东西,你能告诉我吗?

如果它不存在,我最好的选择是什么.如果我需要从头开始编写,你能指点我任何教程/博客等吗?

谢谢你的时间

  • R M

django audio audio-recording

5
推荐指数
1
解决办法
2142
查看次数

结合两个音频blob录音

我正在使用recorder.js在我的网页上录制两个音频文件,然后创建录音为blob.

一旦我有了这些音频blob,我就会将它们组合成一个轨道,由另一个html5音频播放器播放.

我搜索过互联网,但我似乎无法找到任何关于将两个blob文件合并为一个的文档.

我已经找到了如何将一个blob连接到另一个blob但我想在开始时合并文件.

即 - 声音1是唱歌,声音2是吉他.

audio-recording html5-audio recorder.js

5
推荐指数
1
解决办法
1129
查看次数

在Android中使用哪种音频格式存储录音

我正在开发从麦克风录制声音的应用程序,目前我将录制的音频存储在wave文件中,但是wave的大小正成为一个问题。

我才知道android没有mp3解码器是真的吗?我将如何以压缩形式存储录制的音频?

我正在使用AudioRecord类进行录制,并且不想使用MediaRecorder。

java audio android audio-recording

5
推荐指数
1
解决办法
4511
查看次数

录制音频并将数据传递到iOS 8/9上的UIWebView(JavascriptCore)

我们有一个应用程序,主要是一个基于javascript的Web应用程序的UIWebView.我们遇到的要求是能够向用户播放音频然后记录用户,回放该记录以进行确认,然后将音频发送到服务器.这适用于Chrome,Android和其他平台,因为该功能内置于浏览器中.不需要本机代码.

遗憾的是,iOS(iOS 8/9)Web视图缺乏录制音频的能力.

我们尝试的第一个解决方法是使用AudioQueue录制音频并将数据(LinearPCM 16bit)传递给JS AudioNode,以便Web应用程序可以像处理其他平台一样处理iOS音频.这就达到了我们可以将音频传递给JS的程度,但应用程序最终会因内存访问错误而崩溃,或者javascript方面无法跟上发送的数据.

下一个想法是将录音保存到文件并将部分音频数据发送到JS以获得视觉反馈,这是在录制期间显示的基本音频可视化器.

线性PCM签名为16bit时,音频记录并播放到WAVE文件.JS可视化工具是我们陷入困境的地方.期待线性PCM无符号8位,所以我添加了一个可能错误的转换步骤.我尝试了几种不同的方式,主要是在网上找到的,但是在我们进入转换步骤之前,没有找到一种可以让我认为其他错误或缺失的方法.

由于我不知道问题究竟是什么或在哪里,我将转储下面的代码用于音频录制和播放类.欢迎任何建议解决或绕过某种方式解决此问题.

我的一个想法是使用不同的格式标记以不同的格式(CAF)进行记录.查看生成的值,非带符号的16位整数甚至接近最大值.我很少看到+/- 1000以上的任何东西.是因为AudioStreamPacketDescription中的kLinearPCMFormatFlagIsPacked标志?删除该标志会因为格式无效而导致音频文件无法创建.也许切换到CAF会起作用,但我们需要在将音频发送回服务器之前转换为WAVE.

或者我从签名的16位到无符号8位的转换是错误的?我也试过了比特换档和铸造.唯一的区别是,通过此转换,所有音频值都被压缩到125到130之间.位移和转换将其更改为0-5和250-255.这并没有真正解决JS方面的任何问题.

下一步是,不是将数据传递给JS,而是通过FFT函数运行它,并生成JS直接用于音频可视化器的值.在去那个方向之前,我宁愿弄清楚我是否做了一些明显错误的事情.

AQRecorder.h - 编辑:将更新的音频格式更新为LinearPCM 32bit Float.

#ifndef AQRecorder_h  
#define AQRecorder_h  
#import <AudioToolbox/AudioToolbox.h>  
#define NUM_BUFFERS 3  
#define AUDIO_DATA_TYPE_FORMAT float  
#define JS_AUDIO_DATA_SIZE 32  
@interface AQRecorder : NSObject {  
    AudioStreamBasicDescription  mDataFormat;  
    AudioQueueRef                mQueue;  
    AudioQueueBufferRef          mBuffers[ NUM_BUFFERS ];  
    AudioFileID                  mAudioFile;  
    UInt32                       bufferByteSize;  
    SInt64                       mCurrentPacket;  
    bool                         mIsRunning;  
}  
- (void)setupAudioFormat;  
- (void)startRecording;  
- (void)stopRecording;  
- (void)processSamplesForJS:(UInt32)audioDataBytesCapacity audioData:(void *)audioData;  
- (Boolean)isRunning;  
@end  
#endif 
Run Code Online (Sandbox Code Playgroud)

AQRecorder.m - 编辑:将更新的音频格式更新为LinearPCM 32bit Float.在processSamplesForJS中添加了FFT步骤,而不是直接发送音频数据.

#import <AVFoundation/AVFoundation.h>  
#import "AQRecorder.h"  
#import "JSMonitor.h" …
Run Code Online (Sandbox Code Playgroud)

core-audio audio-recording uiwebview ios javascriptcore

5
推荐指数
1
解决办法
931
查看次数

如何将.caf文件转换为.mp3文件?

我使用以下方法在文档文件夹中录制了一些声音

 func record() {
    self.prepareToRecord()
    if let recorder = self.audioRecorder {
        recorder.record()
    }
}

    let recordSettings = [
    AVSampleRateKey : NSNumber(float: Float(44100.0)),
    AVFormatIDKey : NSNumber(int: Int32(kAudioFormatAppleLossless)),
    AVNumberOfChannelsKey : NSNumber(int: 2),
    AVEncoderAudioQualityKey : NSNumber(int: Int32(AVAudioQuality.Medium.rawValue)),
    AVEncoderBitRateKey : NSNumber(int: Int32(320000))
]

    func prepareToRecord() {

    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
    let soundFileURL: NSURL? = NSURL.fileURLWithPath("\(documentsPath)/recording.caf")
    print("\(soundFileURL)")

    self.audioRecorder = try! AVAudioRecorder(URL: soundFileURL!, settings: recordSettings)

    if let recorder = self.audioRecorder {
        recorder.prepareToRecord()
    }
}
Run Code Online (Sandbox Code Playgroud)

此方法将音频文件保存为recording.caf到文档目录,但我想将此recording.caf文件转换为mp3以进行进一步操作.

如何将这个.caf文件转换为swift中的.mp3文件?

audio-recording avfoundation ios swift

5
推荐指数
1
解决办法
2141
查看次数

如何在iPhone上以低样本(约1000 Hz)录制

我正在编写一个应用程序,用于在iPhone 6上使用内置麦克风录制单声道音频.当配置为以8000 Hz录制时,应用程序按预期工作.这是代码

    // Set up audio session
    let session = AVAudioSession.sharedInstance()

    // Configure audio session
    do {
        try session.setCategory(AVAudioSessionCategoryPlayAndRecord)

        var recordSettings = [String:AnyObject]()
        recordSettings[AVFormatIDKey] = Int(kAudioFormatLinearPCM) as AnyObject

        // Set the sampling rate
        recordSettings[AVSampleRateKey] = 8000.0 as AnyObject
        recordSettings[AVNumberOfChannelsKey] = 1 as AnyObject

        recorder = try AVAudioRecorder(url: outputFileURL, settings: recordSettings)

        recorder?.delegate = self
        recorder?.isMeteringEnabled = true

        recorder?.prepareToRecord()

        return true

    }
    catch {
        throw Error.AVConfiguration
    }
Run Code Online (Sandbox Code Playgroud)

为了降低存储要求,我想以更低的采样率(理想情况下小于1000 Hz)进行记录.如果我将采样率设置为1000 Hz,应用程序记录为8000 Hz.

根据Apple的文档,

硬件采样率的可用范围取决于设备.它通常在8000到48000赫兹之间.

问题...是否可以使用AVAudioSession(或其他框架)以低采样率录制音频?

audio-recording ios avaudiosession

5
推荐指数
2
解决办法
434
查看次数

在可在所有浏览器和iOS上运行的网站上录制音频

我浪费了很多时间在正在建立的网站上实施多个音频录制选项,但是每个选项只能在Chrome中运行,只能在Firefox中运行,而不能同时在Safari中运行,而在iOS上均不工作。

该网站需要允许用户记录其消息并将其保存为表单状态以供提交。

我正在阅读的所有当前文章都有几个月的历史,并提到iOS不会/将很快支持它。我已经尝试过在iOS上使用移动Chrome浏览器,但仍然无法正常运行。

有没有人找到一种简单地在浏览器以及移动网站中录制音频的方法?

我尝试过的事情:

当前使用适用于Chrome和Firefox的以下代码。

的HTML

<audio controls src="" id="audio"></audio> <a class="button" id="record">Record</a> <input type="hidden" id="audiofile" name="audiofile" value="" aria-hidden="true"/>

使用Francium语音库:

Java脚本

    // Audio Recording for Phone Calls
  $(document).on("click", "#record:not(.stop)", function(){
  elem = $(this);
    $("#audio").attr("src","");
    $("#audiofile").val("");
  Fr.voice.record($("#live").is(":checked"), function(){
  elem.addClass("stop");
});
    elem.html("Stop <label id='minutes'>00</label>:<label   id='seconds'>00</label>");
    var minutesLabel = document.getElementById("minutes");
    var secondsLabel = document.getElementById("seconds");
    var totalSeconds = 0;
    setInterval(setTime, 1000);

    function setTime() {
        ++totalSeconds;
        secondsLabel.innerHTML = pad(totalSeconds % 60);
        minutesLabel.innerHTML …
Run Code Online (Sandbox Code Playgroud)

javascript html5 audio-recording ios html5-audio

5
推荐指数
1
解决办法
3362
查看次数