我正在尝试使用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) 我正在尝试使用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)
录制音频剪辑并可以在计算机上播放,但如果我想录制另一个,则会发生上述情况.我已经在清单中要求许可: …
我试图通过iPhone的麦克风录制音频,同时播放iPod中的音乐.
录制和播放分开工作,但如果我尝试从iPod播放并同时录制录制停止.
顺便说一下,我实际上并没有录制音频来保存声音文件,而只是分析它.这是我的应用程序闪烁到您播放的音乐节拍.
Apple是否不允许同时录制和播放?
我想记录iPhone目前正在输出的内容.所以我正在考虑从音乐(iPod),Skype,任何无线电流应用,电话,Instacast等应用中录制音频......我不想录制我自己的音频或麦克风输入.
有正式的方法吗?我该怎么做?好像AVAudioRecorder不允许这样,有人可以证实吗?
我已经编写了用于录制音频文件的代码,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) 我的目标是以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
是否可以录制应用程序生成的内部声音?
我的应用程序允许您创建和播放音乐序列.
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录音.
谢谢
我正在寻找一个简单的解决方案来录制音频文件并将其上传到s3.
我的网络搜索找到了:
WebRTC- 实验,这是我能找到的最流行的解决方案.
它在以下链接中也有一个工作示例:https://www.webrtc-experiment.com/RecordRTC/
我还发现了Firefox不支持的ngCamRecorder.
我正在寻找一个简单的解决方案+工作示例和建议.
哪种解决方案最适合AngularJS使用?
如果您可以提供自己的示例或链接到我可以使用的工作示例.
如果您还使用了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.
谢谢.
我正在开发一个同时执行两项操作的iOS应用程序:
不幸的是,当我们使用音频单元配置应用程序以启用回声消除时,录制功能会中断: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) 我必须合并音频文件和录制的语音.例如录制的语音是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 …
audio-recording ×10
audio ×4
android ×3
ios ×2
iphone ×2
objective-c ×2
amazon-s3 ×1
angularjs ×1
c# ×1
core-audio ×1
eclipse ×1
html5 ×1
ipod ×1
javascript ×1
logcat ×1
naudio ×1
soundpool ×1
swift ×1
trim ×1