我将简要介绍一下录音的麻烦.
所以,我正在使用MediaRecorder进行录音,但不幸的是,当我播放录制的音频时,我的媒体音量非常低.我什么都听不到.
是否有可能设置录音音量?
谢谢.
我想用javascript和html5录制音频,html5中有设备元素,但我不知道使用它.找不到同样的例子.
我正在尝试使用arecord记录和转换使用python的流.
在shell中,这是一个或多或少的命令:
arecord -B 5000 -f dat | lame -m j -q 5 -V 2 - test.mp3 &
Run Code Online (Sandbox Code Playgroud)
在Python中,我尝试使用subprocess.Popen:
reccmd = ["arecord", "-B", "5000", "-f", "dat"]
mp3cmd = ["lame", "-m", "j", "-q", "5", "-V", "2", "-", "test.mp3"]
p = subprocess.Popen(reccmd, stdout=subprocess.PIPE)
p2 = subprocess.Popen(mp3cmd, stdin=p.stdout)
p2.communicate()
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在代码中包含"&"或类似内容,以便能够使用a来停止录制
killall arecord 命令
我是NAudio的新手,我正在尝试编写一个小程序,用于记录麦克风中的一些音频并将其写入Wave文件.当我在程序的Main函数中调用recordStuff()函数时,程序没有通过WaveIn对象的构造,并且程序死于InvalidOperationException,其中包含消息"使用WaveInEvent在后台线程上记录" .知道NAudio的人可能会告诉我这意味着什么吗?我试过在它自己的线程中调用recordStuff()函数,但我最终得到了相同的结果.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NAudio.Wave;
namespace SimpleWave
{
class Recorder
{
public Recorder()
{
writer = new WaveFileWriter("C:\\Users\\Paul\\Desktop\\yeah.wav", new NAudio.Wave.WaveFormat(44100, 1));
}
public static List<byte> buff = new List<byte>();
public static WaveFileWriter writer;
public void recordStuff()
{
// WaveIn Streams for recording
WaveIn waveInStream;
waveInStream = new WaveIn();
waveInStream.DeviceNumber = 0;
waveInStream.WaveFormat = new WaveFormat(44100, 2);
writer = new WaveFileWriter(@"C:\Users\Paul\Desktop\this.wav", waveInStream.WaveFormat);
waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
waveInStream.StartRecording();
}
public void waveInStream_DataAvailable(object sender, WaveInEventArgs e) …Run Code Online (Sandbox Code Playgroud) 我使用getUserMedia()做了录音机.并使用Recorder.js保存文件
但是输出文件比我想象的要重得多.
4分钟的录音记录有40mb.我无法将其发送到我的服务器.如果是这样,它会崩溃.
所以,我搜索了如何降低录制kbps.但我一无所获.只是一些Flash解决方案.但这些不适合我的项目.
所以,我的问题是,是否可以使用getUserMedia()降低音频记录的kbps?
我在MediaCodec.configure()行上得到了IllegalStateException,我正在尝试使用MediaCodec录制音频.这只发生在某些手机上,标签上的一切都很好.这个特殊的崩溃示例来自三星Galaxy S4.异常痕迹:
01-22 17:33:38.379: V/ACodec(16541): [OMX.google.aac.decoder] Now Loaded
01-22 17:33:38.379: V/ACodec(16541): onConfigureComponent
01-22 17:33:38.379: W/ACodec(16541): [OMX.google.aac.decoder] Failed to set standard component role 'audio_encoder.aac'.
01-22 17:33:38.379: E/ACodec(16541): [OMX.google.aac.decoder] configureCodec returning error -2147483648
01-22 17:33:38.379: E/MediaCodec(16541): Codec reported an error. (omx error 0x80001001, internalError -2147483648)
01-22 17:33:38.384: D/AndroidRuntime(16541): Shutting down VM
01-22 17:33:38.384: W/dalvikvm(16541): threadid=1: thread exiting with uncaught exception (group=0x418d0700)
01-22 17:33:38.414: W/BugSenseHandler(16541): Transmitting crash Exception Unable to resolve host "bugsense.appspot.com": No address associated with hostname
01-22 17:33:41.404: E/AndroidRuntime(16541): FATAL EXCEPTION: …Run Code Online (Sandbox Code Playgroud) 我需要显示带有录音的Visualizer图。
音频记录,在图表中显示效果。
像这样的图。

如果有人有解决方案,请帮助我。我尝试找到最多但没有得到适当解决方案的解决方案。
以下代码应记录音频并以PCM格式存储到SD卡中.代码正在与我合作,但PCM文件无法播放!!!!
我从这个链接获得了这个代码.... Android:使用audiorecord类播放录制音频作为快进
我需要播放PCM文件我该怎么做???????
public class Audio_Record extends Activity {
private static final int RECORDER_SAMPLERATE = 8000;
private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO;
private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
private AudioRecord recorder = null;
private Thread recordingThread = null;
private boolean isRecording = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setButtonHandlers();
enableButtons(false);
int bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,
RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING);
System.out.println("BUFFER SIZE VALUE IS " + bufferSize);
}
private void setButtonHandlers() {
((Button) findViewById(R.id.btnStart)).setOnClickListener(btnClick);
((Button) findViewById(R.id.btnStop)).setOnClickListener(btnClick);
}
private …Run Code Online (Sandbox Code Playgroud) 我正在四核debian盒子上进行ALSA捕获程序,我很困惑.
基本的ALSA捕获,hw:0接口,16位,44.1 KHz,使用带有poll()的阻塞线程,由snd_pcm_start()和控制snd_pcm_drop().我检查所有ALSA API调用的返回值.基本捕获工作正常,但我无法弄清楚如何设置轮询速率(即,ALSA通知我的poll()例程返回的频率,因为可以读取帧).
我用它snd_pcm_sw_params_set_avail_min()来设置为2048帧,当有大约2048帧可供读取时,poll()返回.我打电话snd_pcm_avail_delay()之前打电话snd_pcm_readi(),这一切看似合理.但如果我将它设置为低于2048的任何值,我会得到不一致的结果.如果我将avail_min设置为1024的一半时间poll()返回时有大约1024帧可用,而有一半时间直到1500帧可用.当我将avail_min设置为512时,第一次读取是512,但随后95%的后续读取是1024帧或更大.当我呼叫snd_pcm_hw_params_get_period_size_min/max()此设备报告有效范围为16-8192帧时,因此512帧的时间段似乎不合理 - 驱动程序报告hw支持它.
我已经试过的每个组合snd_pcm_sw_params_set_avail_min(),snd_pcm_hw_params_set_period_size()和snd_pcm_sw_params_set_start_threshold(),但仍不能得到合理的结果.
我已经尝试用pthread setaffinity将这个线程钉到单个CPU核心.我试图sched_setschedule()给这个过程"软"实时优先级.似乎没有什么能让我得到一致的poll()返回,除了将avail_min设置为至少2048.
以下是一些ALSA问题:
是启动阈值(snd_pcm_sw_params_set_start_threshold()仅与异步捕获相关吗?也就是说,启动阈值似乎不适用于基于poll()的捕获.这是正确的吗?
帧中的周期大小和帧中的avail_min大小有什么区别?文档似乎暗示avail_min设置poll()将返回的点,因为至少有许多帧可供读取.句点大小是一个hw参数,但API仍然提供最小值和最大值以及设置它的方法.在我看来,他们真的是一样的但我不能让我的poll()根据我设定的时间段返回.
当我解释snd_pcm_sw_params_set_avail_min()为触发poll()例程设置可用捕获帧的目标数量的意图时,我是否误读了文档?
对于我来说,期望poll()应该比任何可用于读取的500到1500帧之间的返回更加一致,这是否合理?或者这是正常的行为,我应该期望可供阅读的帧数有很大的变化吗?
如果预期有很大的变化,最好总是读取报告的总可用帧,snd_pcm_avail()或者每次poll()返回时最好读取一定数量的帧?
我已经创建了在我的应用中录制视频的功能.
播放歌曲时,该歌曲会录制视频并创建视频文件,类似于dubshmash应用程序.
现在我面临的问题是,其他声音如声音附近也会被记录下来.歌曲文件记录在视频录制屏幕中,我在视频录制活动启动时播放歌曲.
如何让我的应用程序只记录带有视频的歌曲?
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
Run Code Online (Sandbox Code Playgroud)
音频源设置为扬声器是否有任何解决方案,因为歌曲声音通过扬声器?如果是另一种可能的方式请回复我.
audio-recording ×10
android ×5
audio ×4
html5 ×2
javascript ×2
.net ×1
alsa ×1
background ×1
browser ×1
c# ×1
codec ×1
mediacodec ×1
naudio ×1
python ×1
subprocess ×1