标签: audio-recording

使用C#使用NAudio录制

我正在尝试使用NAudio在C#中录制音频.看完NAudio Chat Demo之后,我用了一些代码来记录.

这是代码:

using System;
using NAudio.Wave;

public class FOO
{
    static WaveIn s_WaveIn;

    static void Main(string[] args)
    {
        init();
        while (true) /* Yeah, this is bad, but just for testing.... */
            System.Threading.Thread.Sleep(3000);
    }

    public static void init()
    {
        s_WaveIn = new WaveIn();
        s_WaveIn.WaveFormat = new WaveFormat(44100, 2);

        s_WaveIn.BufferMilliseconds = 1000;
        s_WaveIn.DataAvailable += new EventHandler<WaveInEventArgs>(SendCaptureSamples);
        s_WaveIn.StartRecording();
    }

    static void SendCaptureSamples(object sender, WaveInEventArgs e)
    {
        Console.WriteLine("Bytes recorded: {0}", e.BytesRecorded);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,没有调用eventHandler.我正在使用.NET版本'v2.0.50727'并将其编译为:

csc file_name.cs /reference:Naudio.dll /platform:x86
Run Code Online (Sandbox Code Playgroud)

c# audio-recording naudio

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

录制第二个音频剪辑时,MediaRecorder崩溃

我正在尝试使用MediaRecorder录制音频片段,但是当我开始,停止并重新开始时,我一直在我的Logcat中收到这些错误; 该活动也将关闭:

INFO/DEBUG(1285): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
INFO/DEBUG(1285): Build fingerprint: 'LGE/thunderg/thunderg/thunderg:2.2.1/FRG83/eng.nikech.choi.20110126.134422:user/release-keys'
INFO/DEBUG(1285): signal 11 (SIGSEGV), fault addr 00000010
INFO/DEBUG(1285):  r0 00000000  r1 00000000  r2 a930cc98  r3 00000001
……
INFO/DEBUG(1285):          #00  pc 00033c28  /system/lib/libmedia.so
INFO/DEBUG(1285):          #01  pc 0000780e  /system/lib/libmedia_jni.so
……
INFO/DEBUG(1285): code around pc:
INFO/DEBUG(1285): a9033c08 2001e001 1c1861a0 46c0bd70 00029a58 
……
INFO/DEBUG(1285): code around lr:
INFO/DEBUG(1285): a93077f0 f7ffb510 bd10ffcf b082b570 ae011c05 
……
INFO/DEBUG(1285): stack:
INFO/DEBUG(1285):     bef054d0  00000001 
……
Run Code Online (Sandbox Code Playgroud)

录制音频剪辑并可以在计算机上播放,但如果我想录制另一个,则会发生上述情况.我已经在清单中要求许可: …

eclipse android audio-recording logcat

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

录制音频并同时播放iPod?

我试图通过iPhone的麦克风录制音频,同时播放iPod中的音乐.

录制和播放分开工作,但如果我尝试从iPod播放并同时录制录制停止.

顺便说一下,我实际上并没有录制音频来保存声音文件,而只是分析它.这是我的应用程序闪烁到您播放的音乐节拍.

Apple是否不允许同时录制和播放?

iphone ipod objective-c audio-recording

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

如何在iPhone上录制当前播放的音频?

我想记录iPhone目前正在输出的内容.所以我正在考虑从音乐(iPod),Skype,任何无线电流应用,电话,Instacast等应用中录制音频......我不想录制我自己的音频或麦克风输入.

有正式的方法吗?我该怎么做?好像AVAudioRecorder不允许这样,有人可以证实吗?

iphone audio-recording avaudiorecorder

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

具有增益调整功能的AudioRecord无法在Samsung Device上运行

我已经编写了用于录制音频文件的代码,AudioRecord并且在SD卡上写入文件时,我正在制作两个版本.

版本1 录制的文件原样保存在SD卡上.

版本2 我在录制文件上应用增益功能并保存在SD卡上.

这在索尼爱立信手机上非常棒.同时音量也在很大程度上得到提升.

但我正在努力使其适用于三星设备.

当我播放录制的文件时,它听起来像会说话的汤姆:P

最初我认为Samusung设备不喜欢我曾经创建的组合 AudioRecorder.

所以我使用以下方法,其中我循环到可用配置并使用最佳配置来初始化AudioRecord.

public AudioRecord findAudioRecord() {
    for (int rate: mSampleRates) {
        for (short audioFormat: new short[] {
            AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT
        }) {
            for (short channelConfig: new short[] {
                AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO
            }) {
                try {
                    Log.i("vipul", "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: " + channelConfig);
                    int bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);

                    if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                        // check if we can instantiate …
Run Code Online (Sandbox Code Playgroud)

audio android audio-recording android-audiorecord

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

使用音频队列服务录制aac时,保存到缓冲区而不是文件

我的目标是以AAC格式录制音频,并通过网络连接作为流发送.

我正在使用音频队列服务,并将我的代码基于SpeakHere示例.我知道,为了写入文件,它使用AudioFileWritePackets()函数.

这是回调函数:

void MyInputBufferHandler(void* inUserData,
                          AudioQueueRef inAQ,
                          AudioQueueBufferRef inBuffer,
                          const AudioTimeStamp * inStartTime,
                          UInt32 inNumPackets,
                          const AudioStreamPacketDescription* inPacketDesc) {

    Recorder *aqr = (Recorder *)inUserData;

    if (inNumPackets > 0) {
        // write packets to file
        AudioFileWritePackets(aqr->mRecordFile, FALSE,
                              inBuffer->mAudioDataByteSize,
                              inPacketDesc, aqr->mRecordPacket, 
                              &inNumPackets, inBuffer->mAudioData);

        aqr->mRecordPacket += inNumPackets;
    }

    // if we're not stopping, re-enqueue the buffe so that it gets filled again
    if ([aqr IsRunning])
        AudioQueueEnqueueBuffer(inAQ, inBuffer, 0, NULL);
}
Run Code Online (Sandbox Code Playgroud)

起初我认为AudioFileWritePackets的工作原理是直接写入内容inBuffer->mAudioData.但是,当我手动将mAudioData的内容写入文件时,解码似乎不起作用.

在检查和比较AudioFileWritePackets写入文件的原始数据和我将mAudioData写入文件时,他们似乎已经附加了一个标题.

由于我无法找到AudioFileWritePackets()如何在其中工作,我的问题是,如何将录制的音频写入缓冲区(或流,如果您更喜欢这样称呼它)而不是文件,这样我就可以以后通过网络连接发送?

同样,简而言之,这就是我需要的:以aac格式录制音频并通过网络连接流式传输音频. …

audio objective-c audio-recording audio-streaming audioqueueservices

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

录制/捕获Android应用程序的内部声音播放并导出mp3?

是否可以录制应用程序生成的内部声音?

我的应用程序允许您创建和播放音乐序列.

soundPool.play(soundIds[i], 1f, 1f, 1, 0,  Constants.TIME_RATE);
Run Code Online (Sandbox Code Playgroud)

我希望能够记录序列并导出到mp3.

我看过Audio Capture但是setAudioSource(int audio_source)似乎只接受MIC录音.

谢谢

audio android audio-recording soundpool android-mediaplayer

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

AngularJS + HTML5录制音频文件

我正在寻找一个简单的解决方案来录制音频文件并将其上传到s3.

我的网络搜索找到了:

WebRTC- 实验,这是我能找到的最流行的解决方案.

它在以下链接中也有一个工作示例:https://www.webrtc-experiment.com/RecordRTC/

我还发现了Firefox不支持的ngCamRecorder.

我正在寻找一个简单的解决方案+工作示例和建议.

  1. 哪种解决方案最适合AngularJS使用?

  2. 如果您可以提供自己的示例或链接到我可以使用的工作示例.

  3. 如果您还使用了S3我想知道如何将文件推送到S3,并获得指向控制器的链接.

我找到的解决方案,抛出错误,并包含一个工作示例,而不解释代码本身.我也想知道如何将它推向s3.

这是我从示例中实现的代码:

$scope.start_recording = function()
{
    navigator.getUserMedia(session, function (mediaStream) {
        window.recordRTC = RecordRTC(MediaStream);
        recordRTC.startRecording();
    }, function(error){console.log(error)});
};

$scope.stop_recording = function()
{
    navigator.getUserMedia({audio: true}, function(mediaStream) {
        window.recordRTC = RecordRTC(MediaStream);
        recordRTC.startRecording();
    });
};
Run Code Online (Sandbox Code Playgroud)

它只是抛出一个错误:undefined不是recordrtc.js第641行的函数

  if(!mediaStream.getAudioTracks().length) throw 'Your stream has no audio tracks.';
Run Code Online (Sandbox Code Playgroud)

显然mediaStrem为null.

谢谢.

javascript html5 amazon-s3 audio-recording angularjs

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

同时使用AVCaptureSession和Audio Units会导致AVAssetWriterInput出现问题

我正在开发一个同时执行两项操作的iOS应用程序:

  1. 它捕获音频和视频并将它们中继到服务器以提供视频聊天功能.
  2. 它捕获本地音频和视频,并将它们编码为mp4文件,以便为后代保存.

不幸的是,当我们使用音频单元配置应用程序以启用回声消除时,录制功能会中断:AVAssetWriterInput我们用于编码音频的实例会拒绝传入的样本.当我们没有设置音频单元时,录音工作,但我们有可怕的回声.

为了启用回声消除,我们配置了这样的音频单元(为了简洁起见):

AudioComponentDescription desc;
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
AudioComponent comp = AudioComponentFindNext(NULL, &desc);
OSStatus status = AudioComponentInstanceNew(comp, &_audioUnit);
status = AudioUnitInitialize(_audioUnit);
Run Code Online (Sandbox Code Playgroud)

这适用于视频聊天,但它打破了录制功能,这样设置(再次,释义 - 实际实现分散在几种方法).

_captureSession = [[AVCaptureSession alloc] init];

// Need to use the existing audio session & configuration to ensure we get echo cancellation
_captureSession.usesApplicationAudioSession = YES;
_captureSession.automaticallyConfiguresApplicationAudioSession = NO;

[_captureSession beginConfiguration];
AVCaptureDeviceInput *audioInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self audioCaptureDevice] error:NULL];
[_captureSession addInput:audioInput];
_audioDataOutput …
Run Code Online (Sandbox Code Playgroud)

audio core-audio audio-recording ios

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

iOS:使用Swift修剪音频文件?

我必须合并音频文件和录制的语音.例如录制的语音是47秒.我必须将4分钟的音频歌曲剪切或修剪为47秒.并合并音频文件.

var url:NSURL?
    if self.audioRecorder != nil
    {
        url = self.audioRecorder!.url
    }

    else
    {
        url = self.soundFileURL!

    }
    print("playing \(url)")
    do
    {
        self.newplayer = try AVPlayer(URL: url!)
        let avAsset = AVURLAsset(URL: url!, options: nil)
        print("\(avAsset)")
        let audioDuration = avAsset.duration
        let totalSeconds = CMTimeGetSeconds(audioDuration)
        let hours = floor(totalSeconds / 3600)
        var minutes = floor(totalSeconds % 3600 / 60)
        var seconds = floor(totalSeconds % 3600 % 60)
        print("hours = \(hours),minutes = \(minutes),seconds = \(seconds)")}
Run Code Online (Sandbox Code Playgroud)

这是输出:// hours = 0.0,minutes = 0.0,seconds = 42.0 …

trim audio-recording avaudioplayer ios swift

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