kalcaddle / kodbox

kodbox is a file manager for web. It is a newly designed product based on kodexplorer. It is also a web code editor, which allows you to develop websites directly within the web browser.You can run kodbox either online or locally,on Linux, Windows or Mac based platforms
https://kodcloud.com
2.27k stars 385 forks source link

对象存储中的视频文件不会显示预览图 #122

Closed Pandaft closed 2 years ago

Pandaft commented 2 years ago

上传视频到 本地存储 后文件能正常显示视频预览图,但是复制到 cos 后,在 cos 中却不会显示(图片能正常显示预览图)。

有没有可能支持显示对象存储中的视频预览图?

kalcaddle commented 2 years ago

视频缩略图需要在本地调用命令行生成,对象存储等为了一个缩略图要将文件全部下载到本地服务器,代价太大。

杭州可道云网络有限公司

------------------ 原始邮件 ------------------ 发件人: Aixzk @.> 发送时间: 2022年8月19日 10:49 收件人: kalcaddle/kodbox @.> 抄送: Subscribed @.***> 主题: Re: [kalcaddle/kodbox] 对象存储中的视频文件不会显示预览图 (Issue #122)

上传视频到 本地存储 后文件能正常显示视频预览图,但是复制到 cos 后,在 cos 中却不会显示(图片能正常显示预览图)。

有没有可能支持显示对象存储中的视频预览图?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

Pandaft commented 2 years ago

上传了几百张图片到对象存储后,清除浏览器缓存然后刷新页面,切换为图标排列并将图标大小调为最小,此时整个页面能显示近 200 张图片,但是一开始是全部都没有缩略图,然后逐渐一个个显示出来。此时查看服务器监控,CPU 占满 100% ,内存占用也多了很多,猜测应该是在从对象存储下载图片到服务器本地然后生成缩略图,并返回给浏览器。

在显示出缩略图后刷新页面,加载速度会变得很快,通过浏览器检查网络请求看到是因为浏览器已经缓存缩略图了,也就是说如果清空浏览器缓存、更换浏览器、更换设备等后再次浏览,KodBox 还得再次重新去下载图片并生成缩略图。我这里是通过内网访问的对象存储,上下行流量不计费还好;但是对于其他人如果走的是外网,那每一次打开图片文件夹都可能需要耗费大量流量?

如果能将缩略图保存下来,下次请求时判断有没有存在的缩略图,如果有就直接返回存在的,这样会不会快些?(同时记录下 MD5 等信息,图片文件改动就重新生成缩略图)

kalcaddle commented 2 years ago

可以看代码,目前就是根据md5缓存的。再次请求是获取已生成的缩略图,而不会再重新生成

杭州可道云网络有限公司

------------------ 原始邮件 ------------------ 发件人: Aixzk @.> 发送时间: 2022年8月19日 13:03 收件人: kalcaddle/kodbox @.> 抄送: warlee @.>, Comment @.> 主题: Re: [kalcaddle/kodbox] 对象存储中的视频文件不会显示预览图 (Issue #122)

上传了几百张图片到对象存储后,清除浏览器缓存然后刷新页面,切换为图标排列并将图标大小调为最小,此时整个页面能显示近 200 张图片,但是一开始是全部都没有缩略图,然后逐渐一个个显示出来。此时查看服务器监控,CPU 占满 100% ,内存占用也多了很多,猜测应该是在从对象存储下载图片到服务器本地然后生成缩略图,并返回给浏览器。

在显示出缩略图后刷新页面,加载速度会变得很快,通过浏览器检查网络请求看到是因为浏览器已经缓存缩略图了,也就是说如果清空浏览器缓存、更换浏览器、更换设备等后再次浏览,KodBox 还得再次重新去下载图片并生成缩略图。我这里是通过内网访问的对象存储,上下行流量不计费还好;但是对于其他人如果走的是外网,那每一次打开图片文件夹都可能需要耗费大量流量?

如果能将缩略图保存下来,下次请求时判断有没有存在的缩略图,如果有就直接返回存在的,这样会不会快些?(同时记录下 MD5 等信息,图片文件改动就重新生成缩略图)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

kalcaddle commented 2 years ago

对象存储图片会完整生成缩略图并缓存,视频文件为控制代价,会截取600K内容尝试生成缩略图(大部分流式格式会正常生成缩略图),所以不一定能成功。

杭州可道云网络有限公司

------------------ 原始邮件 ------------------ 发件人: Aixzk @.> 发送时间: 2022年8月19日 13:03 收件人: kalcaddle/kodbox @.> 抄送: warlee @.>, Comment @.> 主题: Re: [kalcaddle/kodbox] 对象存储中的视频文件不会显示预览图 (Issue #122)

上传了几百张图片到对象存储后,清除浏览器缓存然后刷新页面,切换为图标排列并将图标大小调为最小,此时整个页面能显示近 200 张图片,但是一开始是全部都没有缩略图,然后逐渐一个个显示出来。此时查看服务器监控,CPU 占满 100% ,内存占用也多了很多,猜测应该是在从对象存储下载图片到服务器本地然后生成缩略图,并返回给浏览器。

在显示出缩略图后刷新页面,加载速度会变得很快,通过浏览器检查网络请求看到是因为浏览器已经缓存缩略图了,也就是说如果清空浏览器缓存、更换浏览器、更换设备等后再次浏览,KodBox 还得再次重新去下载图片并生成缩略图。我这里是通过内网访问的对象存储,上下行流量不计费还好;但是对于其他人如果走的是外网,那每一次打开图片文件夹都可能需要耗费大量流量?

如果能将缩略图保存下来,下次请求时判断有没有存在的缩略图,如果有就直接返回存在的,这样会不会快些?(同时记录下 MD5 等信息,图片文件改动就重新生成缩略图)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

kalcaddle commented 2 years ago

https://demo.kodcloud.com/#s/8bDQ045g

杭州可道云网络有限公司

------------------ 原始邮件 ------------------ 发件人: Aixzk @.> 发送时间: 2022年8月19日 13:03 收件人: kalcaddle/kodbox @.> 抄送: warlee @.>, Comment @.> 主题: Re: [kalcaddle/kodbox] 对象存储中的视频文件不会显示预览图 (Issue #122)

上传了几百张图片到对象存储后,清除浏览器缓存然后刷新页面,切换为图标排列并将图标大小调为最小,此时整个页面能显示近 200 张图片,但是一开始是全部都没有缩略图,然后逐渐一个个显示出来。此时查看服务器监控,CPU 占满 100% ,内存占用也多了很多,猜测应该是在从对象存储下载图片到服务器本地然后生成缩略图,并返回给浏览器。

在显示出缩略图后刷新页面,加载速度会变得很快,通过浏览器检查网络请求看到是因为浏览器已经缓存缩略图了,也就是说如果清空浏览器缓存、更换浏览器、更换设备等后再次浏览,KodBox 还得再次重新去下载图片并生成缩略图。我这里是通过内网访问的对象存储,上下行流量不计费还好;但是对于其他人如果走的是外网,那每一次打开图片文件夹都可能需要耗费大量流量?

如果能将缩略图保存下来,下次请求时判断有没有存在的缩略图,如果有就直接返回存在的,这样会不会快些?(同时记录下 MD5 等信息,图片文件改动就重新生成缩略图)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

Pandaft commented 2 years ago

我将这个文件中的 1024*600(600KB) 改为 1024*1024*10(10MB) ,打算即使耗费资源也要显示视频的缩略图。

https://github.com/kalcaddle/kodbox/blob/db02e47606636b319f07cbe1a85975e31abc7da2/plugins/fileThumb/app.php#L95

修改后,对象存储里的小视频文件也能显示缩略图了,但是奇怪的是只会显示时长为 15s 以内的视频的缩略图,而不是我预料中的 10MB 以内的视频的缩略图。

Pandaft commented 2 years ago

使用 cosfs 将 cos bucket 挂载到本地,再将默认存储的位置改为挂载的路径,基本可以显示所有视频的缩略图。 但是实测上传、播放、下载都会造成数倍文件大小流量的消耗(在线播放 33MB 视频消耗近 3GB 内网流量)。 COSFS 文档中写道 “随机或者追加写文件会导致整个文件的下载以及重新上传”,应该是这个原因。 现在凑合着显示 15s 内视频的缩略图,没有再折腾了,感谢开发 KodBox ,感谢回复。