Я ищу, чтобы реализовать аудиоплеер с переменным воспроизведением скорости (1.0x, 1.25x, 1.5x), как это обычно делают на рынке обычные аудиокниги. Я бы хотел использовать библиотеку Exoplayer Google как свою библиотеку аудиоплеера, но они, похоже, не поддерживают воспроизведение с переменной скоростью. Любые идеи о том, как реализовать это, или какие-либо расширения, которые поддерживают это? Заранее спасибо!Скорость воспроизведения Exoplayer
ответ
Все, что вам нужно, это https://github.com/waywardgeek/sonic/blob/master/Sonic.java
Если посмотреть на MediaCodecAudioTrackRenderer.java, вы можете получить выходной буфер (декодированного MediaCodec) из ExoPlayer в методе processOutputBuffer и обрабатывать его через Sonic.java, прежде чем отправлять его на адрес AudioTrack.
Следующий документ объясняет, как использовать libsonic https://github.com/waywardgeek/sonic/blob/master/doc/index.md
Во-первых, спасибо за ответ @ T.J, оцените его. Так что я сделал некоторые Googling и нашел это https://github.com/skonb/MediaCodecSpeedControllableTrackRenderer/blob/master/MediaCodecSpeedControllableAudioTrackRenderer.java выглядит ли эта реализация близка к тому, что вы говорите? Я попытался интегрировать его с библиотекой Exoplayer и, похоже, не было никакого звука. – two1stnamz
Нет проблем. Да, именно это я и говорил. Не уверен, почему нет звука. Я бы сказал, log processOutputBuffer, чтобы посмотреть, что происходит с данными. –
Вы должны посмотреть этот проект, который был очень полезным для меня: https://github.com/AmrMohammed89/exoplayer2.4.0_speedup
Внутри SimpleExoPlayer, я реализовал следующие методы:
private final ExoPlayer player;
private float playbackSpeed;
float SPEED_NORMAL = 1f;
float SPEED_MEDIUM = 1.5f;
float SPEED_HIGH = 2f;
@Override
public float getPlaybackSpeed() {
return playbackSpeed;
}
@Override
public void setPlaybackSpeed(float speed) {
playbackSpeed = speed;
player.setPlaybackSpeed(speed);
}
@Override
public void changePlaybackSpeed() {
if (playbackSpeed == SPEED_MEDIUM) {
player.setPlaybackSpeed(SPEED_HIGH);
playbackSpeed = SPEED_HIGH;
} else if (playbackSpeed == SPEED_HIGH) {
player.setPlaybackSpeed(SPEED_NORMAL);
playbackSpeed = SPEED_NORMAL;
} else {
player.setPlaybackSpeed(SPEED_MEDIUM);
playbackSpeed = SPEED_MEDIUM;
}
}
Я установил и сохранил скорость таким образом из-за ошибки, когда я попытался получить последнюю сохраненную скорость. Итак, следуйте этому механизму, и он будет работать отлично.
Приветствия
- 1. Android ExoPlayer Скорость воспроизведения очень быстро на версии Android 4.2
- 2. Исключение воспроизведения аудиофайлов Android Exoplayer
- 3. Как использовать Exoplayer для воспроизведения входного потока?
- 4. youtube встроенная скорость воспроизведения
- 5. Уменьшить скорость воспроизведения?
- 6. настроить скорость воспроизведения видео
- 7. HTML5 Скорость воспроизведения видео
- 8. Скорость воспроизведения AVPlayer для AVComposition
- 9. изменения JavaFX MediaPlayer скорость воспроизведения
- 10. динамическая скорость воспроизведения видео xna?
- 11. Как изменить скорость воспроизведения видео
- 12. AWS Cloudfront RTMP Скорость воспроизведения
- 13. Скорость воспроизведения звука Symbian/S60
- 14. Скорость воспроизведения аудио в Android
- 15. Ошибка воспроизведения потока HLS с Google Exoplayer на Android
- 16. Как изменить скорость воспроизведения видео в HTML5?
- 17. Как я могу изменить скорость воспроизведения аудиофайла?
- 18. Как уменьшить скорость воспроизведения аудио в NAudio?
- 19. HTML5 Видео - какова максимальная скорость воспроизведения?
- 20. Как изменить скорость воспроизведения аудиопотока в Gstreamer?
- 21. Скорость воспроизведения встроенного видео в Powerpoint
- 22. AudioBuffer/AudioBufferSourceNode скорость воспроизведения? (Web Audio)
- 23. Android MediaRecorder setCaptureRate() и скорость воспроизведения видео
- 24. Мультибитрейт/динамическая скорость для прогрессивного воспроизведения FLV
- 25. Как изменить скорость воспроизведения аудио в AVPlayer?
- 26. ExoPlayer: Показать субтитры
- 27. Воспроизведение видео в EXOPlayer
- 28. ExoPlayer to stream MP4 file
- 29. ExoPlayer getDuration
- 30. Android VR SDK разоблачить ExoPlayer
UPDATE: Просто обновление это для тех, кто все еще ищет: Exoplayer добавила эту функцию, запеченную в их API. Счастливое кодирование! – two1stnamz