< 返回版块

Klad 发表于 2022-08-24 10:21

Tags:audio, rust

菜鸟求助:

比如有个url是 https://....../...../xxx.mp3 如何不把它全部下载到本地后再播放, 而是边下载边播放呢?

评论区

写评论
findre 2022-08-25 10:19

head 拿不到文件大小吗

--
👇
Jedsek: 谢谢, 这个分段下载我倒是会, 不过在纠结一些其他问题, 比如要是只是下载了一部分文件, mp3的帧协议有没有地方能够告诉总时间, 再比如要是网速不行的时候, 分段下载后播放器已经到了文件末尾, 但文件还在被追加新内容, 有没有什么办法检测当前文件是否正在被写入, 然后来决定播放器是停止播放还是等待新内容被追加后继续播放

当然还有另外一种简单的思路: 先下载完毕mp3文件, 然后直接根据mp3文件的总大小计算播放总时长, 一切都清爽了许多......

findre 2022-08-25 10:18

有一种读取流媒体的方式是发送Range请求。大概思路是get 请求头包含 Range bytes=0-{你的分片结束位置}。你可以先head请求媒体文件,获取到 headers 信息中的 Content-Length 后,实现 Range 分片请求

作者 Klad 2022-08-24 23:31

谢谢, 这个分段下载我倒是会, 不过在纠结一些其他问题, 比如要是只是下载了一部分文件, mp3的帧协议有没有地方能够告诉总时间, 再比如要是网速不行的时候, 分段下载后播放器已经到了文件末尾, 但文件还在被追加新内容, 有没有什么办法检测当前文件是否正在被写入, 然后来决定播放器是停止播放还是等待新内容被追加后继续播放

当然还有另外一种简单的思路: 先下载完毕mp3文件, 然后直接根据mp3文件的总大小计算播放总时长, 一切都清爽了许多......

tch1121 2022-08-24 14:46

读流 参考 https://gist.github.com/giuliano-oliveira/4d11d6b3bb003dba3a1b53f43d81b30d

关键在 while 循环那里

1 共 4 条评论, 1 页