【问题标题】:ExoPlayer AudioTrack StutteringExoPlayer AudioTrack 口吃
【发布时间】:2015-10-20 20:35:51
【问题描述】:

我有自己的 TrackRenderer 实现,用于我集成的 mp3 解码器。当棒棒糖设备进入待机状态并恢复时,它并不总是可重复的,但音频开始断断续续,直到我强制停止应用程序。

一开始,我以为是我实现的解码器,所以我尝试比较一个卡顿音轨和正常音轨之间的文件输出。文件是相同的,然后我想可能是解码时间太长,所以我增加了缓冲区大小并调用setPlayReady false,以便数据缓冲。它的口吃就像我没有停下来一样。我目前认为问题出在我的音轨实现或操作系统错误上。该错误仅发生在 Lollipop 设备上。

我的 TrackRenderer 使用与 AudioTrackRenderer 相同的工作流程,我自己为 mp3 解码器而不是 opus 实现了本机实现。

【问题讨论】:

  • 如果数据在好的和坏的情况下是相同的,那么它可能是元数据。您可以检查报告的采样率是否相同?
  • 好的,因为这个错误很难复制,所以我没有机会测试采样率。我相信它们是相同的,当我可以确认时会更新我的帖子。添加 2 项改变,当 (feedInputBuffer()) {} 循环使用大缓冲区时,口吃逐渐消失。虽然不循环,但它会无限期地结结巴巴。所以看起来我正在处理解码速度或数据输入速度变慢的问题。将尝试用每秒字节数来证明它。

标签: android mp3 audiotrack exoplayer


【解决方案1】:

我已经多次看到类似的行为,这与降低 CPU 频率以节省电量有关。如果你有root设备,你可以尝试去:

cd /sys/devices/system/cpu/

对于您看到的所有 cpu(将 cpuX 替换为 cpu0、cpu1 等),请执行以下操作:

echo 1 > cpuX/online
echo performance > cpuX/cpufreq/scaling_governor

如果是这种情况,那么不幸的是,我认为您无法轻松解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多