均衡器,低音增强和混响效果不起作用(使用FFmpegMediaPlayer)
Equalizers, bassboost and reverb effect not working (using FFmpegMediaPlayer)
我目前正在使用来自github的FFmpegMediaPlayer,效果在手机中不起作用,但在模拟器中完美运行,两者是相同的API 22。
奇怪的是,当我将代码从FFmpeg媒体播放器切换到标准安卓媒体播放器时,效果在真正的手机设备中再次开始工作。但是当我切换回ffpmeg时,效果仅在模拟器中起作用,而在真实设备中无效。我的代码如下,
public void setupVisualizerFxAndUI() {
try {
mVisualizer = new Visualizer(mMediaPlayer.getAudioSessionId());
mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());
mEqualizer.setEnabled(true);
try {
bassBoost = new BassBoost(0, mMediaPlayer.getAudioSessionId());
bassBoost.setEnabled(false);
BassBoost.Settings bassBoostSettingTemp = bassBoost.getProperties();
BassBoost.Settings bassBoostSetting = new BassBoost.Settings(bassBoostSettingTemp.toString());
bassBoostSetting.strength = (1000 / 19);
bassBoost.setProperties(bassBoostSetting);
mMediaPlayer.setAuxEffectSendLevel(1.0f);
presetReverb = new PresetReverb(0, mMediaPlayer.getAudioSessionId());
presetReverb.setPreset(PresetReverb.PRESET_NONE);
presetReverb.setEnabled(false);
mMediaPlayer.setAuxEffectSendLevel(1.0f);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
if (homeActivity.isEqualizerEnabled) {
try {
bassBoost.setEnabled(true);
BassBoost.Settings bassBoostSettingTemp = bassBoost.getProperties();
BassBoost.Settings bassBoostSetting = new BassBoost.Settings(bassBoostSettingTemp.toString());
if (homeActivity.bassStrength == -1) {
bassBoostSetting.strength = (1000 / 19);
} else {
bassBoostSetting.strength = homeActivity.bassStrength;
}
bassBoost.setProperties(bassBoostSetting);
mMediaPlayer.setAuxEffectSendLevel(1.0f);
if (homeActivity.reverbPreset == -1) {
presetReverb.setPreset(PresetReverb.PRESET_NONE);
} else {
presetReverb.setPreset(homeActivity.reverbPreset);
}
presetReverb.setEnabled(true);
mMediaPlayer.setAuxEffectSendLevel(1.0f);
} catch (Exception e) {
e.printStackTrace();
}
}
if (homeActivity.isEqualizerEnabled && homeActivity.isEqualizerReloaded) {
try {
homeActivity.isEqualizerEnabled = true;
int pos = homeActivity.presetPos;
if (pos != 0) {
mEqualizer.usePreset((short) (pos - 1));
} else {
for (short i = 0; i < 5; i++) {
mEqualizer.setBandLevel(i, (short) homeActivity.seekbarpos[i]);
}
}
if (homeActivity.bassStrength != -1 && homeActivity.reverbPreset != -1) {
bassBoost.setEnabled(true);
bassBoost.setStrength(homeActivity.bassStrength);
presetReverb.setEnabled(true);
presetReverb.setPreset(homeActivity.reverbPreset);
}
mMediaPlayer.setAuxEffectSendLevel(1.0f);
} catch (Exception e) {
e.printStackTrace();
}
}
其中mMediaPlayer是ffmpeg...除此之外,该库在流媒体方面工作正常。唯一的问题是它没有得到任何效果。我认为这可能是一个编码问题,所以我只是像上面提到的 Android 标准媒体播放器切换了 ffmpeg,它可以工作。FFmpeg - 低音增强和均衡器仅适用于模拟器,不适用于真正的手机设备。
另一个奇怪的事情是,该效果最初最初在调试运行模式下工作,并在我签署apk后停止工作。从那时起,它在调试以及任何其他运行模式下都停止工作,即 - 也发布....我也没有使用任何职业警卫规则。
注意事项 : 1.将FFmpeg媒体播放器替换为标准媒体播放器,效果有效。 2.效果在签署apk之前有效,然后在所有运行模式下停止工作 3. 对 FFMpeg媒体播放器效果使用上述相同代码仅适用于 模拟器,而不是在真实设备中。 4.除了效果问题,FFmpeg媒体播放器在功能方面 流媒体和本地播放 - 在真实的手机设备和模拟器中。
没关系自己找到了答案。对于那些有相同问题的人,我建议手动更改库并希望它有效。导致其问题或与正在使用的库相关的错误。
相关文章:
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 使用 va_arg 传递给函数va_list不起作用
- 为什么使用数组元素查找最大数字的程序不起作用?
- 组合正则表达式部分使用 | 不起作用的 C++
- 使用 NTAllocateVirtualMemory 和 GetProcAddress 的内存分配问题不起作用
- 将新放置与 std::函数一起使用不起作用
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- 为什么必须使用'*p=a',而使用'p=&a'在构造函数中不起作用
- QObject::连接不起作用 - 使用函数语法找不到信号
- 使用选择排序对数组数据结构进行排序,但它不起作用
- C++:矩阵高斯消除不起作用:使用单维数组来存储元素
- 使用片段着色器写入 1D 纹理后从 1D 纹理读回不起作用
- 为什么当我对数组使用增量操作时,do for 循环不起作用
- Lambda 函数在 C++ 中的priority_queue中不起作用(使用 [&] 时)
- 均衡器,低音增强和混响效果不起作用(使用FFmpegMediaPlayer)
- fstream::open() Unicode 或非 ASCII 字符在 Windows 上不起作用(使用 std::ios::out)
- C++: boost::asio: async_resolve() 不起作用(使用 lambda 函数),但 resolve() 有效
- OpenGL 4.5:glClear() 不起作用(使用 SDL2 和 GLEW)