如何解决如何从服务器下载mp3的一部分?
用例
我的用例大致等于将15秒的mp3文件添加到1分钟左右的视频中。所有转码合并部分都将由 FFmpeg-android 完成,因此现在不必担心。
流程如下
- 用户可以选择mp3的任何15秒(ExoPlayer流)(考虑192Kbps / 44.1KHz的3分钟=最多7MB)
- 然后下载仅15秒的内容并将其添加到视频的音频流中。 (使用FFmpeg)
- 使用获得的输出
尝试过的解决方案
-
Extracting fragment of audio from a url
RANGE_REQUEST -我使用提供的确切示例文件在Kotlin中复制了完全相同的算法/公式。但是输出不正确
(± 1.5 secs * c) where c is proportional to startTime
-
How to crop a mp3 from x to x+n using ffmpeg?
FFMPEG_SS -在使用远程URL作为输入的情况下,它可以完美运行,但是有两个缺点,
- 随着
startTime
的增加,下载字节的大小更接近mp3的实际大小。 -
ffmpeg-android
不支持网络请求模块(至少是我们遵循的方式)
- 随着
因此,以上两种解决方案都没有取得成功,目前,我正在下载整个文件并在本地对其进行修整,这绝对是一个糟糕的UX。 我不知道Instagram的故事功能中的音乐是如何工作的,因为这与我想要实现的功能很接近。
解决方法
这不可能是您想要的方式。 mp3文件没有时间戳。如果您只是跳到mp3的中间(并寻找帧开始标记),然后开始解码,则您不知道该帧的时间是什么,因为帧的大小是可变的。唯一知道的方法是计算当前位置之前的帧数。这意味着您需要整个文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。