我正在开发一个录音应用程序,其中可能会通过电话,短信和/或系统警报中断.至于电话,我意识到录音必须停止并成功完成.我的挑战似乎与其他警报有关,例如电池电量不足,警报,短信等.目前,我已设法在警报中断弹出时暂停并保存录音,但我正在寻找更有效的选项.
在ad-hoc分发模式的大多数真实场景中,我注意到我的用户在录制他们的声音时甚至不监视iPhone或iPod屏幕.此外,如果我们在iPod Touch上测试这个应用程序,那么警报的声音非常微弱,他们会错过警报并继续录制,只有在几分钟后或者在会话结束时才能实现录制被打断了
这是我的问题:
任何帮助将不胜感激.处理这种情况的任何其他想法都是最受欢迎的.
我想将语音从一个iPhone传输到另一个iPhone.我已经使用TCP建立了两个iPhone之间的连接,我已经设法在iPhone上录制语音并使用音频队列服务播放它.我还设法在两个iPhone之间发送数据.我这样做是通过发送NSData包.
我的下一步是将音频数据发送到正在录制的其他iPhone.我相信我应该这样做AudioInputCallback.我AudioQueueBufferRef被调用inBuffer,似乎我想转换inBuffer->mAudioData为NSData,然后将NSData发送到另一个设备,然后解压缩它.
有谁知道这是否是这样做的方式以及如何将我转换inBuffer->mAudioData为NSData?其他方法也受到欢迎.
这是我的回调方法,我相信我应该"抓住"数据并将其发送到其他iPhone:
void AudioInputCallback(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inBuffer, const AudioTimeStamp *inStartTime, UInt32 inNumberPacketDescriptions, const AudioStreamPacketDescription *inPacketDescs)
{
RecordState *recordState = (RecordState *)inUserData;
if(!recordState->recording)
return;
OSStatus status = AudioFileWritePackets(recordState->audioFile,
false,
inBuffer->mAudioDataByteSize,
inPacketDescs,
recordState->currentPacket,
&inNumberPacketDescriptions,
inBuffer->mAudioData);
if(status == 0)
{
recordState->currentPacket += inNumberPacketDescriptions;
}
AudioQueueEnqueueBuffer(recordState->queue, inBuffer, 0, NULL);
}
Run Code Online (Sandbox Code Playgroud) 使用以下代码时:http://pastebin.com/5iVnttiP
我收到此错误:
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian not supported.
at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source)
at com.sun.media.sound.AbstractDataLine.open(Unknown Source)
at com.sun.media.sound.AbstractDataLine.open(Unknown Source)
at com.AIComputer.model.Recorder.<init>(Recorder.java:124)
at com.AIComputer.AIComputer.main(AIComputer.java:7)
Run Code Online (Sandbox Code Playgroud)
现在我做了一些研究,发现并非所有声卡都支持所有格式,但是在运行此演示时:http://java.sun.com/products/java-media/sound/samples/JavaSoundDemo/ 我设法制作了一个使用完全相同的参数录制(线性,16000,16,带符号,小端,立体声).
我不知道我在这里做错了什么(因为我还是Java编码的初学者).
任何帮助将不胜感激!
iOS开发的新手,我设法创建了一个基本应用程序,可以通过iPhone主麦克风/耳机麦克风录制音频,然后在按下播放按钮时重播该音频。
我需要的是同时播放当前正在录制的音频,而不是录制到文件,然后再播放后期录音。因此,基本上,在(例如)头戴式耳机麦克风和耳机之间创建实时音频循环。
有可能实现这一目标吗?
如果是这样,有人可以帮我指出实现该功能的正确方向。所需的框架和任何代码片段将不胜感激。
非常感谢
当我在纵向模式下使用MediaRecorder录制视频时,以横向模式录制视频,
我试过了mMediaRecorder.setOrientationHint(90); 和mServiceCamera.setDisplayOrientation(90); 但它不起作用
我正在使用nAudio Library来捕获麦克风输入.但我遇到了一个问题.我正在使用nAudio示例应用程序中的代码(我稍微修改过).代码生成基于麦克风输入的WAV文件并将其呈现为波形.这是代码.
private void RenderFile()
{
SampleAggregator.RaiseRestart();
using (WaveFileReader reader = new WaveFileReader(this.voiceRecorderState.ActiveFile))
{
this.samplesPerSecond = reader.WaveFormat.SampleRate;
SampleAggregator.NotificationCount = reader.WaveFormat.SampleRate/10;
//Sample rate is 44100
byte[] buffer = new byte[1024];
WaveBuffer waveBuffer = new WaveBuffer(buffer);
waveBuffer.ByteBufferCount = buffer.Length;
int bytesRead;
do
{
bytesRead = reader.Read(waveBuffer, 0, buffer.Length);
int samples = bytesRead / 2;
double sum = 0;
for (int sample = 0; sample < samples; sample++)
{
if (bytesRead > 0)
{
sampleAggregator.Add(waveBuffer.ShortBuffer[sample] / 32768f);
double sample1 = waveBuffer.ShortBuffer[sample] / 32768.0; …Run Code Online (Sandbox Code Playgroud) 我遇到了如何在 VLC 中捕获麦克风输入?在这篇文章中说:
\n\n\n\n\nMac:使用 VLC 2.0.0 或更高版本并利用 qtsound 模块:
\n
/Applications/VLC.app/Contents/MacOS/VLC -vvv qtsound:// \nRun Code Online (Sandbox Code Playgroud)\n\n如果我运行此命令,VLC 会从麦克风获取声音并将其输出到扬声器:
\n\n/Applications/VLC.app/Contents/MacOS/VLC qtsound://\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法将其录制到文件中?\n如果有,是否有办法将其与屏幕录制结合起来并生成带声音的屏幕投射?
\n\n到目前为止,我成功录制了屏幕投射,但无法在视频录制中添加声音:
\n\n/Applications/VLC.app/Contents/MacOS/VLC -I dummy screen:// --screen-fps=25 --sout "#transcode{vcodec=h264,vb072,acodec=mp4a,ab=128}:standard{access=file,mux=mp4,dst="~/Desktop/vlc-output-terminal.mp4"}"\nRun Code Online (Sandbox Code Playgroud)\n\n知道如何使用 VLC 和 qtsound (或其他输入)从麦克风录制声音吗?
\n\n更新:
\n\n在 Linux 上,它使用所谓的--input-slave参数,我尝试使用 mac 音频设备在 mac 上复制该参数:
\n\n/Applications/VLC.app/Contents/MacOS/VLC -vvv -I dummy screen:// --input-slave qtsound://AppleHDAEngineInput:1B,0,1,0:1 --sout "#transcode{vcodec=h264,vb=1024,acodec=mp4a,ab=128}:standard{access=file,mux=mp4,dst="~/Desktop/vlc-output-terminal.mp4"}"\nRun Code Online (Sandbox Code Playgroud)\n\n不幸的是,尽管 VLC 表示一切正常,但输出文件无效并且始终只有 44 字节长。以下是该命令的控制台输出:
\n\nAPPLEs-MacBook-Pro:deploy-mac myuser$ /Applications/VLC.app/Contents/MacOS/VLC -vvv -I dummy screen:// --input-slave …Run Code Online (Sandbox Code Playgroud) 我使用 ffmpeg 记录具有 24 位颜色深度的 xvfb 桌面并将其保存为 gif 格式(然后我将其通过管道传输到 AWS,以便您可以在命令的末尾用filename.gif替换“ - ”符号,它不会” t 影响这个问题):
ffmpeg -f x11grab -video_size 800x600 -r 30 -i :99.0 -f gif -pix_fmt rgb24 -t 5 -
Run Code Online (Sandbox Code Playgroud)
但是,我总是收到警告:
编解码器“gif”的像素格式“rgb24”不兼容,自动选择格式“rgb8”
这会导致不正确的色彩再现。我在 Windows 和 Ubuntu Docker 容器上都进行了尝试,无论是预编译的还是源代码的,都来自具有最后提交的存储库,但没有运气。我也在其他人的日志中看到他们使用 - -pix_fmt rgb24或bgr24并且它工作得很好。
所以问题是:为了将 rgb24 与 gif 编码器一起使用,我需要安装或配置什么吗?或者也许有一种解决方法,例如先将其转换为另一种格式?
这是我输出的一部分:
ffmpeg version git-2017-08-18-f386dd7 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --enable-gpl --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 …Run Code Online (Sandbox Code Playgroud) 有没有办法使用本地麦克风在远程 jupyter 笔记本上录制音频?
我正在尝试使用本地机器的麦克风在远程 jupyter 笔记本上录制音频。但是,当我按照此链接中的说明进行操作时!,则使用远程机器的麦克风。我们通过在远程机器上创建 Flask 网络服务器开发了一种解决方法,但我很好奇我们如何直接使用 jupyter。
是否可以实现一个 iOS 应用程序,当用户按下连接的蓝牙 (BLE) 设备上的按钮、手机屏幕关闭或应用程序时,能够录制音频(用于处理语音到文本)有背景吗?
我已经挖掘了很长时间才发现旧的/未答复的/模糊相关的帖子。
我有一个带有几个按钮的小型蓝牙控制器。其中一个按钮用于通过手机麦克风(或通过连接的蓝牙耳机麦克风)触发录音。至此,我们已经实现了此功能,并且当屏幕打开且应用程序处于前台时它可以正常工作,但是当应用程序处于后台或屏幕关闭时,此功能将停止运行。
我们的实现SFSpeechrecognizer通过Speech框架进行使用,并且我们确保向项目添加所有适当的功能Info.plist(包括Audio、、)。我们的应用程序会进行与音频录制无关的连续后台处理,并且无论应用程序是在前台还是后台,都可以毫无问题地接收来自连接设备的蓝牙 (BLE) 按钮按下操作。Speech RecognitionMicrophone Usage
据我了解,Apple/iOS 限制应用程序在后台时启动的音频录制的使用。如果应用程序要自行启动录音,那么从隐私/安全的角度来看,这是有道理的,但这种限制是否意味着没有方法可以让我们的用户在按下蓝牙 (BLE) 设备按钮时启动录音?
绝对任何对此有建设性的指导将不胜感激!