如何从服务器下载mp3的一部分?

问题描述

用例

我的用例大致等于将15秒的mp3文件添加到1分钟左右的视频中。所有转码合并部分都将由 FFmpeg-android 完成,因此现在不必担心。

流程如下

  • 用户可以选择mp3的任何15秒(ExoPlayer流)(考虑192Kbps / 44.1KHz的3分钟=最多7MB)
  • 然后下载仅15秒的内容并将其添加到视频的音频流中。 (使用FFmpeg)
  • 使用获得的输出

尝试过的解决方

因此,以上两种解决方案都没有取得成功,目前,我正在下载整个文件并在本地对其进行修整,这绝对是一个糟糕的UX。 我不知道Instagram的故事功能中的音乐是如何工作的,因为这与我想要实现的功能很接近。

解决方法

这不可能是您想要的方式。 mp3文件没有时间戳。如果您只是跳到mp3的中间(并寻找帧开始标记),然后开始解码,则您不知道该帧的时间是什么,因为帧的大小是可变的。唯一知道的方法是计算当前位置之前的帧数。这意味着您需要整个文件。