超强的Android播放和同时录制
Superpowered Android PlayBack & Record Simultaneously
我正在使用超强的 Android C++库开发混音器,我在录制时遇到播放器问题,播放器无法播放,只有录音机正在录制。 下面是代码,任何人都可以指导我放错东西的地方
bool processRecording(short int *input, unsigned int numberOfSamples) {
pthread_mutex_lock(&mutex);
if (askRecording) {
unsigned int data = 0;
SuperpoweredShortIntToFloat(input, stereoBufferRecording, numberOfSamples);
data = recorder->process(stereoBufferRecording, NULL, numberOfSamples);
playerA->process( musicBuffer, false, numberOfSamples, 0.5f );
SuperpoweredShortIntToFloat(input, stereoBufferRecording, numberOfSamples);
SuperpoweredFloatToShortInt(musicBuffer, input, numberOfSamples);
pthread_mutex_unlock(&mutex);
return true;
}
pthread_mutex_unlock(&mutex);
return false;
}
有没有人想把它放在正确的地方?
在@Gabor建议的更改之后,以下是代码片段
bool processRecording(short int *input, unsigned int numberOfSamples) {
pthread_mutex_lock(&mutex);
if (askRecording) {
unsigned int data = 0;
SuperpoweredShortIntToFloat(input, stereoBufferRecording, numberOfSamples);
playerA->process( musicBuffer, false, numberOfSamples, 1.0f );
//=====================================================================================
// ================== Mixing Two Buffer ==================
mixerInputs[0] = musicBuffer;
mixerInputs[1] = stereoBufferRecording;
mixerInputs[2] = NULL;
mixerInputs[3] = NULL;
mixerOutputs[0] = outputBuffer;
mixerOutputs[1] = NULL;
float inputLevels[] = { 0.5f, 0.5f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f };
float outputLevels[] = { 1.0f, 1.0f };
__android_log_print(ANDROID_LOG_INFO, "NativeSuperpoweredRecorder ", " processRecording 2>>");
mixerBackend->process(mixerInputs, mixerOutputs, inputLevels, outputLevels, NULL, NULL, numberOfSamples);
//=====================================================================================
data = recorder->process(mixerOutputs[0], NULL, numberOfSamples);
SuperpoweredFloatToShortInt(musicBuffer, input, numberOfSamples);
pthread_mutex_unlock(&mutex);
return true;
}
pthread_mutex_unlock(&mutex);
return false; }
这是您在代码中执行的操作:
输入>立体声缓冲区录音>录音机
input->stereoBufferRecording->?
播放器>音乐缓冲区>输入
当 askRecording 为假时,播放器根本不在播放。
我猜"输入"也是"输出"的相同缓冲区?
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- SFML纹理像播放器
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- OpenCV Android C++ imwrite not found
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 超强的Android播放和同时录制
- GSTREAMER管道播放,但没有填充的回调(仅在Android上发生,在Windows和Linux上可行)
- Android上的OpenSL以高于应有的速度播放
- 无法使用适用于Android的Qt使手机播放声音或振动
- Android:制作原生视频播放器时应该使用什么
- 某些QSoundEffects无法在Android上播放(永远)
- 在Android上使用OpenSL播放内存中的PCM WAVE声音
- 在android的OpenGL视图上播放视频
- QMediaPlayer在Android上可以播放哪些视频文件?
- 如何在Android QT中播放音频文件
- OpenSL ES on android 播放速率