均衡器、低音增强和混响效果不起作用(使用 FFmpegMediaPlayer)
Equalizers, bassboost and reverb effect not working (using FFmpegMediaPlayer)
我目前正在使用 github 中的 FFmpegMediaPlayer,效果在 phone 中不起作用,但在模拟器中效果很好,两者是相同的 API 22.
奇怪的是,当我将代码从 FFmpegMediaplayer 切换到标准 android 媒体播放器时,效果在真正的 phone 设备中再次开始工作。但是当我切换回 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 - 低音增强和均衡器仅适用于模拟器,不适用于真实 phone 设备。
另一个奇怪的是,效果最初在调试运行模式下运行,并在我签署apk后停止运行。从那时起,它在调试以及任何其他 运行 模式下都停止工作,即 - 也发布....我也没有使用任何 pro guard 规则。
注意事项:
1. 用标准媒体播放器替换 FFmpegmediaplayer 效果有效。
2. 效果在签署 apk 之前有效,然后在所有 运行 模式下停止工作
3. 对 FFMpegmediaplayer 效果使用上面相同的代码只适用于
模拟器而不是真实设备。
4. 除了效果问题,FFmpegmediaplayer 还可以正常使用
流式传输和本地播放 - 在真实 phone 设备和模拟器中。
没关系,我自己找到了答案。对于那些遇到同样问题的人,我建议手动更改库并希望它有效。导致它的问题或与正在使用的库相关的错误。
我目前正在使用 github 中的 FFmpegMediaPlayer,效果在 phone 中不起作用,但在模拟器中效果很好,两者是相同的 API 22.
奇怪的是,当我将代码从 FFmpegMediaplayer 切换到标准 android 媒体播放器时,效果在真正的 phone 设备中再次开始工作。但是当我切换回 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 - 低音增强和均衡器仅适用于模拟器,不适用于真实 phone 设备。
另一个奇怪的是,效果最初在调试运行模式下运行,并在我签署apk后停止运行。从那时起,它在调试以及任何其他 运行 模式下都停止工作,即 - 也发布....我也没有使用任何 pro guard 规则。
注意事项: 1. 用标准媒体播放器替换 FFmpegmediaplayer 效果有效。 2. 效果在签署 apk 之前有效,然后在所有 运行 模式下停止工作 3. 对 FFMpegmediaplayer 效果使用上面相同的代码只适用于 模拟器而不是真实设备。 4. 除了效果问题,FFmpegmediaplayer 还可以正常使用 流式传输和本地播放 - 在真实 phone 设备和模拟器中。
没关系,我自己找到了答案。对于那些遇到同样问题的人,我建议手动更改库并希望它有效。导致它的问题或与正在使用的库相关的错误。